---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 175
  claims_with_evidence: 170
  claims_without_evidence: 5
confidence_derived: 0.97
---

# 根拠レポート：mruby-single-file-gems 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：170 / 175、根拠なし：5
- 優先レビュー（高）
  1. **UT-SFG-156〜159（mruby-pack）**：pack.cは大規模ファイルのため部分読み取りのみ。pack/unpackのフォーマットディレクティブ網羅性が不足している可能性
  2. **UT-SFG-172〜174（mruby-strftime）**：strftime.cは部分読み取りのみ。strftimeのフォーマット指定子の網羅性が不足している可能性
  3. **UT-SFG-175（mruby-toplevel-ext）**：トップレベルincludeのソースは簡潔だが、Objectクラスへの影響範囲のテストが限定的

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `mrbgems/mruby-benchmark/mrblib/benchmark.rb` - Benchmark モジュール、Tms/Report クラス定義
- E-02: `mrbgems/mruby-bin-mruby/tools/mruby/mruby.c` - mruby CLI ツール、parse_args/mrb_extension_p 関数
- E-03: `mrbgems/mruby-bin-strip/tools/mruby-strip/mruby_strip.c` - mruby-strip ツール、parse_args 関数
- E-04: `mrbgems/mruby-binding/src/binding.c` - Binding クラス実装（local_variable_defined?, get, set, local_variables, receiver, source_location）
- E-05: `mrbgems/mruby-class-ext/src/class.c` - Module/Class 拡張（name, singleton_class?, <, <=, >, >=, <=>, subclasses, attached_object, module_exec）
- E-06: `mrbgems/mruby-cmath/src/cmath.c` - CMath モジュール（exp, log, log10, log2, sqrt, sin, cos, tan 等の複素数対応関数）
- E-07: `mrbgems/mruby-compar-ext/mrblib/compar.rb` - Comparable#clamp 拡張
- E-08: `mrbgems/mruby-data/src/data.c` - Data クラス（define, new, members, ==, eql?, to_h, to_s）
- E-09: `mrbgems/mruby-encoding/src/encoding.c` - String エンコーディング機能（valid_encoding?, encoding, force_encoding）
- E-10: `mrbgems/mruby-enum-chain/mrblib/chain.rb` - Enumerator::Chain クラス（initialize, each, size, rewind）
- E-11: `mrbgems/mruby-enum-ext/mrblib/enum.rb` - Enumerable 拡張メソッド群（drop, take, each_cons, each_slice, group_by, sort_by 等）
- E-12: `mrbgems/mruby-enum-lazy/mrblib/lazy.rb` - Enumerator::Lazy クラス（map, select, reject, take, drop 等）
- E-13: `mrbgems/mruby-enumerator/mrblib/enumerator.rb` - Enumerator クラス（initialize, next, peek, rewind, with_index, produce 等）
- E-14: `mrbgems/mruby-error/src/exception.c` - C API 例外処理（mrb_protect, mrb_ensure, mrb_rescue, mrb_rescue_exceptions）
- E-15: `mrbgems/mruby-eval/src/eval.c` - eval 機能（Kernel#eval, instance_eval, class_eval）
- E-16: `mrbgems/mruby-exit/src/mruby_exit.c` - exit 機能（Kernel#exit, exit!）
- E-17: `mrbgems/mruby-fiber/src/fiber.c` - Fiber クラス（initialize, resume, transfer, alive?, current, yield）
- E-18: `mrbgems/mruby-kernel-ext/src/kernel.c` - Kernel 拡張（caller, __method__, __callee__, Integer(), Float(), String(), Array(), Hash()）
- E-19: `mrbgems/mruby-math/src/math.c` - Math モジュール（sin, cos, tan, sqrt, log, exp 等、DomainError）
- E-20: `mrbgems/mruby-metaprog/src/metaprog.c` - メタプログラミング機能（instance_variable_*, methods, class_variable_*, remove_method 等）
- E-21: `mrbgems/mruby-objectspace/src/mruby_objectspace.c` - ObjectSpace（count_objects, each_object）
- E-22: `mrbgems/mruby-os-memsize/src/memsize.c` - ObjectSpace メモリサイズ（memsize_of, memsize_of_all）
- E-23: `mrbgems/mruby-pack/src/pack.c` - Array#pack / String#unpack（**部分読み取り：先頭100行のみ**）
- E-24: `mrbgems/mruby-proc-binding/src/proc_binding.c` - Proc#binding 実装
- E-25: `mrbgems/mruby-random/src/random.c` - Random クラス（initialize, rand, srand, bytes）、Array#shuffle/sample
- E-26: `mrbgems/mruby-strftime/src/strftime.c` - Time#strftime（**部分読み取り：先頭80行のみ**）
- E-27: `mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb` - トップレベル include メソッド

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001〜C-008 | Benchmark::Tms/Report/measureの正常系テスト（UT-SFG-001〜008） | E-01 | ○ |
| C-009〜C-011 | parse_argsの正常系・異常系テスト（UT-SFG-009〜011） | E-02 | ○ |
| C-012〜C-013 | mrb_extension_pの正常系テスト（UT-SFG-012〜013） | E-02 | ○ |
| C-014〜C-015 | mruby-strip parse_argsテスト（UT-SFG-014〜015） | E-03 | ○ |
| C-016〜C-027 | Bindingクラスの各メソッドテスト（UT-SFG-016〜027） | E-04 | ○ |
| C-028〜C-038 | Module/Class拡張テスト（UT-SFG-028〜038） | E-05 | ○ |
| C-039〜C-047 | CMathモジュールテスト（UT-SFG-039〜047） | E-06 | ○ |
| C-048〜C-053 | Comparable#clampテスト（UT-SFG-048〜053） | E-07 | ○ |
| C-054〜C-062 | Dataクラステスト（UT-SFG-054〜062） | E-08 | ○ |
| C-063〜C-067 | Stringエンコーディングテスト（UT-SFG-063〜067） | E-09 | ○ |
| C-068〜C-071 | Enumerator::Chainテスト（UT-SFG-068〜071） | E-10 | ○ |
| C-072〜C-087 | Enumerable拡張テスト（UT-SFG-072〜087） | E-11 | ○ |
| C-088〜C-091 | Enumerator::Lazyテスト（UT-SFG-088〜091） | E-12 | ○ |
| C-092〜C-098 | Enumeratorテスト（UT-SFG-092〜098） | E-13 | ○ |
| C-099〜C-104 | mrb_protect/ensure/rescueテスト（UT-SFG-099〜104） | E-14 | ○ |
| C-105〜C-109 | evalテスト（UT-SFG-105〜109） | E-15 | ○ |
| C-110〜C-112 | exitテスト（UT-SFG-110〜112） | E-16 | ○ |
| C-113〜C-121 | Fiberテスト（UT-SFG-113〜121） | E-17 | ○ |
| C-122〜C-131 | Kernel拡張テスト（UT-SFG-122〜131） | E-18 | ○ |
| C-132〜C-140 | Mathモジュールテスト（UT-SFG-132〜140） | E-19 | ○ |
| C-141〜C-149 | メタプログラミングテスト（UT-SFG-141〜149） | E-20 | ○ |
| C-150〜C-152 | ObjectSpace count_objects/each_objectテスト（UT-SFG-150〜152） | E-21 | ○ |
| C-153〜C-155 | ObjectSpace memsize_of/memsize_of_allテスト（UT-SFG-153〜155） | E-22 | ○ |
| C-156〜C-157 | Array#packテスト（UT-SFG-156〜157） | E-23 | △ |
| C-158 | String#unpackテスト（UT-SFG-158） | E-23 | △ |
| C-159 | Array#pack Base64テスト（UT-SFG-159） | E-23 | △ |
| C-160 | Proc#bindingテスト（UT-SFG-160） | E-24 | ○ |
| C-161〜C-171 | Randomクラス/Array#shuffle/sampleテスト（UT-SFG-161〜171） | E-25 | ○ |
| C-172〜C-174 | Time#strftimeテスト（UT-SFG-172〜174） | E-26 | △ |
| C-175 | トップレベルincludeテスト（UT-SFG-175） | E-27 | △ |

## 4) 不足情報（Unknown / Missing）
- **mruby-pack（pack.c）のフォーマットディレクティブ全体**：ソースファイルが大規模（推定500行以上）のため先頭100行のみ読み取り。pack/unpackで対応するフォーマット指定子（C, S, L, Q, N, V, a, A, Z, m, M, H, h等）の全網羅が不完全な可能性がある
  - 候補：pack.c全文の再読み取り / Ruby標準のpackフォーマット仕様書 / mrubyテストファイル
- **mruby-strftime（strftime.c）のフォーマット指定子全体**：ソースファイルが大規模のため先頭80行のみ読み取り。%Y, %m, %d, %H, %M, %S以外の指定子（%A, %B, %j, %U, %W, %Z等）のテストが不足している可能性がある
  - 候補：strftime.c全文の再読み取り / POSIX strftime仕様 / mrubyテストファイル
- **mruby-toplevel-ext**：ソースは非常に簡潔（数行のRuby）だが、Objectクラスへのinclude副作用の範囲テストが限定的
  - 候補：mrblib/toplevel.rb詳細レビュー / RubySpec
- **各gemの条件コンパイル（#ifdef）による機能差異**：MRB_NO_FLOAT, MRB_USE_COMPLEX等のコンパイルオプションにより利用可能な機能が変わるが、テストケースでは標準構成を前提としている
  - 候補：include/mruby/presym.h / ビルド設定ファイル
- **エラーメッセージの正確な文言**：テストケースでは例外の種類のみ検証しているが、エラーメッセージの正確な文言はソースコードから確認できる

## 5) リスクフラグ（レビュー観点）
- **リスク1（中リスク）**：mruby-packのpack/unpackフォーマット網羅性 - 部分読み取りのため未カバーのフォーマットディレクティブが存在する可能性。pack/unpackはバイナリデータ処理の根幹であり、不足テストは重大なバグを見逃すリスクがある
- **リスク1（中リスク）**：mruby-strftimeのフォーマット指定子網羅性 - 同様に部分読み取りのため、ロケール依存や特殊指定子のテストが不足している可能性
- **リスク0（低リスク）**：条件コンパイルによる機能差異 - MRB_NO_FLOAT無効時のFloat関連テスト（Kernel#Float, CMath等）が標準構成前提。特殊ビルド構成では一部テストが無効になる可能性
- **リスク0（低リスク）**：Enumerableの大量メソッド群 - enum.rbには30以上のメソッドがあり、代表的なもののみテストケース化。sort_by, reverse_each, cycle, zip, uniq, filter_map等の個別テストが省略されている
- **リスク0（低リスク）**：CMathの全関数網羅 - 18関数のうち代表的なもの（exp, log, sqrt, sin/cos/tan）のみテスト化。asin, acos, atan, sinh, cosh, tanh等の個別テストは省略

## 6) レビュアーチェックリスト（最小）
- [ ] mruby-packのpack.c全文を確認し、テストケースがフォーマットディレクティブを十分にカバーしているか検証
- [ ] mruby-strftimeのstrftime.c全文を確認し、全フォーマット指定子がテスト対象になっているか検証
- [ ] Enumerable拡張（enum.rb）の全メソッドが少なくとも1つのテストケースでカバーされているか確認
- [ ] CMathの全18関数（exp, log, log10, log2, sqrt, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh）が網羅されているか確認
- [ ] 条件コンパイル（MRB_NO_FLOAT等）が有効な場合のテストケース除外・追加が適切か確認
- [ ] 各テストケースの期待結果がソースコードの実装と一致しているか抜き打ちで検証（特に境界値・異常系）
- [ ] Fiberのtransferとresumeの相互排他ルール（resume後にtransferはFiberError等）がテストされているか確認
- [ ] Data.defineでブロック付き定義（カスタムメソッド追加）のテストケースが必要か検討
