test: replace campaign labels with behavior names

This commit is contained in:
Erik 2026-08-18 12:25:00 +02:00
parent e6fab96f12
commit 9c6b143a03
30 changed files with 135 additions and 97 deletions

View file

@ -1,6 +1,6 @@
namespace AcDream.App.Tests.Diagnostics;
public sealed class ConnectedR6SoakContractTests
public sealed class ConnectedWorldSoakRouteContractTests
{
private static readonly string[] ExpectedCheckpointNames =
[

View file

@ -310,7 +310,7 @@ public sealed class LiveEntityNetworkOnPositionCollapseMatrixTests
[Theory]
[InlineData(PlayerGuid)]
[InlineData(CreatureGuid)]
public void WireAirborneNullClassified_BothGuids_WritesOnlyAP135Bookkeeping(
public void WireAirborneNullClassified_BothGuids_WritesOnlyPlacementBookkeeping(
uint guid)
{
using var fixture = new Fixture(guid, nullClassification: true);
@ -334,8 +334,7 @@ public sealed class LiveEntityNetworkOnPositionCollapseMatrixTests
// lazily created only on a genuine arm).
Assert.Null(host.PositionManager.Constraint);
// Positive half (round-2 B1's lesson): AP-135's two writes DID
// happen.
// Positive half: the placement bookkeeping writes did happen.
Assert.Equal(SourceCell, fixture.Remote.CellId);
Assert.Equal(wirePos, fixture.Remote.LastServerPos);
Assert.NotEqual(0d, fixture.Remote.LastServerPosTime);
@ -346,7 +345,7 @@ public sealed class LiveEntityNetworkOnPositionCollapseMatrixTests
[Theory]
[InlineData(PlayerGuid)]
[InlineData(CreatureGuid)]
public void AirborneNoOperation_BothGuids_WritesOnlyAP135BookkeepingNoArm(
public void AirborneNoOperation_BothGuids_WritesOnlyPlacementBookkeepingNoArm(
uint guid)
{
using var fixture = new Fixture(guid);
@ -933,7 +932,7 @@ public sealed class LiveEntityNetworkOnPositionCollapseMatrixTests
// IsConstrained rather than nulling the manager back out (it was
// lazily CREATED by the ConstrainTo test-setup call above, and
// creation is one-way) — this is the exact discriminator
// WireAirborneNullClassified_BothGuids_WritesOnlyAP135Bookkeeping's
// WireAirborneNullClassified_BothGuids_WritesOnlyPlacementBookkeeping's
// own comment names ("Constraint is lazily created only on a
// genuine arm").
Assert.NotNull(host.PositionManager.Constraint);

View file

@ -8,7 +8,7 @@ namespace AcDream.App.Tests.Rendering;
/// of an exception that escaped <c>Run()</c>'s Silk.NET frame loop and was
/// about to crash the process via the CLR's unhandled-exception path.
/// <c>GameWindow</c> cannot be constructed without a live GPU/window (see
/// the established pattern in <c>GameWindowSlice8BoundaryTests</c>), so
/// the established pattern in <c>GameWindowHostBoundaryTests</c>), so
/// this pins the fix as a source-shape test exactly like that file does
/// for the surrounding shutdown machinery.
/// </summary>

View file

@ -1,12 +1,11 @@
namespace AcDream.App.Tests.Rendering;
/// <summary>
/// Temporary source-shape freeze for the Slice 8 cutover. Each later checkpoint
/// replaces the corresponding assertion with functional tests on the extracted
/// owner; this file prevents a mechanical move from silently reordering host
/// behavior before that owner exists.
/// Source-level architecture guards for the narrow graphical-host composition
/// boundary. R3 tracks these literal source-shape checks for staged replacement
/// with semantic owner and lifecycle contracts.
/// </summary>
public sealed class GameWindowSlice8BoundaryTests
public sealed class GameWindowHostBoundaryTests
{
[Fact]
public void Run_PreservesNativeAttributeAndCallbackOrder()
@ -18,9 +17,8 @@ public sealed class GameWindowSlice8BoundaryTests
"RuntimeSettingsSnapshot startup = _runtimeSettings.Startup",
"_displayFramePacing.InitializeStartup(startup.Display.VSync)",
"VSync = startupPacing.UseVSync",
// Campaign V slice V11: the raw-GL "Samples = ..." window option
// is gone — Vulkan takes MSAA as an RHI attachment property, not
// a window attribute. _startupQuality carries it forward instead.
// Vulkan takes MSAA as an RHI attachment property rather than a
// window attribute. _startupQuality carries it forward instead.
"_startupQuality = startup.Quality;",
"Window.Create(options)",
"_displayFramePacing.BindSurface(",

View file

@ -83,7 +83,7 @@ public sealed class LiveEntityCreateSupersessionRecoveryTests
// covered.
// C3c-R1 F3: honest MODEL of the executor drain's advance
// (ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests); a
// source-pinned by CreateAuthorityDriftModelSourcePinTests); a
// nested production OnCreate can no longer reach it —
// post-residence registration is description-only
// (RuntimeEntityObjectLifetime :660-665,

View file

@ -463,7 +463,7 @@ public sealed class CurrentGameRuntimeAdapterTests
}
[Fact]
public void AdapterBorrowsExactJ4ViewsAndCheckpointState()
public void AdapterBorrowsExactGameplayViewsAndCheckpointState()
{
using var harness = new Harness();
harness.Character.Options.Replace(0x04000000u, 0x00948700u);
@ -502,7 +502,7 @@ public sealed class CurrentGameRuntimeAdapterTests
}
[Fact]
public void J4StateCommandsAreGenerationGatedAndReachCurrentTransport()
public void GameplayStateCommandsAreGenerationGatedAndReachCurrentTransport()
{
using var harness = new Harness();
var trace = new RuntimeTraceRecorder();
@ -668,7 +668,7 @@ public sealed class CurrentGameRuntimeAdapterTests
}
[Fact]
public void GraphicalAndNoWindowJ4CommandsProduceIdenticalCanonicalState()
public void GraphicalAndNoWindowGameplayCommandsProduceIdenticalCanonicalState()
{
using var directEntities = new RuntimeEntityObjectLifetime();
using var directInventory =

View file

@ -276,9 +276,9 @@ public sealed class ChatOptionsPageControllerTests
}
[Fact]
public void Bind_FilterBlocks_ResolveTheAP195LedSprites()
public void Bind_FilterBlocks_ResolveTheAuthoredLedSprites()
{
// AP-195 end-to-end: the regenerated fixture now carries dat properties
// The regenerated fixture carries DAT properties
// 0x10000082/0x10000083 on template consumer 0x10000520
// (0x06004D17/0x06004D19), and DatWidgetFactory threads them into the
// constructed UiCheckboxBitfield64 — every one of the five blocks shares

View file

@ -3,8 +3,7 @@ using System.Text.RegularExpressions;
namespace AcDream.App.Tests.World;
/// <summary>
/// C3c-R1 F3 (coordinator resolution, 2026-08-02): the create-authority
/// drift probes in the expectation-item 6/8 tests
/// The create-authority drift probes in the expectation-item 6/8 tests
/// (LiveEntityHydrationControllerTests + LiveEntityCreateSupersessionRecoveryTests)
/// hand-call <c>record.Canonical.AdvanceCreateAuthority()</c> as an HONEST
/// MODEL of the executor drain's advance — the SOLE remaining production
@ -19,7 +18,7 @@ namespace AcDream.App.Tests.World;
/// STALE if the production site ever moves or loses the advance — the
/// item 6/8 probes must be re-derived from wherever it goes.
/// </summary>
public sealed class C3cR1F3DriftModelSourcePinTests
public sealed class CreateAuthorityDriftModelSourcePinTests
{
[Fact]
public void HandCalledDriftProbe_StillModelsTheExecutorDrainAdvance()

View file

@ -1371,7 +1371,7 @@ public sealed class LiveEntityHydrationControllerTests
// honest MODEL of the executor drain's advance
// (RuntimeInitialCreateContinuationExecutor
// .ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests). A nested
// source-pinned by CreateAuthorityDriftModelSourcePinTests). A nested
// production OnCreate can no longer reach it here:
// post-residence ExistingGeneration registration is
// description-only (RuntimeEntityObjectLifetime gates the
@ -1509,7 +1509,7 @@ public sealed class LiveEntityHydrationControllerTests
// honest MODEL of the executor drain's advance
// (RuntimeInitialCreateContinuationExecutor
// .ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests). A nested
// source-pinned by CreateAuthorityDriftModelSourcePinTests). A nested
// production OnCreate can no longer reach it here:
// post-residence ExistingGeneration registration is
// description-only (RuntimeEntityObjectLifetime gates the
@ -1864,7 +1864,7 @@ public sealed class LiveEntityHydrationControllerTests
// revalidation guard stays covered.
// C3c-R1 F3: honest MODEL of the executor drain's advance
// (ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests); a
// source-pinned by CreateAuthorityDriftModelSourcePinTests); a
// nested production OnCreate can no longer reach it —
// post-residence registration is description-only
// (RuntimeEntityObjectLifetime :660-665,
@ -1983,7 +1983,7 @@ public sealed class LiveEntityHydrationControllerTests
// WeenieDescription stage; model that advance directly.
// C3c-R1 F3: honest MODEL of the executor drain's advance
// (ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests); a
// source-pinned by CreateAuthorityDriftModelSourcePinTests); a
// nested production OnCreate can no longer reach it —
// post-residence registration is description-only
// (RuntimeEntityObjectLifetime :660-665,
@ -2019,7 +2019,7 @@ public sealed class LiveEntityHydrationControllerTests
// (AdvanceCreateAuthority), not at registration; model it directly.
// C3c-R1 F3: honest MODEL of the executor drain's advance
// (ApplyWeenieDescriptionAction — the sole production site,
// source-pinned by C3cR1F3DriftModelSourcePinTests); a nested
// source-pinned by CreateAuthorityDriftModelSourcePinTests); a nested
// production OnCreate can no longer reach it — post-residence
// registration is description-only (RuntimeEntityObjectLifetime
// :660-665, !beginInitialResidence gate) and ConsumeExecuted

View file

@ -24,7 +24,7 @@ namespace AcDream.Content.Tests;
/// already counted fall into exactly that trap.
/// </summary>
[Trait("Lane", "InstalledDat")]
public sealed class Ap155StaticSpherePopulationMeasurementTests
public sealed class StaticSpherePopulationMeasurementTests
{
[Fact]
public void InstalledSetups_SphereOnlyStaticPopulation_Measured()

View file

@ -41,7 +41,7 @@ namespace AcDream.Core.Tests.Physics;
/// suite's "resolved" scenarios are what prevents that regression.
/// </para>
/// </summary>
public sealed class Ap71EntryRestrictionGateTests
public sealed class EntryRestrictionGateTests
{
private const uint RestrictionObjGuid = 0x80001234u;
private const uint MoverGuid = 0x50000001u;

View file

@ -12,10 +12,10 @@ namespace AcDream.Core.Tests.Physics.Motion;
/// </summary>
public sealed class ConstraintManagerTests
{
private static (R5Host host, ConstraintManager cm) Setup()
private static (PhysicsObjHostStub host, ConstraintManager cm) Setup()
{
var world = new Dictionary<uint, R5Host>();
var host = new R5Host(10u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var host = new PhysicsObjHostStub(10u, world);
return (host, new ConstraintManager(host));
}

View file

@ -20,11 +20,11 @@ namespace AcDream.Core.Tests.Physics.Motion;
/// <c>receive_target_update</c> seams forward to the owned
/// <see cref="TargetManager"/> exactly as retail's <c>CPhysicsObj</c> does.</para>
/// </summary>
internal sealed class R5Host : IPhysicsObjHost
internal sealed class PhysicsObjHostStub : IPhysicsObjHost
{
public readonly Dictionary<uint, R5Host> World;
public readonly Dictionary<uint, PhysicsObjHostStub> World;
public R5Host(uint id, Dictionary<uint, R5Host> world)
public PhysicsObjHostStub(uint id, Dictionary<uint, PhysicsObjHostStub> world)
{
Id = id;
World = world;

View file

@ -14,11 +14,11 @@ namespace AcDream.Core.Tests.Physics.Motion;
/// </summary>
public sealed class PositionManagerFacadeTests
{
private static (R5Host self, R5Host target, PositionManager pm) Setup()
private static (PhysicsObjHostStub self, PhysicsObjHostStub target, PositionManager pm) Setup()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world);
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world);
var target = new PhysicsObjHostStub(20u, world);
return (self, target, new PositionManager(self));
}

View file

@ -13,18 +13,18 @@ namespace AcDream.Core.Tests.Physics.Motion;
/// </summary>
public sealed class StickyManagerTests
{
private static (R5Host self, R5Host target, StickyManager sticky) Setup(
private static (PhysicsObjHostStub self, PhysicsObjHostStub target, StickyManager sticky) Setup(
uint targetId = 20u, float targetRadius = 0.5f)
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world);
var target = new R5Host(targetId, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world);
var target = new PhysicsObjHostStub(targetId, world);
var sticky = new StickyManager(self);
return (self, target, sticky);
}
private static StickyManager StuckAndInitialized(
R5Host self, R5Host target, Vector3 targetOrigin, float targetRadius = 0.5f)
PhysicsObjHostStub self, PhysicsObjHostStub target, Vector3 targetOrigin, float targetRadius = 0.5f)
{
var sticky = new StickyManager(self);
sticky.StickTo(target.Id, targetRadius, targetHeight: 1.0f);
@ -130,10 +130,10 @@ public sealed class StickyManagerTests
[Fact]
public void ReStick_TearsDownPreviousBeforeSettingNew()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world);
var a = new R5Host(20u, world);
var b = new R5Host(21u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world);
var a = new PhysicsObjHostStub(20u, world);
var b = new PhysicsObjHostStub(21u, world);
var sticky = new StickyManager(self);
sticky.StickTo(a.Id, 0.5f, 1.0f);
@ -159,9 +159,9 @@ public sealed class StickyManagerTests
[Fact]
public void AdjustOffset_SteersTowardTarget_ClampedToStep()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new PhysicsObjHostStub(20u, world);
var sticky = StuckAndInitialized(self, target, new Vector3(5f, 0f, 0f));
var frame = new MotionDeltaFrame();
@ -178,9 +178,9 @@ public sealed class StickyManagerTests
[Fact]
public void AdjustOffset_TooClose_BacksOff_SignedDistance()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new PhysicsObjHostStub(20u, world);
// centerDist 0.9, cyl = 0.9-0.5-0.5 = -0.1, minus 0.3 → dist = -0.4.
var sticky = StuckAndInitialized(self, target, new Vector3(0.9f, 0f, 0f));
@ -194,9 +194,9 @@ public sealed class StickyManagerTests
[Fact]
public void AdjustOffset_DeepOverlap_BacksOff_RateLimited()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new PhysicsObjHostStub(20u, world);
// centerDist 0.1 → cyl = 0.1-0.5-0.5 = -0.9, minus 0.3 → dist = -1.2
// (overlap DEEPER than one tick's step).
var sticky = StuckAndInitialized(self, target, new Vector3(0.1f, 0f, 0f));
@ -214,9 +214,9 @@ public sealed class StickyManagerTests
[Fact]
public void AdjustOffset_UsesCachedPosition_WhenTargetUnresolvable()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world) { Radius = 0.5f, MinterpMaxSpeed = 1.0f };
var target = new PhysicsObjHostStub(20u, world);
var sticky = new StickyManager(self);
target.Resolvable = false;
sticky.StickTo(target.Id, 0.5f, 1.0f);
@ -233,9 +233,9 @@ public sealed class StickyManagerTests
[Fact]
public void AdjustOffset_NoMinterp_UsesFallbackSpeed()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world) { Radius = 0.5f, MinterpMaxSpeed = null };
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world) { Radius = 0.5f, MinterpMaxSpeed = null };
var target = new PhysicsObjHostStub(20u, world);
var sticky = StuckAndInitialized(self, target, new Vector3(50f, 0f, 0f));
var frame = new MotionDeltaFrame();

View file

@ -14,11 +14,11 @@ namespace AcDream.Core.Tests.Physics.Motion;
/// </summary>
public sealed class TargetManagerTests
{
private static (R5Host self, R5Host target, Dictionary<uint, R5Host> world) TwoHosts()
private static (PhysicsObjHostStub self, PhysicsObjHostStub target, Dictionary<uint, PhysicsObjHostStub> world) TwoHosts()
{
var world = new Dictionary<uint, R5Host>();
var self = new R5Host(10u, world);
var target = new R5Host(20u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var self = new PhysicsObjHostStub(10u, world);
var target = new PhysicsObjHostStub(20u, world);
return (self, target, world);
}
@ -122,7 +122,7 @@ public sealed class TargetManagerTests
var (self, originalTarget, world) = TwoHosts();
self.TargetManager.SetTarget(0, originalTarget.Id, 1.0f, 0.0);
self.HandleUpdateTargetCalls.Clear();
var replacement = new R5Host(originalTarget.Id, world);
var replacement = new PhysicsObjHostStub(originalTarget.Id, world);
var p = new Position(1u, new Vector3(99f, 0f, 0f), Quaternion.Identity);
self.ReceiveTargetUpdate(
@ -143,7 +143,7 @@ public sealed class TargetManagerTests
self.SetOrigin(Vector3.Zero);
originalTarget.SetOrigin(new Vector3(5f, 0f, 0f));
self.PositionManager.StickTo(originalTarget.Id, 0.5f, 1f);
var replacement = new R5Host(originalTarget.Id, world);
var replacement = new PhysicsObjHostStub(originalTarget.Id, world);
replacement.SetOrigin(new Vector3(10f, 0f, 0f));
originalTarget.SetOrigin(new Vector3(-5f, 0f, 0f));
var delta = new MotionDeltaFrame();
@ -260,7 +260,7 @@ public sealed class TargetManagerTests
watcher.TargetManager.SetTarget(0, target.Id, 1.0f, 0.0);
watcher.HandleUpdateTargetCalls.Clear();
watcher.Resolvable = false;
var replacement = new R5Host(watcher.Id, world);
var replacement = new PhysicsObjHostStub(watcher.Id, world);
target.TargetManager.NotifyVoyeurOfEvent(TargetStatus.Teleported);
@ -273,10 +273,10 @@ public sealed class TargetManagerTests
[Fact]
public void NotifyVoyeurOfEvent_BroadcastsToAll_NoDistanceGate()
{
var world = new Dictionary<uint, R5Host>();
var target = new R5Host(20u, world);
var w1 = new R5Host(10u, world);
var w2 = new R5Host(11u, world);
var world = new Dictionary<uint, PhysicsObjHostStub>();
var target = new PhysicsObjHostStub(20u, world);
var w1 = new PhysicsObjHostStub(10u, world);
var w2 = new PhysicsObjHostStub(11u, world);
// both watch the target (each gets a target_info via SetTarget)
w1.TargetManager.SetTarget(0, target.Id, 1.0f, 0.0);
w2.TargetManager.SetTarget(0, target.Id, 1.0f, 0.0);

View file

@ -463,7 +463,7 @@ public sealed class MotionInterpreterDoMotionFamilyTests
}
[Fact]
public void StopCompletely_DoesNotTouchSidestepOrTurnSpeeds_J9()
public void StopCompletely_DoesNotTouchSidestepOrTurnSpeeds()
{
// A9/J9: retail touches ONLY forward cmd/speed + sidestep/turn
// COMMANDS — it does NOT write sidestep_speed or turn_speed. The

View file

@ -705,8 +705,8 @@ public sealed class MotionInterpreterJumpFamilyTests
[Fact]
public void JumpIsAllowed_LeashArmedAndOverstrained_ReturnsGeneralMovementFailure()
{
var world = new System.Collections.Generic.Dictionary<uint, R5Host>();
var host = new R5Host(10u, world);
var world = new System.Collections.Generic.Dictionary<uint, PhysicsObjHostStub>();
var host = new PhysicsObjHostStub(10u, world);
const uint outdoorCell = 0x12340007u; // low16 < 0x0100 -> outdoor
host.Position = new Position(outdoorCell, Vector3.Zero, Quaternion.Identity);

View file

@ -60,7 +60,7 @@ namespace AcDream.Core.Tests.Physics;
/// </para>
/// </summary>
[Trait("Lane", "InstalledDat")]
public sealed class Ap157SortingSphereFloodMeasurementTests
public sealed class SortingSphereFloodMeasurementTests
{
/// <summary>Arbitrary non-zero landblock id — only its prefix matters for
/// seeding the outdoor flood; the entity is placed at the landblock's own

View file

@ -30,7 +30,7 @@ namespace AcDream.Core.Tests.Physics;
/// </item>
/// </list>
/// </summary>
public class Ap10WaterSemanticsTests
public class WaterSemanticsTests
{
// ── §1: TerrainSurface.SampleWaterDepth golden values ──────────────────

View file

@ -6,7 +6,7 @@ namespace AcDream.Headless.Tests;
public sealed class HeadlessProcessResourceEnvelopeTests
{
[Fact]
public void K4ProfileScalesOnlyPerSessionDimensions()
public void MultiSessionProfileScalesOnlyPerSessionDimensions()
{
HeadlessProcessResourceCeilings ceilings =
HeadlessProcessResourceCeilings.K4Linux;

View file

@ -380,7 +380,7 @@ public sealed class LauncherOrchestratorTests : IDisposable
}
[Fact]
public async Task LinuxRejectsBothGraphicalModesBeforeCompositionOrSpawnWithSliceLExplanation()
public async Task LinuxRejectsBothGraphicalModesBeforeCompositionOrSpawnWithUnsupportedPlatformExplanation()
{
var config = new RecordingConfigService();
var supervisors = new FakeSupervisorFactory();

View file

@ -143,7 +143,7 @@ public sealed class GameRuntimeContractTests
}
[Fact]
public void TraceRecorderIncludesJ4GameplayStateInCheckpoint()
public void TraceRecorderIncludesGameplayStateInCheckpoint()
{
var recorder = new RuntimeTraceRecorder();
var stamp = new RuntimeEventStamp(new(3), 1, 8);
@ -222,7 +222,7 @@ public sealed class GameRuntimeContractTests
}
[Fact]
public void J4GameplayOwnersHaveNoStaticMutableSessionState()
public void GameplayOwnersHaveNoStaticMutableSessionState()
{
Type[] owners =
[

View file

@ -10,7 +10,7 @@ namespace AcDream.Runtime.Tests.Gameplay;
public sealed class RuntimeGameplayOwnershipTests
{
[Fact]
public void J5LedgerConvergesEntityPhysicsAndGameplayAsOneLifetime()
public void GameplayOwnershipLedgerConvergesEntityPhysicsAndGameplayAsOneLifetime()
{
var entities = new RuntimeEntityObjectLifetime();
var inventory = new RuntimeInventoryState(entities);

View file

@ -14,7 +14,7 @@ namespace AcDream.Runtime.Tests;
public sealed class RuntimeSimulationFixtureHostTests
{
[Fact]
public void RuntimeOnlyHostDrivesCompleteJ5SimulationWithoutPresentation()
public void RuntimeOnlyHostDrivesCompleteGameplaySimulationWithoutPresentation()
{
var host = new RuntimeOnlySimulationFixtureHost();

View file

@ -101,7 +101,7 @@ public class KeyBindingsTests
[Fact]
public void AcdreamCurrentDefaults_binds_shift_as_hold_for_run()
{
// K.1b: when ShiftLeft is held the OS keyboard delivers
// When ShiftLeft is held the OS keyboard delivers
// CurrentModifiers=Shift, so the chord must be (ShiftLeft, Shift).
// Lookup with the matching modifier mask succeeds.
var b = KeyBindings.AcdreamCurrentDefaults();
@ -111,11 +111,11 @@ public class KeyBindingsTests
}
[Fact]
public void RetailDefaults_diverges_from_AcdreamCurrentDefaults_in_K1c()
public void RetailDefaults_differs_from_legacy_AcdreamCurrentDefaults()
{
// K.1c flips RetailDefaults() to the retail-faithful preset.
// The acdream-current map remains accessible (for tests pinning
// the older WASD-only behavior), but RetailDefaults is now the
// RetailDefaults is the retail-faithful preset. The acdream-current
// map remains accessible for tests pinning the older WASD-only
// behavior, but RetailDefaults is now the
// canonical startup source. The two MUST differ — at minimum
// RetailDefaults binds X to Backup (retail) where AcdreamCurrent
// bound X to StrafeRight, and RetailDefaults binds Tab to