acdream/tests
Erik d631cc4fe6 fix(vt): J five nits — argument order, sort order, dedup key readers
Item J (slice-1 fix round), five sub-parts (item 12's sixth, the
VtankCellBuilder/VtankCellFactory note, required no change — both are
genuinely in use):

1. MobsInDist_Priority's regex-table entry gained an argument-order
   comment (count, distance, priority — cross-referenced against Meta.cs's
   runtime evaluation, CountMonstersByPriority(priority, distance) >=
   count) plus a new synthesized round-trip test
   (MobsInDistPriorityRoundTripsAllThreeNumbersDistinctly): this condition
   is never exercised by any committed real fixture (only its name
   appears, in the auto-completion header banner text), so nothing
   previously caught an accidental swap of any two of its three numeric
   fields.

2. VtankDatabase.Render() now explicitly sorts tables by name
   (StringComparer.Ordinal) before writing — VTank's own `y` class holds
   tables in a SortedDictionary, so a real .usd/.ast always emits
   table-name order. This port's own Tables is an insertion-ordered list,
   so every committed fixture happened to round-trip in order today
   purely because it was already sorted the last time real VTank wrote it
   (confirmed: defaultsettings.usd's own first five tables are already
   alphabetical). New RenderEmitsTablesInNameOrderRegardlessOfInsertionOrder
   adds three tables in deliberately reversed order to prove the sort,
   not just re-check an already-sorted fixture.

3. SaveMeta's NAV: block write order now comes from a List<(MetaAction,
   string)> populated in AssignEmbedTags's own traversal order, not
   Dictionary<MetaAction,string> enumeration — Dictionary enumeration
   order happens to match insertion order in the current runtime absent
   removals, but that is an implementation detail, never a documented BCL
   contract. embedTags stays a Dictionary purely for WriteAction's O(1)
   lookup; embedOrder is the sole source of write order.

4. "/vt nav save Foo.af" and "/vt meta save Foo.af" used to keep the
   ".af" suffix (only ".nav"/".met" were stripped from the argument),
   producing a doubled "exports/nav/Foo.af.af" / "exports/meta/Foo.af.af"
   export instead of "exports/nav/Foo.af" / "exports/meta/Foo.af" — .af
   is the only VTank-compatible storage format now, so both commands
   strip it too. NavCommandsImportAndExportExactVtankNavFiles/
   MetaCommandsImportAndExportExactVtankMetFiles renamed to
   NavCommandsImportLegacyAndExportAf/MetaCommandsImportLegacyAndExportAf
   (the writer is real metaf output now, not a byte-exact pass-through of
   the imported .nav/.met, so the old names overstated what they prove);
   new NavSaveAcceptsAnAfSuffixedNameWithoutDoublingIt/
   MetaSaveAcceptsAnAfSuffixedNameWithoutDoublingIt pin the fix.

5. VtankLootRequirementEvaluator's IntKeyExists/DoubleKeyExists were each
   an independently hand-maintained duplicate of IntValue/DoubleValue's
   own named-field key list — a key added to one switch and forgotten in
   the other would silently make BuffedInt/BuffedDouble's KeyExists gate
   treat a real, always-present field as "raw property bag only". New
   TryIntValue/TryDoubleValue are the single source of truth for both
   "what is this key's value" and "does it exist at all"; IntValue/
   DoubleValue and IntKeyExists/DoubleKeyExists are now both thin wrappers
   over them. The two double-side "virtual field" keys (VtankDoubleBase+12/+14,
   which always exist regardless of whether their remapped raw key is
   present) needed an explicit comment to preserve that exact semantic
   through the consolidation.

Full MossTank suite: 583 -> 585 (2 new tests from item 4; items 1-3 and 5
added/renamed tests without net new count beyond that). App.Tests
(Plugin|LaunchOptions filter): 84/84.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 23:37:01 +02:00
..
AcDream.App.Tests fix(vt): H test-restoration + disabled-rule refusal + double-side gate 2026-09-06 23:20:20 +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 fix(vt): F host-composed VtankProfiles storage replaces raw path string 2026-09-06 23:03:04 +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): J five nits — argument order, sort order, dedup key readers 2026-09-06 23:37:01 +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