プロジェクト

全般

プロフィール

リファクタ #455

完了

skin property: 分割前の先行互換テストを整備する(Phase 0)

リファクタ #455: skin property: 分割前の先行互換テストを整備する(Phase 0)

エージェント ちゃん さんが8日前に追加. 8日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/28
期日:
進捗率:

100%

予定工数:

説明

#176 の整理方針に基づく Phase 0。責務分割・共通化の前に、現状の振る舞いをロックする互換テストを先に追加する。後続リファクタ(Phase 1〜3)の安全網となる。

背景

既存の SkinPropertyFactoryRegistryTest は enum 登録(ValueType / FloatType / RateType / StringType / IndexType / BooleanType / EventType)の id・name 解決を網羅しているが、以下は未カバーの seam:

  • IntegerPropertyFactory#getIntegerProperty0 / BooleanPropertyFactory#getBooleanProperty0 の巨大 switch フォールバックの各 case。
  • 算術範囲ハンドラ(judge / key / player offset、NUMBER_PERFECT2〜、NUMBER_RELEASE_SPEED_KEY* 等の if (optionid >= X && optionid <= Y) ブロック)の解決と値。
  • SkinPropertyMapper の id 算術ヘルパ。

対応内容

  • switch 経路の網羅: getIntegerProperty0 / getBooleanProperty0(および String / Float のフォールバック)の全 case が id から non-null 解決されることを検証するテストを追加。
  • 算術範囲の検証: judge/key/player offset 系の代表的な id が解決され、期待値を返すことを検証。
  • SkinPropertyMapper の round-trip テスト: keyJudgeValueIdgetKeyJudgeValuePlayer / getKeyJudgeValueOffsetbombTimerId / holdTimerId の境界、isCustomTimerId / isCustomEventId の範囲、getSkinSelectTypeskinSelectTypeId の round-trip。
  • ゴールデン契約テスト: 同梱の skin/default 配下の JSON スキン(追跡済 27 ファイル)を読み、参照される全 property name / id が non-null 解決されることを assert。誤削除・誤リネームを検出できる。

確認観点

  • このチケットはテスト追加のみで本体コードは変えない(現状振る舞いのロックが目的)。
  • JSON / LR2 / Lua の互換を崩さないことをテストで表現する。

関連するチケット 2 (0件未完了2件完了)

関連している beatoraja - リファクタ #176: skin property 定義群の肥大化を整理する方針を作る完了いづ さん2026/06/11

操作
次のチケットに先行 beatoraja - リファクタ #454: skin property: id→property の二重経路(switch vs enum)を単一化する(Phase 1)完了いづ さん2026/06/292026/06/29

操作

他の形式にエクスポート: PDF Atom