test: classify prerequisite lanes and own Avalonia sessions
This commit is contained in:
parent
c1a905004a
commit
3684e7b5e7
113 changed files with 273 additions and 22 deletions
|
|
@ -38,6 +38,7 @@ namespace AcDream.Core.Tests.Audio;
|
|||
/// absent.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class EnvCellSoundEmitterInventoryTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace AcDream.Core.Tests.Audio;
|
|||
/// installed-dat test in this suite.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class UiSoundTableResolutionTests
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// not the master plan's loose "0031↔0170↔0171". The cottage cellar is the
|
||||
/// 0x014x range (#98 fixtures); the doorway room/vestibule is in 0x017x.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class CottageDoorwayCharacterizationTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// (e.g. dispose-during-read at teardown) or layers above the dat reader.
|
||||
/// </summary>
|
||||
[Trait("Category", "Conformance")]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class DatConcurrencyStressTests
|
||||
{
|
||||
private const int HammerThreads = 8;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// LandBlockInfo + EnvCells? Output-only — no assertions.
|
||||
/// </summary>
|
||||
[Trait("Purpose", "Diagnostic")]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class DungeonLandblockDatProbeTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ public class FindCellListConformanceTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void FindCellList_DeepInsideRoom0171_Returns0171()
|
||||
{
|
||||
var datDir = ConformanceDats.ResolveDatDir();
|
||||
|
|
@ -47,6 +48,7 @@ public class FindCellListConformanceTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void FindCellList_DeepInsideVestibule0170_Returns0170()
|
||||
{
|
||||
var datDir = ConformanceDats.ResolveDatDir();
|
||||
|
|
@ -70,6 +72,7 @@ public class FindCellListConformanceTests
|
|||
/// property P1 must preserve.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void FindCellList_InVestibule_SeededFromRoom_Returns0170()
|
||||
{
|
||||
var datDir = ConformanceDats.ResolveDatDir();
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// separately in the decomp). Output-only — no assertions; read the log.
|
||||
/// </summary>
|
||||
[Trait("Purpose", "Diagnostic")]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class HoltburgTorchFalloffProbeTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// find_visible_child_cell also cannot recover a cross-building claim and
|
||||
/// falls to seen_outside → adjust_to_outside, acclient :280037).
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue107SpawnDiagnosticTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// (pc:308788-308825). These tests pin the replacement semantics against the
|
||||
/// real dats.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue112MembershipTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// carry polygon references in properties the walk missed (portal-type
|
||||
/// nodes / leaf subclasses)? Pure diagnostic — no production code.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue113DoorVanishDiagnosticTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// interior cell's Position + world AABB + SeenOutside flag + stair signature
|
||||
/// (distinct horizontal-face heights), and containment of the two key points.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue113PhantomStairsDumpTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// static object (id + position) — the barrel candidate and the stair
|
||||
/// owners read directly off the output.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue119TowerDumpTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// ObjectMeshManager in MP1a)
|
||||
/// so the zeroing gate reads directly off the output.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue119UpNullGfxObjDumpTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// Violations of (b) on PLAIN OBJECT GfxObjs are allowed — retail's bypass
|
||||
/// draws solid batches for non-building/non-cell meshes, and so do we.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class StipplingSurfaceEquivalenceTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// (real pick-criterion divergence vs a test/sphere artifact).
|
||||
/// </summary>
|
||||
[Trait("Purpose", "Diagnostic")]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class ThresholdDivergenceDiagnosticTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ namespace AcDream.Core.Tests.Conformance;
|
|||
/// building-cell cache. The outdoor-involving segments (0031↔0170) need the landcell +
|
||||
/// building portal and are a follow-up.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class ThresholdPortalCrossingReplayTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ namespace AcDream.Core.Tests.Input;
|
|||
/// here. Reported, not silently resolved either way.</description></item>
|
||||
/// </list>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class RetailActionIdentityRoundTripTests
|
||||
{
|
||||
/// <summary>Actions with a citation-backed, pre-existing reason their DAT-union
|
||||
|
|
|
|||
|
|
@ -204,6 +204,7 @@ public sealed class RetailActionMapReaderTests
|
|||
/// <summary>Live-DAT conformance: pins the exact shape of the installed
|
||||
/// <c>client_portal.dat</c>/<c>client_local_English.dat</c> ActionMap +
|
||||
/// MasterInputMap objects. Skips cleanly when the dats are unavailable.</summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class RetailActionMapReader_LiveDatTests
|
||||
{
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// the flood-sphere list, not a subset or approximation of it.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Ap157SortingSphereFloodMeasurementTests
|
||||
{
|
||||
/// <summary>Arbitrary non-zero landblock id — only its prefix matters for
|
||||
|
|
|
|||
|
|
@ -189,6 +189,7 @@ public sealed class BoxIntersectsCellBspDifferentialTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void InstalledDat_RandomizedBoxSweepOverEnvCellContainmentBsps_HasZeroMismatch()
|
||||
{
|
||||
string? datDirectory = ConformanceDats.ResolveDatDir();
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// L20104 / L20224 / L20386 (door-exit) + L23035 / L81340 / L87958 (corner press);
|
||||
/// pivot = player + (0,0,1.5) per RetailChaseCamera.PivotHeight.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class CameraCornerSealReplayTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -263,6 +263,7 @@ public sealed class CellTransitFindTransitCellsBoxTests
|
|||
/// for the exact counts from this run.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void InstalledDat_RandomizedPartSweepNearRealPortals_PostFixMembershipIsSubsetOfPreFix()
|
||||
{
|
||||
string? datDirectory = ConformanceDats.ResolveDatDir();
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// semantics on real Holtburg dat geometry.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class CellTransitTests
|
||||
{
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// door's outdoor cell when production's doesn't.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void LiveCompare_DoorOffCenterWalkthrough_Tick13558()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -117,6 +118,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// registration itself is wrong.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void LiveCompare_DoorBlocksFromOutside_Tick22760()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -159,6 +161,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// hard-stopped with cn=(0,0,1). Always passes; read the console dump.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Diagnostic_Tick22760_DumpEngineInternals()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -211,6 +214,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Diagnostic_Tick13558_DumpEngineInternals()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -272,6 +276,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// portal traversal IS the bug.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void FindTransitCellsSphere_IndoorExitPortal_AddsOutsideForCapturedSpherePos()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -472,6 +477,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// </para>
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void InsideOut_Tick3254_WithCottageWalls_ShouldBlock()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -543,6 +549,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
/// (133.5, 17.10) to end up at X > 133.5 Y > 17.10, bug reproduced.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void CornerSlide_AlcoveEastToCottageNorth_ShouldBlock()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -770,6 +777,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Geometric_DoorSlabAtSphereHeight_OverlapsInZ()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -821,6 +829,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Directional_OutsideIn_SouthApproach_BlocksAtSlabSouthFace()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
@ -848,6 +857,7 @@ public class DoorBugTrajectoryReplayTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Directional_InsideOut_NorthApproach_BlocksAtSlabNorthFace()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// CI stays green. Local developer machines always have it.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class DoorCollisionApparatusTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// keeps CI green. Local developer runs always have it.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class DoorSetupGfxObjInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -412,6 +412,7 @@ public sealed class FlatBspQueryDifferentialTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void InstalledDat_LargeRandomizedSweep_HasZeroBitMismatch()
|
||||
{
|
||||
string? datDirectory = ConformanceDats.ResolveDatDir();
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ using Xunit.Abstractions;
|
|||
|
||||
namespace AcDream.Core.Tests.Physics;
|
||||
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class FlatCollisionInstalledDatTests
|
||||
{
|
||||
private readonly ITestOutputHelper _output;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// The packet-driven remote mover must use these values, not a velocity guessed
|
||||
/// from the interpreted command.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class HumanoidMotionTableRootMotionTests
|
||||
{
|
||||
private const uint HumanoidMotionTable = 0x09000001u;
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// eye projects into the aperture band at y 9.8–17) paints the doorway.
|
||||
/// These tests stay as the characterization pin for the healthy layer.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue108CellarAscentViewerReplayTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// (normal ≈ ±X at the portal's local X) — i.e., are portal-sealing polys in
|
||||
/// our collision set where retail filters them?
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue137CorridorSeamInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// running must keep advancing (no absorbing wedge).
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue137CorridorSeamReplayTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// (a separate shadow-object collision path). Dat-data-dependent; SKIPs cleanly
|
||||
/// without ACDREAM_DAT_DIR / the real dats.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue147ArwicBuildingsDumpTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ public class Issue175HubDoorPoseInspectionTests
|
|||
private const uint HubDoorSetupId = 0x02000C9Du;
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void HubDoorSetup_PlacementVsMotionPose_DatInspection()
|
||||
{
|
||||
var datDir = Env.GetEnvironmentVariable("ACDREAM_DAT_DIR")
|
||||
|
|
@ -161,6 +162,7 @@ public class Issue175HubDoorPoseInspectionTests
|
|||
/// NonCombat/Ready) and asserts the derivation actually resolves a pose.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void MotionTablePose_DefaultState_ResolvesOnRealTable()
|
||||
{
|
||||
var datDir = Env.GetEnvironmentVariable("ACDREAM_DAT_DIR")
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// stair pop). This replay measures OUR resolver's flip point across the
|
||||
/// x=85 seam in a controlled run.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue176177SeamTransitLagTests
|
||||
{
|
||||
private const uint SeamCellWest = 0x8A02016Eu; // x 75..85
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// 3. the clipped eye is the CONSTANT surface-contact point (pre-fix it
|
||||
/// tracked the target one step back: eyeBack = s − ~0.27).
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue180CorridorSweepHysteresisReplayTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// bare connector? And does it carry collision geometry (so the camera sweep would
|
||||
/// hard-stop) or none (so the boom coasts to a degenerate spot)? Skips without the dat.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue186ConnectorCellGeometryInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ public class Issue188FadingDoorMotionTableInspectionTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public void Dump_PedestalWeakSpot_MotionTable_HookContents()
|
||||
{
|
||||
var datDir = DatDir();
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
///
|
||||
/// Dat-data dependent; SKIPs cleanly without ACDREAM_DAT_DIR.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class Issue337NeftetRockGeometryInspectionTests
|
||||
{
|
||||
private const uint Landblock = 0x8766_0000u;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// present (CI has no local AC install).
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class MotionCommandCatalogDatTests
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// when the installed DATs are absent (CI), following the
|
||||
/// DoorSetupGfxObjInspectionTests pattern.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public sealed class RestrictionObjPrevalenceInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _output;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ namespace AcDream.Core.Tests.Rendering;
|
|||
/// CellPortal.PolygonId indexes CellStruct.Polygons (VISUAL), never
|
||||
/// PhysicsPolygons — same ids in both tables are unrelated polygons.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue176177DungeonSeamInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ namespace AcDream.Core.Tests.Rendering;
|
|||
/// fountain room and its immediate neighbors observed this session, so the answer
|
||||
/// is read from the dat directly instead of inferred from aggregate counts.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class Issue93TownNetworkFountainRoomLightInspectionTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ namespace AcDream.Core.Tests.Terrain;
|
|||
/// the directory doesn't exist, the test logs a SKIP and passes — keeps CI
|
||||
/// (no dat data) green while still firing locally on every developer run.
|
||||
/// </summary>
|
||||
[Trait("Lane", "InstalledDat")]
|
||||
public class TerrainModernConformanceTests
|
||||
{
|
||||
private readonly ITestOutputHelper _out;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue