操作
リファクタ #446
完了JudgeManager.update() の責務分解と Manager 本体のテスト化
リファクタ #446:
JudgeManager.update() の責務分解と Manager 本体のテスト化
説明
Redmine #174 からの派生タスク。
背景¶
#174 では JudgeManager の純粋ロジック(コンボ計数 ComboState、判定色 JudgeLaneColor、JudgeRecentTimingBuffer)を挙動不変で切り出して Manager 層の回帰テストを追加したが、中核の JudgeManager.update() 本体(約 430 行)は BMSPlayer / MainController / TimerManager / BMSPlayerInputProcessor / AudioDriver / GrooveGauge に深く結合しており、本体を直接テストできていない。
対応内容¶
-
update()の入力処理・LN/CN/HCN 状態機械・autoplay 処理・見逃しPOOR判定を、挙動を変えずにテスト可能な単位へ分解する。 -
BMSPlayer/MainController/TimerManager/AudioDriver/GrooveGaugeにモック境界(seam)を導入し、LN 押し・離し、CN/HCN、BSS、オートプレイ、見逃しPOOR の各パスの回帰テストを追加する。 - 判定タイミング、ゲージ/スコア連携、タイマー連携に回帰がないことを担保する。
補足¶
本件は #174 で「大規模な設計変更が必要な場合は別 issue 化する」方針に従い切り出したもの。設計影響が広いため、着手前に設計方針の検討を推奨。
操作