using System.Text.RegularExpressions; namespace AcDream.App.Tests.Physics; /// /// C3c-F1 (2026-08-02): source pins for the App-side halves of the /// movement-owner application seams whose production graphs have no /// focused harness (the inbound network-update controller's dependency /// set is composition-only). The Runtime lifecycle matrices carry the /// behavioral coverage; these pins keep the App wiring routed through the /// owner's typed entries instead of the throwing direct mutations that /// crashed the connected lifecycle gate twice /// (logs/connected-world-gate-20260802-122749 — SetCharacterSkills; /// logs/connected-world-gate-20260802-125907 — ApplyPhysicsState). /// public sealed class C3cF1ProductionWiringTests { [Fact] public void LocalPlayerInboundSetState_RoutesThroughTheTypedOwnerEntry() { string source = ReadSource( "Physics", "LiveEntityNetworkUpdateController.cs"); Assert.Single( Regex.Matches(source, @"ApplyServerPhysicsState\(") .Cast()); Assert.DoesNotContain( ".ApplyPhysicsState(", source, StringComparison.Ordinal); } private static string ReadSource(params string[] relativePath) { DirectoryInfo? directory = new(AppContext.BaseDirectory); while (directory is not null) { if (File.Exists(Path.Combine(directory.FullName, "AcDream.slnx"))) { return File.ReadAllText(Path.Combine( directory.FullName, "src", "AcDream.App", Path.Combine(relativePath))); } directory = directory.Parent; } throw new DirectoryNotFoundException("Could not find AcDream.slnx."); } }