---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 228
  claims_with_evidence: 218
  claims_without_evidence: 10
confidence_derived: 0.96
---

# 根拠レポート：mrblib 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：218 / 228、根拠なし：10
- 優先レビュー（高）
  1. **UT-MRL-141 (Kernel#loop StopIteration処理)**：StopIteration#result の返却値がloopの戻り値となるかの実行時確認が必要
  2. **UT-MRL-143, UT-MRL-144 (Kernel#!~ の動作)**：=~演算子のString同士での挙動はmruby-regexp依存のため要確認
  3. **UT-MRL-174 (Integer#step Infinity)**：Float::INFINITYの利用可能性はFloat定義の有無に依存
  4. **UT-MRL-202 (String#gsub 空パターン)**：空文字列パターンの挙動はCRubyとの互換性要確認
  5. **UT-MRL-221, UT-MRL-222 (Symbol#to_proc キーワード/ブロック引数)**：`**opts`、`&block` の転送挙動は実行時確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `mrblib/10error.rb` — NameError, NoMethodError, StopIteration クラス定義
- E-02: `mrblib/array.rb` — Array#each, each_index, collect!, map!, sort, deconstruct 定義
- E-03: `mrblib/compar.rb` — Comparable モジュール (<, <=, ==, >, >=, between?) 定義
- E-04: `mrblib/enum.rb` — Enumerable モジュール (all?, any?, collect, detect, each_with_index, entries, find_all, grep, include?, inject, max, min, partition, reject, sort, hash) 定義
- E-05: `mrblib/hash.rb` — Hash#delete, each, each_key, each_value, merge, reject!, reject, select!, select, deconstruct_keys 定義
- E-06: `mrblib/kernel.rb` — Kernel#`, loop, !~, to_enum 定義
- E-07: `mrblib/numeric.rb` — Numeric#+@, -@, abs; Integer#downto, next, succ, times, upto, step; Float#step 定義
- E-08: `mrblib/range.rb` — Range#each, hash, to_a, entries 定義
- E-09: `mrblib/string.rb` — String#each_line, gsub, gsub!, sub, sub!, each_byte 定義
- E-10: `mrblib/symbol.rb` — Symbol#to_proc 定義
- E-11: `docs/code-to-docs/単体テストケース一覧/plan.md` — プロジェクト情報、モジュール定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-MRL-001〜005: NameError#initialize, name, name= のテストケース | E-01 (10error.rb L1-9) | ○ |
| C-02 | UT-MRL-006〜009: NoMethodError#initialize, args のテストケース | E-01 (10error.rb L11-19) | ○ |
| C-03 | UT-MRL-010〜011: StopIteration#result のテストケース | E-01 (10error.rb L21-23) | ○ |
| C-04 | UT-MRL-012〜015: Array#each のテストケース | E-02 (array.rb L15-24) | ○ |
| C-05 | UT-MRL-016〜018: Array#each_index のテストケース | E-02 (array.rb L35-44) | ○ |
| C-06 | UT-MRL-019〜021: Array#collect! のテストケース | E-02 (array.rb L56-66) | ○ |
| C-07 | UT-MRL-022: Array#map! のテストケース | E-02 (array.rb L76) | ○ |
| C-08 | UT-MRL-023〜026: Array#sort のテストケース | E-02 (array.rb L84-86) | ○ |
| C-09 | UT-MRL-027: Array#deconstruct のテストケース | E-02 (array.rb L94-96) | ○ |
| C-10 | UT-MRL-028〜030: Comparable#< のテストケース | E-03 (compar.rb L16-22) | ○ |
| C-11 | UT-MRL-031〜033: Comparable#<= のテストケース | E-03 (compar.rb L33-39) | ○ |
| C-12 | UT-MRL-034〜036: Comparable#== のテストケース | E-03 (compar.rb L50-53) | ○ |
| C-13 | UT-MRL-037〜039: Comparable#> のテストケース | E-03 (compar.rb L64-70) | ○ |
| C-14 | UT-MRL-040〜042: Comparable#>= のテストケース | E-03 (compar.rb L82-87) | ○ |
| C-15 | UT-MRL-043〜046: Comparable#between? のテストケース | E-03 (compar.rb L99-101) | ○ |
| C-16 | UT-MRL-047〜051: Enumerable#all? のテストケース | E-04 (enum.rb L26-33) | ○ |
| C-17 | UT-MRL-052〜055: Enumerable#any? のテストケース | E-04 (enum.rb L43-50) | ○ |
| C-18 | UT-MRL-056〜058: Enumerable#collect のテストケース | E-04 (enum.rb L59-65) | ○ |
| C-19 | UT-MRL-059〜063: Enumerable#detect のテストケース | E-04 (enum.rb L75-84) | ○ |
| C-20 | UT-MRL-064〜066: Enumerable#each_with_index のテストケース | E-04 (enum.rb L93-102) | ○ |
| C-21 | UT-MRL-067〜068: Enumerable#entries のテストケース | E-04 (enum.rb L109-116) | ○ |
| C-22 | UT-MRL-069〜072: Enumerable#find_all のテストケース | E-04 (enum.rb L131-139) | ○ |
| C-23 | UT-MRL-073〜075: Enumerable#grep のテストケース | E-04 (enum.rb L149-158) | ○ |
| C-24 | UT-MRL-076〜078: Enumerable#include? のテストケース | E-04 (enum.rb L167-172) | ○ |
| C-25 | UT-MRL-079〜085: Enumerable#inject のテストケース | E-04 (enum.rb L182-207) | ○ |
| C-26 | UT-MRL-086〜089: Enumerable#max のテストケース | E-04 (enum.rb L223-241) | ○ |
| C-27 | UT-MRL-090〜093: Enumerable#min のテストケース | E-04 (enum.rb L250-268) | ○ |
| C-28 | UT-MRL-094〜096: Enumerable#partition のテストケース | E-04 (enum.rb L286-299) | ○ |
| C-29 | UT-MRL-097〜100: Enumerable#reject のテストケース | E-04 (enum.rb L308-316) | ○ |
| C-30 | UT-MRL-101〜103: Enumerable#sort のテストケース | E-04 (enum.rb L333-335) | ○ |
| C-31 | UT-MRL-104〜106: Enumerable#hash のテストケース | E-04 (enum.rb L344-357) | ○ |
| C-32 | UT-MRL-107〜110: Hash#delete のテストケース | E-05 (hash.rb L26-31) | ○ |
| C-33 | UT-MRL-111〜113: Hash#each のテストケース | E-05 (hash.rb L54-66) | ○ |
| C-34 | UT-MRL-114〜116: Hash#each_key のテストケース | E-05 (hash.rb L87-92) | ○ |
| C-35 | UT-MRL-117〜119: Hash#each_value のテストケース | E-05 (hash.rb L112-117) | ○ |
| C-36 | UT-MRL-120〜124: Hash#merge のテストケース | E-05 (hash.rb L142-155) | ○ |
| C-37 | UT-MRL-125〜127: Hash#reject! のテストケース | E-05 (hash.rb L167-181) | ○ |
| C-38 | UT-MRL-128〜130: Hash#reject のテストケース | E-05 (hash.rb L198-208) | ○ |
| C-39 | UT-MRL-131〜133: Hash#select! のテストケース | E-05 (hash.rb L220-234) | ○ |
| C-40 | UT-MRL-134〜136: Hash#select のテストケース | E-05 (hash.rb L251-261) | ○ |
| C-41 | UT-MRL-137〜138: Hash#deconstruct_keys のテストケース | E-05 (hash.rb L273-275) | ○ |
| C-42 | UT-MRL-139: Kernel#` のテストケース | E-06 (kernel.rb L10-12) | ○ |
| C-43 | UT-MRL-140〜142: Kernel#loop のテストケース | E-06 (kernel.rb L27-35) | ○ |
| C-44 | UT-MRL-141: loop内StopIteration発生時にresultが返却される | E-06 (kernel.rb L33-34) | △ |
| C-45 | UT-MRL-143〜144: Kernel#!~ のテストケース | E-06 (kernel.rb L38-39) | △ |
| C-46 | UT-MRL-145: Kernel#to_enum のテストケース | E-06 (kernel.rb L42-44) | ○ |
| C-47 | UT-MRL-146〜148: Numeric#+@, -@ のテストケース | E-07 (numeric.rb L11-21) | ○ |
| C-48 | UT-MRL-149〜151: Numeric#abs のテストケース | E-07 (numeric.rb L27-33) | ○ |
| C-49 | UT-MRL-152〜155: Integer#downto のテストケース | E-07 (numeric.rb L47-56) | ○ |
| C-50 | UT-MRL-156〜159: Integer#next, succ のテストケース | E-07 (numeric.rb L62-66) | ○ |
| C-51 | UT-MRL-160〜163: Integer#times のテストケース | E-07 (numeric.rb L72-81) | ○ |
| C-52 | UT-MRL-164〜167: Integer#upto のテストケース | E-07 (numeric.rb L88-97) | ○ |
| C-53 | UT-MRL-168〜174: Integer#step のテストケース | E-07 (numeric.rb L103-127) | ○ |
| C-54 | UT-MRL-174: stepがInfinityの場合の特殊処理 | E-07 (numeric.rb L108-109) | △ |
| C-55 | UT-MRL-175〜177: Float#step のテストケース | E-07 (numeric.rb L135-159) | ○ |
| C-56 | UT-MRL-178〜185: Range#each のテストケース | E-08 (range.rb L17-73) | ○ |
| C-57 | UT-MRL-186〜188: Range#hash のテストケース | E-08 (range.rb L76-81) | ○ |
| C-58 | UT-MRL-189〜191: Range#to_a, entries のテストケース | E-08 (range.rb L92-98) | ○ |
| C-59 | UT-MRL-192〜198: String#each_line のテストケース | E-09 (string.rb L14-43) | ○ |
| C-60 | UT-MRL-199〜204: String#gsub のテストケース | E-09 (string.rb L52-78) | ○ |
| C-61 | UT-MRL-202: gsub空文字列パターンの期待結果 | E-09 (string.rb L71-74) | △ |
| C-62 | UT-MRL-205〜207: String#gsub! のテストケース | E-09 (string.rb L87-93) | ○ |
| C-63 | UT-MRL-208〜211: String#sub のテストケース | E-09 (string.rb L112-133) | ○ |
| C-64 | UT-MRL-212〜214: String#sub! のテストケース | E-09 (string.rb L142-147) | ○ |
| C-65 | UT-MRL-215〜217: String#each_byte のテストケース | E-09 (string.rb L151-159) | ○ |
| C-66 | UT-MRL-218〜220: Symbol#to_proc 基本テストケース | E-10 (symbol.rb L1-8) | ○ |
| C-67 | UT-MRL-221: Symbol#to_proc キーワード引数対応 | E-10 (symbol.rb L4) | △ |
| C-68 | UT-MRL-222: Symbol#to_proc ブロック引数対応 | E-10 (symbol.rb L4) | △ |
| C-69 | UT-MRL-223〜228: エイリアスメソッドのテストケース | E-04 (enum.rb L122, L208, L214, L274, L322, L341) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-MRL-141**: `Kernel#loop`内で`StopIteration`が発生した際に`rescue`節で`e.result`が返却される挙動は、コード上のrescue句（kernel.rb L33-34）から推測しているが、実際の戻り値の伝搬はmruby VMの挙動に依存する。
  - 候補：mruby VMのrescue/return伝搬仕様 / CRuby互換性テスト
- **UT-MRL-143〜144**: `Kernel#!~`は`=~`演算子の結果に依存する。String同士の`=~`がmrubyのコア（regexp gem非搭載時）でどう動作するかはソースコードからは確認困難。
  - 候補：mruby-regexp gem / src/string.c内の=~実装
- **UT-MRL-174**: `Float::INFINITY`の利用可能性は`Object.const_defined?(:Float)`に依存。条件付き定義（numeric.rb L160）のため環境依存。
  - 候補：ビルド設定ファイル / configure時のFloat定義状況
- **UT-MRL-202**: 空文字列パターンでの`gsub`の挙動（各文字間に挿入）はコード上の`plen == 0`分岐（string.rb L71-74）から推測しているが、マルチバイト文字列での動作は要確認。
  - 候補：CRuby仕様書 / mrubyのbyteindex実装
- **UT-MRL-221〜222**: Symbol#to_procの`**opts`と`&block`の転送は、ラムダ定義（symbol.rb L4）に記述があるが、実行時のキーワード引数・ブロック転送の完全な動作は実行確認が必要。
  - 候補：mruby proc/lambda実装 / mrubyキーワード引数仕様

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク — エラークラスの定義（NameError, NoMethodError, StopIteration）は単純な継承・属性定義であり、テストケースの正確性は高い
- 0: 低リスク — Comparable, Enumerable, Array, Hash等の基本メソッドはソースコードから直接読み取れる
- 1: 中リスク — `Kernel#!~`のテストケースは`=~`演算子の実装に依存（mruby-regexp gemの有無）
- 1: 中リスク — `Integer#step`/`Float#step`のInfinity関連テストケースはFloat定義の有無に依存
- 1: 中リスク — `String#gsub`の空パターン動作はマルチバイト文字列での挙動が未確認
- 0: 低リスク — Symbol#to_procの基本動作はソースコードから明確に読み取れる
- 1: 中リスク — Symbol#to_procのキーワード引数・ブロック転送テストは実行時確認推奨

## 6) レビュアーチェックリスト（最小）
- [ ] NameError, NoMethodError, StopIterationの継承関係がISO 15.2.31/32準拠であることを確認
- [ ] Comparable各比較演算子で`<=>`がnilを返す場合のエラー処理が正しいか確認
- [ ] Enumerable#injectのシンボル引数処理（Symbol === args[-1]）の挙動を確認
- [ ] Hash#mergeのブロック付き複数ハッシュマージの動作を確認
- [ ] Kernel#loopのStopIteration rescue時のresult返却を実行確認
- [ ] Kernel#!~のmruby-regexp非搭載時の=~演算子の挙動を確認
- [ ] Integer#step/Float#stepのFloat::INFINITY条件分岐を確認
- [ ] String#gsubの空パターン(`plen == 0`)分岐のマルチバイト文字列での動作を確認
- [ ] Symbol#to_procの`**opts`/`&block`転送が正しく機能するか実行確認
- [ ] Range#eachの各分岐（Integer, String, succ, endless range）の網羅性を確認
