---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 109
  claims_with_evidence: 105
  claims_without_evidence: 4
confidence_derived: 0.96
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：105 / 109、根拠なし：4
- 優先レビュー（高）
  1. **UT-RNG-042 (first(0))**: first(0)の挙動はソースコードから推測されるが、明示的なテストケースがない
  2. **UT-RNG-044 (first引数過多)**: 複数引数の挙動はソースコードのロジックから推測
  3. **UT-RNG-052 (last(0))**: last(0)の挙動はto_a.last(0)に委譲されるため、Array#lastの挙動に依存
  4. **UT-RNG-053 (last負引数)**: 負の引数のエラーはソースコードから推測されるが、テストファイルに明示的なテストがない

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

- E-01: `mrbgems/mruby-range-ext/src/range.c` - C言語実装（cover?, size, __empty_range?）
- E-02: `mrbgems/mruby-range-ext/mrblib/range.rb` - Ruby実装（first, last, max, min, overlap?）
- E-03: `mrbgems/mruby-range-ext/test/range.rb` - 既存テストコード（期待動作の確認）
- E-04: `mrbgems/mruby-range-ext/mrbgem.rake` - gem仕様定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-RNG-001: cover?で文字列範囲にtrueを返す | E-01 (L40-96), E-03 (L5) | ○ |
| C-02 | UT-RNG-002: cover?で範囲外にfalseを返す | E-01 (L40-96), E-03 (L6) | ○ |
| C-03 | UT-RNG-003: cover?で複数文字の文字列を判定 | E-01 (L40-96), E-03 (L7) | ○ |
| C-04 | UT-RNG-004: cover?でnil入力にfalseを返す | E-01 (L40-96), E-03 (L8) | ○ |
| C-05 | UT-RNG-005: endless rangeのcover? | E-01 (L59-65, L88-94), E-03 (L9) | ○ |
| C-06 | UT-RNG-006: endless rangeで範囲外にfalse | E-01 (L59-65), E-03 (L10) | ○ |
| C-07 | UT-RNG-007: beginless rangeのcover? | E-01 (L66-72, L88-94), E-03 (L12) | ○ |
| C-08 | UT-RNG-008: 排他beginless rangeの境界値 | E-01 (L88-94), E-03 (L13) | ○ |
| C-09 | UT-RNG-009: 包含beginless rangeの境界値 | E-01 (L88-94), E-03 (L14) | ○ |
| C-10 | UT-RNG-010: nil..nilのcover? | E-01 (L48), E-03 (L15) | ○ |
| C-11 | UT-RNG-011: Range引数のcover? | E-01 (L50-85), E-03 (L17) | ○ |
| C-12 | UT-RNG-012: endless range同士のcover? | E-01 (L59-61), E-03 (L18) | ○ |
| C-13 | UT-RNG-013: 型不一致のendless rangeでfalse | E-01 (L59-61), E-03 (L19) | ○ |
| C-14 | UT-RNG-014: beginless range同士のcover? | E-01 (L66-68), E-03 (L22) | ○ |
| C-15 | UT-RNG-015: 型不一致のbeginless rangeでfalse | E-01 (L66-68), E-03 (L23) | ○ |
| C-16 | UT-RNG-016: endless vs beginlessでfalse | E-01 (L59-64), E-03 (L20) | ○ |
| C-17 | UT-RNG-017: beginless rangeにRange引数 | E-01 (L66-71), E-03 (L21) | ○ |
| C-18 | UT-RNG-018: beginless rangeで範囲外 | E-01 (L69-71), E-03 (L24) | ○ |
| C-19 | UT-RNG-019: size基本動作（包含） | E-01 (L111-170), E-03 (L48) | ○ |
| C-20 | UT-RNG-020: size基本動作（排他） | E-01 (L111-170), E-03 (L49) | ○ |
| C-21 | UT-RNG-021: 非数値範囲のsize | E-01 (L149-169), E-03 (L50) | ○ |
| C-22 | UT-RNG-022: 非数値endless rangeのsize | E-01 (L149-169), E-03 (L51) | ○ |
| C-23 | UT-RNG-023: Float範囲のsize | E-01 (L117-168), E-03 (L56) | ○ |
| C-24 | UT-RNG-024: Float端点が整数のsize | E-01 (L149-168), E-03 (L57) | ○ |
| C-25 | UT-RNG-025: Infinity終端のsize | E-01 (L165-166), E-03 (L58) | ○ |
| C-26 | UT-RNG-026: 整数endless rangeのsize（Float有効） | E-01 (L123-124), E-03 (L60) | ○ |
| C-27 | UT-RNG-027: 排他整数endless rangeのsize | E-01 (L123-124), E-03 (L61) | ○ |
| C-28 | UT-RNG-028: Float始端のTypeError | E-01 (L117-118) | ○ |
| C-29 | UT-RNG-029: nil始端のTypeError | E-01 (L120-121, L179-180) | ○ |
| C-30 | UT-RNG-030: Float無効時のendless rangeのsize | E-01 (L182-183), E-03 (L53) | ○ |
| C-31 | UT-RNG-031: __empty_range?基本動作（始端>終端） | E-01 (L205-217) | ○ |
| C-32 | UT-RNG-032: __empty_range?排他同値 | E-01 (L216) | ○ |
| C-33 | UT-RNG-033: __empty_range?包含同値 | E-01 (L216) | ○ |
| C-34 | UT-RNG-034: __empty_range?始端nil | E-01 (L212-213) | ○ |
| C-35 | UT-RNG-035: __empty_range?終端nil | E-01 (L212-213) | ○ |
| C-36 | UT-RNG-036: __empty_range?比較不能 | E-01 (L215-216) | ○ |
| C-37 | UT-RNG-037: first引数なし | E-02 (L14-15), E-03 (L28) | ○ |
| C-38 | UT-RNG-038: first(n) | E-02 (L18-27), E-03 (L29) | ○ |
| C-39 | UT-RNG-039: endless rangeのfirst | E-02 (L14-15), E-03 (L30) | ○ |
| C-40 | UT-RNG-040: endless rangeのfirst(n) | E-02 (L18-27), E-03 (L31) | ○ |
| C-41 | UT-RNG-041: beginless rangeのfirstエラー | E-02 (L14), E-03 (L32) | ○ |
| C-42 | UT-RNG-042: first(0)で空配列 | E-02 (L22-23) | △ |
| C-43 | UT-RNG-043: first負引数のエラー | E-02 (L20) | ○ |
| C-44 | UT-RNG-044: first引数過多のエラー | E-02 (L17) | △ |
| C-45 | UT-RNG-045: Infinity終端のfirst(n) | E-02 (L18-27), E-03 (L35) | ○ |
| C-46 | UT-RNG-046: last引数なし | E-02 (L46-47), E-03 (L39) | ○ |
| C-47 | UT-RNG-047: 排他範囲のlast | E-02 (L46-47), E-03 (L40) | ○ |
| C-48 | UT-RNG-048: endless rangeのlastエラー | E-02 (L46), E-03 (L41) | ○ |
| C-49 | UT-RNG-049: 排他endless rangeのlastエラー | E-02 (L46), E-03 (L42) | ○ |
| C-50 | UT-RNG-050: last(n)包含 | E-02 (L49-53), E-03 (L43) | ○ |
| C-51 | UT-RNG-051: last(n)排他 | E-02 (L49-53), E-03 (L44) | ○ |
| C-52 | UT-RNG-052: last(0)で空配列 | E-02 (L53) | △ |
| C-53 | UT-RNG-053: last負引数のエラー | E-02 (L52) | △ |
| C-54 | UT-RNG-054: max基本（包含） | E-02 (L69-88), E-03 (L66) | ○ |
| C-55 | UT-RNG-055: max基本（排他） | E-02 (L82-84), E-03 (L67) | ○ |
| C-56 | UT-RNG-056: max大きな整数 | E-02 (L82-84), E-03 (L68) | ○ |
| C-57 | UT-RNG-057: max逆転範囲 | E-02 (L79), E-03 (L71) | ○ |
| C-58 | UT-RNG-058: max排他同値 | E-02 (L80), E-03 (L74) | ○ |
| C-59 | UT-RNG-059: max包含同値 | E-02 (L77-85), E-03 (L77) | ○ |
| C-60 | UT-RNG-060: max endless rangeエラー | E-02 (L74), E-03 (L80) | ○ |
| C-61 | UT-RNG-061: max排他endless rangeエラー | E-02 (L74), E-03 (L81) | ○ |
| C-62 | UT-RNG-062: max Float範囲 | E-02 (L77-85), E-03 (L86) | ○ |
| C-63 | UT-RNG-063: max排他Float範囲TypeError | E-02 (L78), E-03 (L89) | ○ |
| C-64 | UT-RNG-064: max逆転Float範囲 | E-02 (L79), E-03 (L92) | ○ |
| C-65 | UT-RNG-065: maxブロック付き | E-02 (L72), E-03 (L97-105) | ○ |
| C-66 | UT-RNG-066: maxブロック付きペア順序 | E-02 (L72), E-03 (L108-113) | ○ |
| C-67 | UT-RNG-067: maxブロック戻り値 | E-02 (L72), E-03 (L116) | ○ |
| C-68 | UT-RNG-068: maxブロック付き逆転範囲 | E-02 (L72, L79), E-03 (L119) | ○ |
| C-69 | UT-RNG-069: maxブロック付き空排他範囲 | E-02 (L72, L80), E-03 (L120) | ○ |
| C-70 | UT-RNG-070: min基本（包含） | E-02 (L102-121), E-03 (L125) | ○ |
| C-71 | UT-RNG-071: min基本（排他） | E-02 (L102-121), E-03 (L126) | ○ |
| C-72 | UT-RNG-072: min endless range | E-02 (L109), E-03 (L127) | ○ |
| C-73 | UT-RNG-073: min逆転範囲 | E-02 (L113), E-03 (L130) | ○ |
| C-74 | UT-RNG-074: min排他同値 | E-02 (L114), E-03 (L133) | ○ |
| C-75 | UT-RNG-075: min包含同値 | E-02 (L112-117), E-03 (L136) | ○ |
| C-76 | UT-RNG-076: min Float範囲 | E-02 (L112-117), E-03 (L141) | ○ |
| C-77 | UT-RNG-077: min Float endless range | E-02 (L109), E-03 (L142) | ○ |
| C-78 | UT-RNG-078: min逆転Float範囲 | E-02 (L113), E-03 (L145) | ○ |
| C-79 | UT-RNG-079: minブロック付きendless rangeエラー | E-02 (L106), E-03 (L150) | ○ |
| C-80 | UT-RNG-080: minブロック付き | E-02 (L105-107), E-03 (L153-161) | ○ |
| C-81 | UT-RNG-081: minブロック付きペア順序 | E-02 (L105-107), E-03 (L164-169) | ○ |
| C-82 | UT-RNG-082: minブロック戻り値 | E-02 (L105-107), E-03 (L172) | ○ |
| C-83 | UT-RNG-083: minブロック付き逆転範囲 | E-02 (L105-107, L113), E-03 (L175) | ○ |
| C-84 | UT-RNG-084: minブロック付き空排他範囲 | E-02 (L105-107, L114), E-03 (L176) | ○ |
| C-85 | UT-RNG-085: overlap?重複なし（左側） | E-02 (L134-153), E-03 (L180) | ○ |
| C-86 | UT-RNG-086: overlap?排他隣接 | E-02 (L134-153), E-03 (L181) | ○ |
| C-87 | UT-RNG-087: overlap?端点重複 | E-02 (L134-153), E-03 (L182) | ○ |
| C-88 | UT-RNG-088: overlap?完全重複 | E-02 (L134-153), E-03 (L183) | ○ |
| C-89 | UT-RNG-089: overlap?終端重複 | E-02 (L134-153), E-03 (L184) | ○ |
| C-90 | UT-RNG-090: overlap?重複なし（右側） | E-02 (L134-153), E-03 (L185) | ○ |
| C-91 | UT-RNG-091: overlap?自身排他隣接 | E-02 (L134-153), E-03 (L186) | ○ |
| C-92 | UT-RNG-092: beginless range overlap? | E-02 (L134-153), E-03 (L188) | ○ |
| C-93 | UT-RNG-093: 排他beginless range overlap? | E-02 (L134-153), E-03 (L189) | ○ |
| C-94 | UT-RNG-094: beginless range端点重複 | E-02 (L134-153), E-03 (L190) | ○ |
| C-95 | UT-RNG-095: beginless range同士 | E-02 (L134-153), E-03 (L191) | ○ |
| C-96 | UT-RNG-096: beginless range重複なし | E-02 (L134-153), E-03 (L192) | ○ |
| C-97 | UT-RNG-097: 排他beginless range隣接 | E-02 (L134-153), E-03 (L193) | ○ |
| C-98 | UT-RNG-098: endless range重複なし（左） | E-02 (L134-153), E-03 (L195) | ○ |
| C-99 | UT-RNG-099: endless range排他隣接 | E-02 (L134-153), E-03 (L196) | ○ |
| C-100 | UT-RNG-100: endless vs beginless端点 | E-02 (L134-153), E-03 (L197) | ○ |
| C-101 | UT-RNG-101: endless range重複 | E-02 (L134-153), E-03 (L198) | ○ |
| C-102 | UT-RNG-102: endless range同士 | E-02 (L134-153), E-03 (L201) | ○ |
| C-103 | UT-RNG-103: overlap?非Range引数（整数） | E-02 (L135), E-03 (L209) | ○ |
| C-104 | UT-RNG-104: overlap?非Range引数（nil） | E-02 (L135), E-03 (L210) | ○ |
| C-105 | UT-RNG-105: r_less a < b | E-01 (L7-20) | ○ |
| C-106 | UT-RNG-106: r_less a == b 包含 | E-01 (L14-15) | ○ |
| C-107 | UT-RNG-107: r_less a == b 排他 | E-01 (L14-15) | ○ |
| C-108 | UT-RNG-108: r_less a > b | E-01 (L12-13) | ○ |
| C-109 | UT-RNG-109: r_less比較不能 | E-01 (L11-13) | ○ |

## 4) 不足情報（Unknown / Missing）
- UT-RNG-042 (first(0)): ソースコード上のループ条件`n <= 0`から空配列が返ることは推測可能だが、既存テストファイルに明示的なテストケースがない
  - 候補：テストファイルへの追加 / CRuby仕様書 / Rubyリファレンスマニュアル
- UT-RNG-044 (first引数過多): `args.length == 1`チェックから推測されるが、既存テストに該当ケースなし
  - 候補：テストファイルへの追加 / CRuby仕様書
- UT-RNG-052 (last(0)): `to_a.last(0)`への委譲から空配列が返ることは推測可能だが、既存テストに該当ケースなし
  - 候補：テストファイルへの追加 / Array#lastの仕様確認
- UT-RNG-053 (last負引数): `nv.__to_int`後の`0 <= n`チェックから推測されるが、既存テストに該当ケースなし
  - 候補：テストファイルへの追加 / CRuby仕様書

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - cover?, first, last, max, min, overlap?のほとんどのテストケースはソースコードと既存テストから直接裏付け可能
- 1: 中リスク - `__empty_range?`メソッドは内部メソッドのため、Rubyレベルからの直接テストが困難な可能性がある。overlap?メソッドを通じた間接的なテストが必要
- 1: 中リスク - `r_less`関数は静的関数（C内部）のため、直接のユニットテストは不可能。cover?メソッドを通じた間接テストが必要
- 0: 低リスク - MRB_NO_FLOATコンパイルフラグによるsize関数の分岐は、コンパイル設定に依存するため、テスト環境の設定確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] cover?メソッドの全分岐パス（nil始端/終端、Range引数、非Range引数）が網羅されているか
- [ ] sizeメソッドのFloat有効/無効の両方のパスが考慮されているか
- [ ] first/lastメソッドの引数バリデーション（負数、複数引数、非整数）が十分か
- [ ] max/minメソッドのブロック付き呼び出しの挙動が既存テストと整合しているか
- [ ] overlap?メソッドのbeginless/endless rangeの組み合わせが全パターン網羅されているか
- [ ] __empty_range?とr_lessの内部関数のテストが、公開メソッドを通じて間接的にカバーされているか
- [ ] 根拠なし（△）の4件について、ソースコードの条件分岐からの推測が妥当か確認すること
