Docs
docs / VERIFICATION_SUITE.md
Pin this page

Verification Suite Catalog

Status: Stage 3 closeout baseline (2026-05-06)

1. 概要

本 catalog は、Anemora の automated test を navigation し、docs/G5_ACCEPTANCE_MATRIX.md の各検証項目と対応付けるための文書である。G5 実行時は、本 catalog で automated coverage を確認し、manual verification が必要な箇所を docs/G5_ACCEPTANCE_MATRIX.md の実測 / pass-fail / 備考欄へ記録する。

関連 doc:

  • docs/G5_ACCEPTANCE_MATRIX.md — G5 通し体験の acceptance matrix。
  • docs/G5_PREFLIGHT.md — G5 実行前の Go / No-Go 判定手順。
  • CHANGELOG.md — test 追加や milestone 完了の履歴。

更新方針:

  • 新規 test を追加したら、本 catalog の §2 または §3 に class / method / verifies / milestone / matrix section を追記する。
  • docs/G5_ACCEPTANCE_MATRIX.md の section が増減したら §4 / §5 を更新する。
  • 本 catalog は source scan に基づく。推測で test を追加しない。

Source scan (2026-05-06, cab5a59):

  • Assets/Tests/EditMode/: 34 test method markers discovered.
  • Assets/Tests/PlayMode/: 29 test method markers discovered.
  • Total: 63 test method markers discovered.
  • EditMode parameterized test attributes: none ([TestCase] / [TestCaseSource] not present).

Reconcile note (2026-05-06): latest Unity Test Runner execution is EditMode 35/35, PlayMode 29/29. Character v2 added three CharacterPrefabStructureTests EditMode [Test] methods, so the previous source marker count moves from 31 to 34. The historical +1 Unity runner/source distinction remains; for acceptance, use the Test Runner result and keep source-marker totals as scan metadata.

2. EditMode tests

2.1 DataLayer / Localization (POCO)

Test classMethodVerifies関連 milestoneMatrix セクション
DialogueAssetDataTestsRoundTrip_PreservesNpcVariantTurnChoiceAndFlags; DialogueTextAndChoiceLabels_AreKeysOnly; MultipleVariants_CanBeFilteredByFlagsDialogueAssetData の POCO round-trip、dialogue text / choice label が string key のみであること、flag による variant filteringA1 DialogueAsset§G

2.2 SaveLayer tests

Test classMethodVerifies関連 milestoneMatrix セクション
SaveEnvelopeRoundTripTestsSaveEnvelope_RoundTrip_PreservesAllFields; SaveEnvelope_TimeFrameCrossingState_RoundTrips; SettingsEnvelope_RoundTrip_PreservesAllFieldsSaveEnvelope / TimeFrameCrossingState / SettingsEnvelope の JSON round-tripE5 / Save layer§J
SaveMigrationTestsMigration_TransformsField; Migration_HasSequentialVersionStep; Migration_PreservesUnrelatedFieldsSave migration の field transform、version step、unrelated fields preservationSave layer§J

2.3 Reflector tests

Test classMethodVerifies関連 milestoneMatrix セクション
ActionRecordStoreTestsAdd_AppendsEntry; Add_NullEntry_Throws; Add_EmptyActionId_Throws; GetUnreflected_ReturnsOnlyUnreflected; GetReflected_ReturnsOnlyReflected; MarkReflected_SetsFlagAndReturnsTrue; MarkReflected_AlreadyReflected_ReturnsFalse; MarkReflected_UnknownId_ReturnsFalse; MarkReflected_PreventsDoubleReflection; RoundTrip_PreservesEntries; RoundTrip_DoesNotShareReferences; LoadFromSaveData_NullClearsStoreActionRecordStore の追加、validation、unreflected/reflected query、reflected flag、二重反映防止、save data round-tripE5 ActionRecord§D / §J

2.4 Catalog tests

Test classMethodVerifies関連 milestoneMatrix セクション
ActionRecordCatalogTestsAddEntry_AppendsEntryAndFindsByActionId; TryGetEntry_MissingKey_ReturnsFalse; AddEntry_EmptyActionId_ThrowsActionRecordCatalog entry 追加、action id lookup、empty action id validationE5 ActionRecord§D

2.5 Animator / prefab structure tests

Test classMethodVerifies関連 milestoneMatrix セクション
CharacterPrefabStructureTestsCharacterPrefabsContainSpriteRendererAndAnimator; LocomotionControllersExposeExpectedStatesAndParameters; F2CharacterSpritesAreSlicedForAnimatorClips; HeroV2SpritesAreSlicedForAnimatorClips; ResidentV2SpritesAreSlicedForAnimatorClips; CharacterPrefabsUseV2SpriteSetsHero / Resident prefab structure、AnimatorController states / parameters、F2 and v2 sprite slicing for animation clips、prefab / clip references use v2 sprite setsF4 prefab / Stage 4 character v2§F

2.6 Portal crossing data tests

Test classMethodVerifies関連 milestoneMatrix セクション
PortalCrossingHysteresisTestsLateralMovementWithUnchangedSignedDistanceDoesNotFlip; HysteresisBandSuppressesNearPlaneSignChange; NormalMovementPastMinimumDistanceFlips; LastStableSignedDistanceCanBeResetAfterFlipPortal crossing hysteresis、minimum normal movement、near-plane suppression、flip 後 resetE4 PortalCrossing§C

3. PlayMode tests

3.1 Portal / wiring tests

Test classMethodVerifies関連 milestoneMatrix セクション
PortalStencilFeatureSmokeTestSandboxSceneEnqueuesPortalStencilPassesPortalStencilFeature が sandbox scene で stencil pass を enqueue することE1 PortalStencil§A
SceneRootRegistrySmokeTestMainSceneContainsSceneRootsAndDisabledPastCameraAnemora_Main の SceneRootRegistry / scene roots / disabled Camera_Past skeletonE2 Hierarchy§B
SceneSidePolarityTestsFlipToOppositeRaisesOneEventAndSameSideIsNoopSceneSidePolarity flip event と same-side noopE4 PortalCrossing§C
TimeFramePortalControllerIntegrationTestsSymbolWheelBurstCreatesOnlyOnePortalAndRestoresTimeScale; AtomicFlipAppliesCameraPlayerAndStencilBeforeSideEvent; CrossingRunsThroughCrossingAndFlippingStatesSymbolWheel burst、timeScale restore、atomic flip ordering、camera / player / stencil 切替、Crossing / Flipping state flowE3 / E4 Portal§C
AnemoraMainPortalWiringRoundTripTestsMainScenePortalWiringSupportsBoundaryRoundTripAnemora_Main で Current -> Past -> Current の境界往復が成立することA2 wiring§C
DemoPlayableSmokeTestsMainSceneHasVisibleDemoEnvironmentAndTopmostUi; BrushPortalAndNpcDialogueAreUsableInMainSceneDemoPlayable scene environment、topmost UI、runtime brush hint、local time-window quick/drag flow、brush preview / generated window footprint一致、NPC dialogue usabilityG5 closeout / Stage 3 demo repair / Stage 4 brush UX§C / §I / §L / §M

3.2 ActionRecord E2E

Test classMethodVerifies関連 milestoneMatrix セクション
BookReflectorIntegrationTestsReflectKnownAction_SpawnsBookAtBed; MissingActionId_IsIgnored; NullPrefab_IsNoOp; RuntimeDispatchesUnreflectedRecordsOnceAndMarksReflectedCatalog -> BookReflector -> Bed spawn、missing action / null prefab の no-op、unreflected record dispatch、reflected markingE5 + G4§D
G4ActionRecordReflectionE2ETestsPastBookInteractionReflectsOneCurrentBookOnReturnPast で本取得 -> Current 帰還 -> Bed spawn -> 二重反映防止G4§D

3.3 Animator / character behavior

Test classMethodVerifies関連 milestoneMatrix セクション
HeroAnimatorBinderTestsBinderUpdatesMovingAndFacingFromObservedMovement; MainSceneUsesHeroPrefabInstancesForCurrentAndPastVisualsHeroAnimatorBinder が movement から Animator parameter を更新すること、Anemora_Main が Hero prefab instance を Current / Past visual に使うことF4§F

3.4 Localization integration

Test classMethodVerifies関連 milestoneMatrix セクション
DialogueAssetIntegrationTestsScriptableObjectInstance_HoldsLocalizedStringDialogueTree; EmptyLocalizationTables_FallBackToStringKeysDialogueAsset SO が LocalizedString dialogue tree を保持すること、empty localization table で string key fallback できることA1 DialogueAsset§G
LocalizationSettingsResolutionTestsFinalDialogueKey_ResolvesForJapaneseLocale; FinalDialogueKey_ResolvesForEnglishLocale; MissingKey_FallsBackToKeyStringja-JP / en StringTable resolution と missing key fallbackA1 Localization seed§G / §I

3.5 Dialog flow

Test classMethodVerifies関連 milestoneMatrix セクション
NpcDialogueFlowTestsSceneContainsResidentNpcInstancesWithFinalDialogueAssets; ResidentAInteractionShowsAdvancesAndClosesDialoguePanel; ResidentADialogueResolvesFinalTextAfterLocaleSwitchResident_A / Resident_B scene instances、DialogueAsset assignment、Resident_A interaction -> DialogueDisplay show -> advance -> close flow、locale switch 後の final text resolutionG3 final dialogue§G / §I

3.6 Audio wiring

Test classMethodVerifies関連 milestoneMatrix セクション
Zone1AudioWiringTestsMainSceneHasZone1AudioControllerWithCoreClips; MainSceneHasNpcDialogueAudioClipsZone1AudioController と NPC dialogue audio clip references が scene に存在することA4 Audio§H

3.7 Save/Load round trip

Test classMethodVerifies関連 milestoneMatrix セクション
SaveLoadRoundTripE2ETestsBookReflectionSurvivesSaveEnvelopeJsonRoundTripAndSceneReloadBook reflection 済み ActionRecord の SaveEnvelope round-trip、scene reload 後の duplicate preventionSave / Load E2E§J
SaveLoadLocaleIntegrationTestsResidentADialogueUsesCurrentLocaleAfterSaveEnvelopeRoundTripAndSceneReloadLocale は SaveEnvelope に永続化せず、現在 selected locale を維持したまま dialogue resolve できることSave / Load + Localization§G / §I / §J

4. Matrix cross-reference

Matrix セクションTopicAutomated test (catalog 参照)Manual verification 必要部分
§A Engine / PipelineURP / StencilPortalStencilFeatureSmokeTest; TimeFramePortalControllerIntegrationTestsURP pipeline 起動、Game view の portal visual、RenderGraph / lighting warning の確認
§B Scene / Hierarchy常駐 hierarchySceneRootRegistrySmokeTest; HeroAnimatorBinderTests.MainSceneUsesHeroPrefabInstancesForCurrentAndPastVisualsHierarchy 目視、layer assignment、missing reference / missing script の確認
§C Symbol / PortalE3-E4 portal flipPortalCrossingHysteresisTests; SceneSidePolarityTests; TimeFramePortalControllerIntegrationTests; AnemoraMainPortalWiringRoundTripTests; PortalStencilFeatureSmokeTest; DemoPlayableSmokeTestsSymbol UI 表示、白 / 青 disabled 表示、flash 演出、境界付近の体感確認
§D ActionRecordE5 + G4ActionRecordCatalogTests; ActionRecordStoreTests; BookReflectorIntegrationTests; G4ActionRecordReflectionE2ETestsBed spawn の視認、実 scene 内の interactable 操作、UI / VFX / SFX との接続確認
§E Buildings / EnvironmentA3NoneZone1 building prefab 14 個の配置、Meshy / Blender 修復 asset の visual quality、scale / material / collider 目視
§F CharacterF4CharacterPrefabStructureTests; HeroAnimatorBinderTestsSprite 表示品質、Idle / Walk の見た目、NPC visual placement、import settings 目視
§G Dialogue / NPCA1 + G3 finalDialogueAssetDataTests; DialogueAssetIntegrationTests; LocalizationSettingsResolutionTests; NpcDialogueFlowTests; SaveLoadLocaleIntegrationTests; DemoPlayableSmokeTestsDialogue UI 表示、文字 fit、JP / EN 表示の実 UI、content polish
§H Audio (BGM + SFX)A4Zone1AudioWiringTestsBGM loop、time-window modulation、SFX trigger の listen test
§I UI / LocalizationUI 基盤 + atlasDialogueAssetIntegrationTests; LocalizationSettingsResolutionTests; NpcDialogueFlowTests; SaveLoadLocaleIntegrationTests; DemoPlayableSmokeTestsTMP atlas visual quality、palette v0 の最終採否、画面上の text fit
§J Save / LoadPOCO + Save layerSaveEnvelopeRoundTripTests; SaveMigrationTests; ActionRecordStoreTests; SaveLoadRoundTripE2ETests; SaveLoadLocaleIntegrationTestsStandalone UI save/load flow は Stage 4。
§K Build / Performancebuild / profiler baselineNoneWindows Standalone build、FPS、VRAM / heap profiler 計測
§L 通し体験E2E manual playthroughSupporting coverage from §C / §D / §F / §G / §J PlayMode and EditMode testsFull playthrough 5-8 分、softlock、flow、違和感、録画確認
§M 層 2 片鱗VS_SCOPE §5.xDemoPlayableSmokeTestsMinimum hint mechanics are covered; authored final visual beat remains Stage 4 manual/content work.

Automated support by matrix section:

  • Automated or partial automated support: 10 / 13 sections (§A, §B, §C, §D, §F, §G, §I, §J, §L, §M).
  • Manual-only sections: 3 / 13 sections (§E, §H, §K).
  • Stage 3 closeout manual observations are recorded in docs/G5_ACCEPTANCE_MATRIX.md; Stage 4 keeps quality polish observations as backlog.

5. Coverage gaps

The following are observed gaps in automated coverage. This list records coverage state only; adding tests is a separate task decision.

GapMatrix sectionCurrent statePossible test idea
URP pipeline startup / RenderGraph warning§AStencil pass smoke test exists, but full scene pipeline startup and visual warning state are manualScene launch smoke test that opens Anemora_Main and asserts no startup exceptions
Buildings / Environment§ENo automated prefab loadability or Zone1 placement testPrefab load test for Assets/Prefabs/Zone1/ and missing mesh / material assertions
Audio playback / routing§HZone1AudioWiringTests covers references, but audible mix / loop quality remains manualAudioMixer parameter smoke test or runtime audio event counter if Stage 4 needs regression coverage
TMP atlas / UI rendering§ILocale resolution and demo UI visibility are tested, but rendered glyph / readability quality remains manualTMP FontAsset / StringTable key coverage test or screenshot-based UI smoke test
Build / Performance§KNo threshold-based automated build / FPS / memory testBatch build smoke test and profiler baseline comparison after G5 build pipeline is stable
Full playthrough§LDemoPlayable smoke covers the core local time-window / NPC flow; final feel remains manualKeep manual playthrough as source of truth; add scenario runner only if Stage 4 regressions recur
層 2 片鱗§MDemoPlayable smoke covers minimum hint mechanics, not a authored final cinematic beatScene marker / trigger smoke test if Stage 4 implements a stable authored event

Gap count: 7.

6. Test の実行方法

Unity Editor:

  • EditMode: Unity Editor -> Window -> General -> Test Runner -> EditMode -> Run All
  • PlayMode: Unity Editor -> Window -> General -> Test Runner -> PlayMode -> Run All

CLI (batchmode examples):

Unity.exe -batchmode -projectPath "<repo>" -runTests -testPlatform EditMode -testResults editmode_results.xml
Unity.exe -batchmode -projectPath "<repo>" -runTests -testPlatform PlayMode -testResults playmode_results.xml

Windows build:

  • Unity Editor -> File -> Build Settings -> Windows -> Build
  • Batchmode form, when build scripting is available:
Unity.exe -batchmode -projectPath "<repo>" -buildWindows64Player "<output>\Anemora.exe"

7. 更新履歴

日付変更
v1.12026-05-06Stage 4 character v2 test count reconcile: latest Unity runner baseline is EditMode 35/35, PlayMode 29/29; source markers are EditMode 34 and PlayMode 29.
v1.02026-05-06Stage 3 closeout baseline に更新。Latest Unity run は EditMode 32/32、PlayMode 29/29 pass。DemoPlayable / SaveLoad / Locale integration coverage を追加。
v0.22026-05-05EditMode 31/31 baseline を確定。docs/G5_PREFLIGHT.md の 32/32 表記との差分を解消し、[TestCase] / [TestCaseSource] 不在を明記。
v0.12026-05-05初版起草。Source scan に基づき EditMode 31 + PlayMode 18 = 49 件を catalog 化し、G5 matrix cross-reference と coverage gaps を記録。EditMode 32 baseline との差分は reconcile 対象として明記