---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 116
  claims_with_evidence: 113
  claims_without_evidence: 3
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：113 / 116、根拠なし：3
- 優先レビュー（高）
  1. **C-111 (UT-MTD-111)**：method_extract_owner内部関数のTypeErrorテスト - 直接の外部テストコードでは検証されていない内部防御ロジック
  2. **C-112 (UT-MTD-112)**：gem初期化関数のクラス定義確認 - 初期化関数の個別ユニットテストは一般的にないため推測ベース
  3. **C-113 (UT-MTD-113)**：gem初期化関数のKernel/Moduleメソッド登録確認 - 上記と同様

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

- E-01: `mrbgems/mruby-method/src/method.c` - C言語によるMethod/UnboundMethodクラスの実装（891行）
- E-02: `mrbgems/mruby-method/mrblib/method.rb` - Rubyによるto_proc, <<, >>の実装（73行）
- E-03: `mrbgems/mruby-method/test/method.rb` - 既存のテストコード（514行）
- E-04: `mrbgems/mruby-method/mrbgem.rake` - gem定義ファイル
- E-05: `mrbgems/mruby-method/README.md` - READMEドキュメント

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | Kernel#methodでシンボル指定のMethodオブジェクト取得 | E-01 (L713-720), E-03 (L335-340) | ○ |
| C-002 | Kernel#methodで文字列指定のMethodオブジェクト取得 | E-01 (L718 "n"フォーマット), E-03 (L340) | ○ |
| C-003 | Kernel#methodでnil引数時TypeError | E-01 (L718 mrb_get_args), E-03 (L341) | ○ |
| C-004 | Kernel#methodで未定義メソッド時NameError(シンボル) | E-01 (L661-667), E-03 (L342-343) | ○ |
| C-005 | Kernel#methodで未定義メソッド時NameError(文字列) | E-01 (L661-667), E-03 (L343) | ○ |
| C-006 | respond_to_missing?経由のmethod取得 | E-01 (L637-643), E-03 (L114-126) | ○ |
| C-007 | respond_to_missing?がfalse時NameError | E-01 (L641-643), E-03 (L125) | ○ |
| C-008 | singleton_methodの基本取得 | E-01 (L746-755), E-03 (L362-365) | ○ |
| C-009 | singleton_methodのcall動作 | E-01 (L746-755), E-03 (L367-368) | ○ |
| C-010 | singleton_methodで通常メソッド指定時NameError | E-01 (L669-671), E-03 (L364) | ○ |
| C-011 | singleton_methodでnil引数時TypeError | E-01 (L750 mrb_get_args), E-03 (L366) | ○ |
| C-012 | Module#instance_methodの基本取得 | E-01 (L780-787), E-03 (L347) | ○ |
| C-013 | Module#instance_methodで未定義時NameError | E-01 (L661-667), E-03 (L348) | ○ |
| C-014 | instance_methodでrespond_to_missing?false時NameError | E-01 (L634-636), E-03 (L349-354) | ○ |
| C-015 | Method#callの基本動作(引数付き) | E-01 (L309-313, L273-294), E-03 (L84) | ○ |
| C-016 | Method#[]演算子 | E-01 (L856), E-03 (L85) | ○ |
| C-017 | super含むメソッドチェーンのcall | E-01 (L273-294), E-03 (L86-92) | ○ |
| C-018 | ブロック付きcall | E-01 (L309-313), E-03 (L100) | ○ |
| C-019 | ブロックなしcallでLocalJumpError | E-03 (L99) | ○ |
| C-020 | 引数過多でArgumentError | E-03 (L102) | ○ |
| C-021 | キーワード引数過多でArgumentError | E-03 (L103) | ○ |
| C-022 | method_missing経由のcall | E-01 (L287-289, L66-100), E-03 (L111-129) | ○ |
| C-023 | method_missingでsuperのNoMethodError | E-01 (L66-100), E-03 (L127-128) | ○ |
| C-024 | kwargs経由のmethod_missing | E-01 (L66-100), E-03 (L141-169) | ○ |
| C-025 | BasicObjectへのbind+call | E-01 (L192-211), E-03 (L106-109) | ○ |
| C-026 | Method#unbindの基本動作 | E-01 (L369-385), E-03 (L314-317) | ○ |
| C-027 | unbind→bind→call | E-01 (L369-385, L192-211), E-03 (L323) | ○ |
| C-028 | unbindメソッドの不変性 | E-01 (L369-385), E-03 (L318-323) | ○ |
| C-029 | Method#super_methodの基本動作 | E-01 (L425-461), E-03 (L371-376) | ○ |
| C-030 | super_methodのowner確認 | E-01 (L454), E-03 (L374) | ○ |
| C-031 | super_methodのreceiver確認 | E-01 (L455), E-03 (L375, L388) | ○ |
| C-032 | super_methodのname確認 | E-01 (L456), E-03 (L376, L387) | ○ |
| C-033 | super_methodがnilの場合 | E-01 (L448-450), E-03 (L377) | ○ |
| C-034 | モジュールextend経由のsuper_method | E-01 (L434-441), E-03 (L379-388) | ○ |
| C-035 | Method#==で同一 | E-01 (L244-269), E-03 (L400) | ○ |
| C-036 | Method#==で異なるレシーバ | E-01 (L256), E-03 (L404) | ○ |
| C-037 | Method#==で異なるメソッド | E-01 (L253-254), E-03 (L405) | ○ |
| C-038 | nilとの比較 | E-01 (L250-251), E-03 (L396) | ○ |
| C-039 | eql?の動作 | E-01 (L839), E-03 (L402) | ○ |
| C-040 | ==とeql?の同値性 | E-01 (L838-839, L851-852), E-03 (L407) | ○ |
| C-041 | arity=0 | E-01 (L493-499), E-03 (L51) | ○ |
| C-042 | arity=1 | E-01 (L493-499), E-03 (L52) | ○ |
| C-043 | arity=2 | E-01 (L493-499), E-03 (L53) | ○ |
| C-044 | arity=-1(オプション引数のみ) | E-01 (L493-499), E-03 (L54) | ○ |
| C-045 | arity=-2(必須+オプション) | E-01 (L493-499), E-03 (L55) | ○ |
| C-046 | arity=-1(可変長引数のみ) | E-01 (L493-499), E-03 (L56) | ○ |
| C-047 | arity=-2(必須+可変長+ブロック) | E-01 (L493-499), E-03 (L57) | ○ |
| C-048 | arity=-3(必須+可変長+後置必須) | E-01 (L493-499), E-03 (L58) | ○ |
| C-049 | method_missing経由のarity=-1 | E-01 (L497), E-03 (L64) | ○ |
| C-050 | 組み込みメソッドのarity | E-03 (L63) | ○ |
| C-051 | ownerの基本動作 | E-01 (L798-802), E-03 (L287-288) | ○ |
| C-052 | 継承時のowner | E-01 (L798-802), E-03 (L285, L288) | ○ |
| C-053 | シングルトンメソッドのowner | E-01 (L798-802), E-03 (L289, L309) | ○ |
| C-054 | method_missing経由のowner | E-01 (L644), E-03 (L292-301) | ○ |
| C-055 | receiverの基本動作 | E-01 (L813-817), E-03 (L307) | ○ |
| C-056 | nameの基本動作 | E-01 (L828-832), E-03 (L308) | ○ |
| C-057 | unbind後のname保持 | E-01 (L381), E-03 (L310) | ○ |
| C-058 | to_sのフォーマット | E-01 (L566-626), E-03 (L265-270) | ○ |
| C-059 | inspectのエイリアス | E-01 (L853-854), E-03 (L268, L270) | ○ |
| C-060 | シングルトンメソッドのto_s | E-01 (L577-584), E-03 (L259-263) | ○ |
| C-061 | source_locationの基本動作 | E-01 (L515-524), E-03 (L171-179) | ○ |
| C-062 | クラスメソッドのsource_location | E-01 (L515-524), E-03 (L181-183) | ○ |
| C-063 | method_missing経由のsource_location=nil | E-01 (L520-521), E-03 (L185-186) | ○ |
| C-064 | parametersの基本動作 | E-01 (L542-554), E-03 (L205-213) | ○ |
| C-065 | method_missing経由のparameters=[[:rest]] | E-01 (L547-551), E-03 (L213) | ○ |
| C-066 | cloneの動作 | E-03 (L410-418) | ○ |
| C-067 | Method.newのNoMethodError | E-01 (L880), E-03 (L74) | ○ |
| C-068 | UnboundMethod#bindの基本動作 | E-01 (L192-211), E-03 (L470-476) | ○ |
| C-069 | bind→callの動作 | E-01 (L192-211), E-03 (L476-478) | ○ |
| C-070 | モジュールメソッドのbind互換性 | E-01 (L153), E-03 (L471-478) | ○ |
| C-071 | 型不一致bindでTypeError | E-01 (L150-163), E-03 (L324-326) | ○ |
| C-072 | シングルトンメソッドbindでTypeError | E-01 (L156-157), E-03 (L487) | ○ |
| C-073 | クラス互換性チェック | E-01 (L155), E-03 (L488) | ○ |
| C-074 | 引数なしbindでArgumentError | E-03 (L472) | ○ |
| C-075 | bind_callの基本動作 | E-01 (L338-344), E-03 (L492-497) | ○ |
| C-076 | 空配列のbind_call | E-01 (L338-344), E-03 (L495) | ○ |
| C-077 | 1件配列のbind_call | E-01 (L338-344), E-03 (L496) | ○ |
| C-078 | 複雑な引数パターンのbind_call | E-01 (L338-344), E-03 (L506) | ○ |
| C-079 | splat展開でのbind_call | E-01 (L338-344), E-03 (L508-509) | ○ |
| C-080 | bind_call引数不足でArgumentError | E-01 (L14-37), E-03 (L510) | ○ |
| C-081 | bind_call引数過多でArgumentError | E-03 (L512) | ○ |
| C-082 | bind_callキーワード引数過多でArgumentError | E-03 (L513) | ○ |
| C-083 | UnboundMethod#super_methodの基本動作 | E-01 (L425-461), E-03 (L460-464) | ○ |
| C-084 | super_methodの上限(nil) | E-01 (L448-450), E-03 (L464) | ○ |
| C-085 | Object#object_idのsuper_method=nil | E-01 (L447-450), E-03 (L466-468) | ○ |
| C-086 | UnboundMethod#==の基本動作 | E-01 (L244-269), E-03 (L454) | ○ |
| C-087 | 異なるメソッドの不等 | E-01 (L244-269), E-03 (L453) | ○ |
| C-088 | ==とeql?の同値性 | E-01 (L838-839), E-03 (L455) | ○ |
| C-089 | UnboundMethod#arityの基本動作 | E-01 (L493-499), E-03 (L448) | ○ |
| C-090 | method_missing経由のUnboundMethod arity | E-01 (L497), E-03 (L449) | ○ |
| C-091 | UnboundMethod#source_locationの基本動作 | E-01 (L515-524), E-03 (L199-201) | ○ |
| C-092 | method_missing経由のsource_location=nil | E-01 (L520-521), E-03 (L202) | ○ |
| C-093 | UnboundMethod#parametersの基本動作 | E-01 (L542-554), E-03 (L223) | ○ |
| C-094 | method_missing経由のparameters=[[:rest]] | E-01 (L547-551), E-03 (L224) | ○ |
| C-095 | UnboundMethod#to_sのフォーマット | E-01 (L566-626), E-03 (L263, L270) | ○ |
| C-096 | UnboundMethod#ownerの基本動作 | E-01 (L798-802), E-03 (L284) | ○ |
| C-097 | 継承時のUnboundMethod owner | E-01 (L798-802), E-03 (L285) | ○ |
| C-098 | UnboundMethod#nameの基本動作 | E-01 (L828-832), E-03 (L310) | ○ |
| C-099 | UnboundMethod.newのNoMethodError | E-01 (L875), E-03 (L75) | ○ |
| C-100 | Method#to_procの基本動作 | E-02 (L21-26), E-03 (L228-229) | ○ |
| C-101 | to_proc後のcall | E-02 (L21-26), E-03 (L230) | ○ |
| C-102 | &演算子との連携 | E-02 (L21-26), E-03 (L243) | ○ |
| C-103 | 複合引数パターンのto_proc | E-02 (L21-26), E-03 (L249-253) | ○ |
| C-104 | to_proc経由のArgumentError | E-02 (L21-26), E-03 (L255-256) | ○ |
| C-105 | Method#<<の基本動作 | E-02 (L47-49), E-03 (L430-432) | ○ |
| C-106 | <<の戻り値型 | E-02 (L47-49), E-03 (L431) | ○ |
| C-107 | Method#>>の基本動作 | E-02 (L70-72), E-03 (L434-436) | ○ |
| C-108 | >>の戻り値型 | E-02 (L70-72), E-03 (L435) | ○ |
| C-109 | シングルトンメソッドbindのTypeErrorメッセージ | E-01 (L156-157) | ○ |
| C-110 | 通常クラス型不一致のTypeErrorメッセージ | E-01 (L159-161) | ○ |
| C-111 | method_extract_ownerの内部TypeError | E-01 (L135-148) | △ |
| C-112 | gem初期化のクラス定義 | E-01 (L867-885) | △ |
| C-113 | gem初期化のメソッド登録 | E-01 (L882-884) | △ |
| C-114 | Method型の判定 | E-03 (L79) | ○ |
| C-115 | UnboundMethod型の判定 | E-03 (L80) | ○ |
| C-116 | Interpreterデモ統合テスト | E-03 (L28-32) | ○ |

## 4) 不足情報（Unknown / Missing）
- C-111: `method_extract_owner`は内部関数であり、外部から直接テストすることが困難。ownerのインスタンス変数が不正な状態になるシナリオは通常のAPIからは再現しにくい。
  - 候補：内部状態を直接操作するCレベルのテスト / fuzzing / メモリ破壊テスト
- C-112, C-113: `mrb_mruby_method_gem_init`はmrubyランタイム起動時に自動呼び出しされる初期化関数であり、個別のユニットテストとして独立させることは通常行わない。
  - 候補：統合テストでMethodクラスやKernel#methodが利用可能であることを間接的に確認 / Cレベルの初期化テスト

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: C-111, C-112, C-113 は内部実装の防御的チェックおよび初期化処理であり、既存のテストで間接的にカバーされている。gem全体が正しく動作している時点で初期化は成功していると判断できる。
- **0 (低リスク)**: 全体的に、既存テストコード（E-03: 514行）が豊富であり、主要なAPIのテストケースは高い網羅率でソースコードおよび既存テストに裏付けられている。

## 6) レビュアーチェックリスト（最小）
- [ ] Method#call のmethod_missing連携テスト（C-022〜C-024）が実際の動作と一致するか確認
- [ ] UnboundMethod#bind の型チェック（C-071〜C-073）のエラーメッセージが実装と整合するか確認
- [ ] bind_call の複雑な引数パターン（C-078, C-079）が実装の引数処理ロジック（args_shift）と整合するか確認
- [ ] Method#<< と Method#>> の合成結果の計算値（C-105: 16, C-107: 13）が正しいか確認
- [ ] 内部関数テスト（C-111）の必要性と実現可能性を判断
