namespace AcDream.App.Tests.Rendering.Walk; /// /// S3 chunk 1 (§11.2 B2/B3): proves the parts/alpha-depth readers actually /// parse the five committed OH captures — "imported and parsed", not just /// compiled. No content is pinned (§11.2 B3: "pinned only where a later /// chunk/S4 names a consumer — no speculative assertions"); this is the /// same non-empty/complete-frame shape /// WalkOracleTraceTests.Fixture_parses_with_complete_frames already /// applies to the walk logs. /// public sealed class WalkOraclePartsTraceTests { private const string OhRoot = "docs/research/2026-09-01-overhaul/oh-capture"; public static readonly TheoryData AllPoses = new() { "holtburg-doorway-still", "terrace-edge", "cathedral-arrival", "foundry-deep", "cathedral-leak", }; [Theory] [MemberData(nameof(AllPoses))] public void Parts_log_parses_with_nonempty_draws(string pose) { IReadOnlyList frames = WalkOraclePartsTrace.Load(OhRoot, pose); Assert.NotEmpty(frames); Assert.Equal(1, frames[0].Number); Assert.Equal(frames.Count, frames[^1].Number); Assert.Contains(frames, f => f.PartDraws.Count > 0); Assert.Contains(frames, f => f.MeshDraws.Count > 0); } /// S3 chunk 1 fix round 1 (G4): besides Flushes (FL) and /// DrawCellsSamples (PC), also assert MeshAdds (AM) and PortalPolyDraws /// (PM) are non-empty — §6b lists real counts for every committed /// capture (e.g. terrace-edge: AM=6880, PM=10), so a regex that /// silently stopped matching either kind must fail this test, not pass /// it silently. [Theory] [MemberData(nameof(AllPoses))] public void Alpha_depth_log_parses_with_nonempty_samples(string pose) { IReadOnlyList frames = WalkOracleAlphaDepthTrace.Load(OhRoot, pose); Assert.NotEmpty(frames); Assert.Equal(1, frames[0].Number); Assert.Equal(frames.Count, frames[^1].Number); Assert.Contains(frames, f => f.MeshAdds.Count > 0); Assert.Contains(frames, f => f.Flushes.Count > 0); Assert.Contains(frames, f => f.PortalPolyDraws.Count > 0); Assert.Contains(frames, f => f.DrawCellsSamples.Count > 0); } }