acdream/tests/AcDream.Plugins.MossTank.Tests
Erik 907afd4d5b feat(vtank): slice 1c step 3 — content sanity refuses misplaced af files
A route (.af) file placed in metas/ used to silently "succeed" as an empty
MetaProfile: TryLoadMeta's STATE:/NAV: loop never adds a Rule for a NAV:-only
file, so the mistake was invisible. TryLoadMeta now tracks whether it saw
any STATE: block; a file with at least one NAV: block and zero STATE:
blocks throws (same FormatException path every other malformed-content
error already uses), naming the navs/ folder the file actually belongs in.
The opposite direction was already structurally caught by TryLoadNav's
existing "no NAV: block found" throw when a file has zero NAV: blocks (a
Meta profile with no embedded route, placed in navs/) — only the message
text is improved to name the metas/ folder. Both notices flow unchanged
through the existing MossTankProfileRecovery.Preserve/RecoveryNotice path
in MossTankMetaProfileStore.LoadCurrent/MossTankRouteProfileStore.LoadCurrent,
so no store-side code changes were needed for the wiring itself.

Mutation demonstrated: `git stash push -- src/AcDream.Plugins.MossTank/MetafSerializer.cs`
(reverting only the production fix, keeping every new test) reproduced 8
failures — the 5-fixture EveryNavOnlyAfFixtureIsRefusedByTryLoadMeta theory
(every real nav_*.af fixture parsed as a "successful" empty MetaProfile),
MetaOnlyContentIsRefusedByTryLoadNavWithMetasFolderNotice (message lacked
"metas/"), and the two store-level tests
MetaStoreRefusesToLoadANavOnlyFileWithNoticeNamingNavsFolder/
RouteStoreRefusesToLoadAMetaOnlyFileWithNoticeNamingMetasFolder — confirmed
by running the suite with the stash applied, then `git stash pop` to
restore the fix. All 640 tests (632 + 8 new) pass after.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 06:43:34 +02:00
..
Fixtures/vtank feat(vt): A1 .usd engine + A3 metaf .af engine, real VTank/metas fixtures 2026-09-06 20:52:51 +02:00
AcDream.Plugins.MossTank.Tests.csproj feat(vt): A1 .usd engine + A3 metaf .af engine, real VTank/metas fixtures 2026-09-06 20:52:51 +02:00
AttackSpellCatalogTests.cs fix(vt): model UseArcs as VTank's real 3-way enum, not a collapsed bool 2026-09-06 21:47:03 +02:00
AutoAttackPowerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
BuffPlanTests.cs feat: regen buffs, wand aura, spellbook assess, indicator press flash 2026-08-20 20:38:28 +02:00
CombatControllerTests.cs feat(mosstank): buff-caster preparer and single idle-peace arbiter — wield from the Items profile, enter magic/peace mode by itself 2026-09-06 19:02:18 +02:00
CombatFailureTrackerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
CombatItemDebuffPlannerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
CraftingTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
DebuffSchedulerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
DispelControllerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ExpressionEngineTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
FellowshipManagerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
GrenadeCatalogTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
HostExpressionFunctionsTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
InventoryMaintenanceTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ItemManaRechargeTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
LootingTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
MetaEngineTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
MetafSerializerTests.cs feat(vtank): slice 1c step 3 — content sanity refuses misplaced af files 2026-09-07 06:43:34 +02:00
MetaViewManagerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
MonsterExpressionTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
MossTankMarkupContractTests.cs merge(vt): slice 1 Part A — VTank .usd/.utl drop-in and metaf .af for metas and routes (review-closed) 2026-09-07 02:25:28 +02:00
MossTankPanelTests.cs feat(vtank): slice 1c step 3 — content sanity refuses misplaced af files 2026-09-07 06:43:34 +02:00
MossTankProfileStoreSideCarTests.cs fix(vt): round 3 item 1 — drop-in .usd EnableLooting no longer clobbered 2026-09-07 01:03:47 +02:00
NavigationTests.cs feat(vtank): slice 1c step 3 — content sanity refuses misplaced af files 2026-09-07 06:43:34 +02:00
packages.neutral.lock.json feat(plugins): MossTank — a self-buffing plugin, and the automation surface it needed 2026-08-20 16:22:28 +02:00
PetAutomationTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ProfileGiveControllerTests.cs feat(vt): round 3 item 9 — loot cutover to real .utl (consistency with the other three) 2026-09-07 01:51:34 +02:00
VitalPlanTests.cs feat(mosstank): banes, protections and weapon auras 2026-08-20 19:49:51 +02:00
VitalRechargeTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
VtankAmmunitionDatabaseTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
VtankDamageDatabaseTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
VtankLootProfileSerializerTests.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
VtankLootRequirementEvaluatorTests.cs fix(vt): H test-restoration + disabled-rule refusal + double-side gate 2026-09-06 23:20:20 +02:00
VtankMetaProfileSerializerTests.cs fix(vt): H test-restoration + disabled-rule refusal + double-side gate 2026-09-06 23:20:20 +02:00
VtankNavRouteSerializerTests.cs fix(vt): A ptl/tlk carry two coordinate triples, jmp direction loss recorded 2026-09-06 22:13:48 +02:00
VtankProfileDirectoryTests.cs feat(vtank): slice 1c step 1 — two-folder metas/navs layout, no nav_ marker 2026-09-07 06:32:56 +02:00
VtankSettingsProfileSerializerTests.cs fix(vt): I widen tDouble-declared distance fields from float to double 2026-09-06 23:27:09 +02:00
VtankUsdDocumentTests.cs test(vt): round 3 item 8 — nav byte-identity coverage + s-cell strip + .ast round-trip 2026-09-07 01:38:56 +02:00