test: replace campaign labels with behavior names
This commit is contained in:
parent
e6fab96f12
commit
9c6b143a03
30 changed files with 135 additions and 97 deletions
|
|
@ -1,6 +1,6 @@
|
|||
namespace AcDream.App.Tests.Diagnostics;
|
||||
|
||||
public sealed class ConnectedR6SoakContractTests
|
||||
public sealed class ConnectedWorldSoakRouteContractTests
|
||||
{
|
||||
private static readonly string[] ExpectedCheckpointNames =
|
||||
[
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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(",
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 =
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -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;
|
||||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -30,7 +30,7 @@ namespace AcDream.Core.Tests.Physics;
|
|||
/// </item>
|
||||
/// </list>
|
||||
/// </summary>
|
||||
public class Ap10WaterSemanticsTests
|
||||
public class WaterSemanticsTests
|
||||
{
|
||||
// ── §1: TerrainSurface.SampleWaterDepth golden values ──────────────────
|
||||
|
||||
|
|
@ -6,7 +6,7 @@ namespace AcDream.Headless.Tests;
|
|||
public sealed class HeadlessProcessResourceEnvelopeTests
|
||||
{
|
||||
[Fact]
|
||||
public void K4ProfileScalesOnlyPerSessionDimensions()
|
||||
public void MultiSessionProfileScalesOnlyPerSessionDimensions()
|
||||
{
|
||||
HeadlessProcessResourceCeilings ceilings =
|
||||
HeadlessProcessResourceCeilings.K4Linux;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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 =
|
||||
[
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace AcDream.Runtime.Tests;
|
|||
public sealed class RuntimeSimulationFixtureHostTests
|
||||
{
|
||||
[Fact]
|
||||
public void RuntimeOnlyHostDrivesCompleteJ5SimulationWithoutPresentation()
|
||||
public void RuntimeOnlyHostDrivesCompleteGameplaySimulationWithoutPresentation()
|
||||
{
|
||||
var host = new RuntimeOnlySimulationFixtureHost();
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue