プロジェクト

全般

プロフィール

リファクタ #175

完了

audio driver / PCM 系のテスト追加方針を整理する

リファクタ #175: audio driver / PCM 系のテスト追加方針を整理する

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

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

100%

予定工数:

説明

Redmine #165 のコードベースレビューからの派生タスクです。

背景

audio/AbstractAudioDriver.javaPortAudioDriver、PCM 系クラスは変更リスクが高い一方で、ユニットテストや回帰テストが薄い状態です。

対応内容

  • AudioDriverPCMShortPCMFloatPCMBytePCM などのテスト可能な純粋ロジックを洗い出す。
  • 外部デバイスやネイティブ依存が不要な範囲からテストを追加する。
  • PortAudio など環境依存が強い検証は smoke test と通常 unit test を分離する。
  • 既存の PortAudio*Smoke の位置づけを明確にする。

確認観点

  • CI または通常の ./gradlew.bat test で環境依存の失敗を起こさないこと。
  • PCM 変換、音量、ループ、破棄処理などの基本挙動を保護できること。

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

関連している beatoraja - リファクタ #165: コードベースの棚卸完了いづ さん2026/06/11

操作

いづ さん さんが25日前に更新 操作 #1

いづ さん さんが22日前に更新 操作 #2

  • 対象バージョンBacklog にセット

いづ さん さんが12日前に更新 操作 #3

  • 対象バージョンBacklog から 1.2.1 に変更

いづ さん さんが10日前に更新 操作 #4

  • 対象バージョン1.2.1 から Backlog に変更

いづ さん さんが8日前に更新 操作 #5

  • 対象バージョンBacklog から 1.3.1 に変更

エージェント ちゃん さんが8日前に更新 操作 #6

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/175
  • 対応方針: PCM 系クラス(ShortPCM/FloatPCM/ShortDirectPCM/BytePCM)のネイティブ・デバイス非依存な純粋ロジック(ビット深度変換・チャンネル/サンプリングレート変換・slice・validate)に JUnit ユニットテストを追加し、PortAudio*Smoke を含む環境依存検証との位置づけをドキュメントで明文化する。

エージェント ちゃん さんが8日前に更新 操作 #7

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

変更リスクが高い一方でテストが薄かった audio / PCM 系クラスに対し、デバイス・ネイティブ・実ファイル非依存の純粋ロジックをユニットテストで保護し、環境依存検証(PortAudio スモーク)との位置づけをドキュメント化した。

変更点

  • ShortPCM / FloatPCM / ShortDirectPCM / BytePCM に JUnit5 ユニットテストを追加(計47件)。PCM.PCMLoader を driver=null で直接組み立て、in-memory ByteBuffer から検証。
    • ビット深度変換(8/16/24/32bit の loadPCM)、チャンネル変換、サンプリングレート / 再生速度変換(恒等+線形補間)、slice(通常・末尾無音トリム・範囲外null)、validate
  • docs/audio-testing.md を新設し、常時実行の純粋ユニットテスト層と、実オーディオ環境を要する PortAudio*Smoke 手動スモーク層の 2 層分離を明文化。
  • production code は無変更(テスト4ファイル+ドキュメント1のみ)。
  • 変更ファイル: src/test/java/bms/player/beatoraja/audio/ShortPCMTest.javaFloatPCMTest.javaShortDirectPCMTest.javaBytePCMTest.javadocs/audio-testing.md(計5件)

テスト

  • .\gradlew.bat test --tests "bms.player.beatoraja.audio.*" : 成功。新規47件すべて合格(failures/errors/skipped 0)、既存 AudioDeviceOptimizerTest(7件) も緑。

関連 MR

  • !127 (feature/175 → develop) マージ済

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