acdream/tests
Erik e5bc5c6a3f fix(vt): B typed MetaAction.EmbeddedRoute replaces the binary nav blob
Item B (slice-1 fix round). A LoadEmbeddedNavigationRoute action carried
a synthesized "uTank2 NAV 1.2" TEXT blob in MetaAction.Text that both
MetaEngine and the runtime consumer (MossTankPanel) had to re-parse on
every load — an unnecessary re-parse of already-typed data, and the
reason proof (3)'s AssertActionsEqual skipped comparing embedded routes
entirely (the blob's exact byte shape wasn't a meaningful comparison
target).

- MetaAction: new EmbeddedRoute (NavigationSettings?) property replaces
  the blob. Null only for a genuinely unresolved/never-defined Nav tag.
- MetaServices.LoadEmbeddedNavigationRoute: Action<string> ->
  Action<NavigationSettings?>; MetaEngine's dispatch passes
  action.EmbeddedRoute directly.
- MetafSerializer.ResolveEmbeddedNavs (.af importer) builds the
  NavigationSettings directly via the existing ApplyNavBody helper
  (renamed SynthesizeNavBlob -> BuildNavSettings) instead of serializing
  it back into text. WriteBinaryNavBlob/WriteBinaryWaypoint/
  FormatBinaryDouble are deleted outright (the only caller was the
  now-removed blob synthesis).
- SaveMeta had its own now-dead re-parse of action.Text via
  VtankNavRouteSerializer.TryLoad to rebuild each embedded NAV: block on
  save; this silently started producing EMPTY NAV: blocks once Text
  stopped carrying the blob (Text is now always cleared for this action
  kind), caught immediately by the full suite: MetaParseWriteParseIsIdentical
  started failing "Expected: Once / Actual: Circular" (a re-parsed route
  falling back to NavigationSettings' default Mode because its NAV: block
  vanished). Fixed by writing straight from action.EmbeddedRoute.
- VtankMetaProfileSerializer (.met importer): TryLoad gained an
  ISpellCatalog overload (threaded through ReadAction/ReadEmbeddedNavigation);
  ReadEmbeddedNavigation now parses its reassembled blob text through
  VtankNavRouteSerializer.TryLoad into a real NavigationSettings instead
  of handing the raw text to the caller. The existing 2-arg TryLoad
  overload defers to MetafSerializer.NoOpSpells.Instance (promoted from
  private to internal) so both test call sites and MossTankMetaProfileStore
  (which now passes _host.Automation.Spells) keep working.
- VtankNavRouteSerializer.Apply promoted from private to internal so
  MossTankPanel.LoadEmbeddedNavigationRoute can copy an already-typed
  NavigationSettings into the live _navigationSettings instance directly,
  replacing its own VtankNavRouteSerializer.TryLoad(string, ...) re-parse.
- MetafSerializerTests: AssertActionsEqual now asserts
  EmbeddedRoute is non-null on both sides and calls AssertNavigationEqual
  on them (waypoint-by-waypoint) for LoadEmbeddedNavigationRoute actions,
  instead of skipping the comparison. PtlNodeKeepsBothCoordinateTriplesDistinct's
  FindNavWaypoint helper reads action.EmbeddedRoute directly instead of
  re-parsing action.Text (which is now empty).

Full MossTank suite: 568/568 passing (net zero change in count — this
is a representation change, not new coverage, though the AssertActionsEqual
tightening now exercises real waypoint comparisons on every fixture with
an EmbedNav action that it previously skipped).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 22:22:39 +02:00
..
AcDream.App.Tests fix(plugin-ui): plugin did icons use retail's keyed-white recolor, not a raw blit 2026-09-06 17:40:39 +02:00
AcDream.Bake.Tests Optimize prepared asset package v2 2026-08-27 20:09:09 +02:00
AcDream.Cli.Tests build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Content.Tests fix(rendering): carry retail SetSurface state to detail draws 2026-09-05 02:03:13 +02:00
AcDream.Core.Net.Tests fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
AcDream.Core.Tests chore(plugins): remove the Smoke gate plugin; MossTank shelf icon 0x06002C41 2026-09-06 16:49:17 +02:00
AcDream.Core.Tests.Fixtures.HelloPlugin feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Headless.Tests fix(overhaul): integrate reviewed debt-free retirement #475 2026-09-05 11:05:07 +02:00
AcDream.Launcher.Core.Tests fix(rendering): carry retail SetSurface state to detail draws 2026-09-05 02:03:13 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsolelessSupervisorParent build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsoleSignalChild build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Launcher.Core.Tests.Fixtures.InstallLeaseHolder feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Launcher.Tests Optimize prepared asset package v2 2026-08-27 20:09:09 +02:00
AcDream.Platform.Tests feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Plugin.Tests.Fixtures.HostPlugin feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Plugin.Tests.Fixtures.InvalidRenderPackInternal feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Plugin.Tests.Fixtures.InvalidRenderPackMultiple feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Plugins.MossTank.Tests fix(vt): B typed MetaAction.EmbeddedRoute replaces the binary nav blob 2026-09-06 22:22:39 +02:00
AcDream.RenderPackValidator.Tests feat(render): shader ABI v2 - AtmosphericFrame gains clock/wind blocks; caster pass binds it (Campaign VM VM6a) 2026-08-23 00:30:02 +02:00
AcDream.Runtime.Tests fix(overhaul): integrate reviewed debt-free retirement #475 2026-09-05 11:05:07 +02:00
AcDream.UI.Abstractions.Tests fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
Fixtures/campaign-la feat(plugins): enforce apiVersion; launcher plugins default ON with "none" opt-out 2026-08-20 21:28:04 +02:00
Directory.Build.props fix: retail text and golden-string tests must not follow the machine's locale 2026-08-19 19:56:09 +02:00
TestCultureInitializer.cs fix: retail text and golden-string tests must not follow the machine's locale 2026-08-19 19:56:09 +02:00