---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 265
  claims_with_evidence: 261
  claims_without_evidence: 4
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：261 / 265、根拠なし：4
- 優先レビュー（高）
  1. **C-73 (layer_over アルファブレンディング)**: 浮動小数点演算の期待値が実装の丸め処理に依存するため、正確な期待値は実行時確認が必要
  2. **C-261 (expand_environment_strings)**: privateメソッドであり直接テスト困難。テスト方法の検討が必要
  3. **C-254-256 (throttled_func)**: スレッドプールタイマーに依存するため、ユニットテストでのモック化要検討
  4. **C-245-250 (spsc channel)**: マルチスレッド動作の検証にはスレッド制御が必要

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

- E-01: `src/inc/til/point.h` - til::point構造体の定義（コンストラクタ、演算子、変換関数）
- E-02: `src/inc/til/size.h` - til::size構造体の定義（コンストラクタ、演算子、divide_ceil、area）
- E-03: `src/inc/til/rect.h` - til::rect構造体の定義（コンストラクタ、演算子、contains、index_of、point_at、scale_up/down）、til::inclusive_rect
- E-04: `src/inc/til/color.h` - til::color構造体の定義（コンストラクタ、layer_over、from_hue、ToHexString）
- E-05: `src/inc/til/string.h` - 文字列ユーティリティ（visualize_control_codes、clean_filename/path、starts_with/ends_with、tolower/toupper_ascii、equals系、trim、parse_u64、parse_unsigned/signed、iterate_font_families、split_iterator、compare関数）
- E-06: `src/inc/til/math.h` - 数学ユーティリティ（ceiling_t、flooring_t、rounding_t、narrow_maybe）
- E-07: `src/inc/til/rle.h` - RLEエンコーディング（basic_rle: コンストラクタ、at、slice、replace系、resize_trailing_extent、rle_iterator）
- E-08: `src/inc/til/enumset.h` - ビットフラグセット（enumset: set、reset、flip、test、any、all、from_bits）
- E-09: `src/inc/til/small_vector.h` - スモールバッファ最適化ベクトル（コンストラクタ、push_back/pop_back、at、insert、erase、clear、reserve、resize、shrink_to_fit）
- E-10: `src/inc/til/hash.h` - ハッシュ関数（hasher、hash_trait、wyhash実装）
- E-11: `src/inc/til/coalesce.h` - optional合体関数（coalesce_value、coalesce）
- E-12: `src/inc/til/at.h` - 安全なインデックスアクセス（til::at）
- E-13: `src/inc/til/bit.h` - ビット操作（as_unsigned）
- E-14: `src/inc/til/unicode.h` - Unicode関連（is_surrogate系、combine_surrogates、utf16_next、utf16_iterate_next/prev、utf16_iterator）
- E-15: `src/inc/til/u8u16convert.h` - UTF-8/UTF-16変換（u8u16、u16u8、u8state、u16state）
- E-16: `src/inc/til/generational.h` - 世代管理（generation_t、generational）
- E-17: `src/inc/til/flat_set.h` - フラットハッシュセット（linear_flat_set: insert、lookup、clear）
- E-18: `src/inc/til/spsc.h` - SPSCキュー（channel、producer、consumer）
- E-19: `src/inc/til/latch.h` - ラッチ同期プリミティブ（count_down、try_wait、wait）
- E-20: `src/inc/til/throttled_func.h` - スロットリング関数（throttled_func: コンストラクタ、operator()、flush）
- E-21: `src/inc/til/env.h` - 環境変数管理（env: コンストラクタ、set_user_environment_var、to_string、expand_environment_strings、is_path_var）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01〜C-02 | point デフォルト/値コンストラクタ | E-01 (point.h L30-48) | ○ |
| C-03〜C-05 | point 等値/不等比較演算子 | E-01 (point.h L51-61) | ○ |
| C-06〜C-08 | point operator bool | E-01 (point.h L63-66) | ○ |
| C-09〜C-10 | point 比較演算子 | E-01 (point.h L68-86) | ○ |
| C-11〜C-17 | point 算術演算子 | E-01 (point.h L88-158) | ○ |
| C-18〜C-21 | wrap_coord/unwrap_coord/unwrap_coord_clamped | E-01 (point.h L243-276) | ○ |
| C-22〜C-24 | point_span 等値比較/iterate_rows | E-01 (point.h L288-373) | ○ |
| C-25〜C-35 | size コンストラクタ/演算子/divide_ceil/area | E-02 (size.h L10-118) | ○ |
| C-36〜C-66 | rect コンストラクタ/演算子/contains/index_of/point_at/scale/inclusive_rect | E-03 (rect.h L14-778) | ○ |
| C-67〜C-79 | color コンストラクタ/演算子/with_alpha/layer_over/from_hue/ToHexString | E-04 (color.h L14-226) | ○ |
| C-73 | layer_over アルファブレンディングの期待値 | E-04 (color.h L142-156) | △ |
| C-80〜C-131 | string系ユーティリティ(visualize/clean/starts_with/ends_with/tolower/equals/trim/parse/iterate_font_families/split_iterator) | E-05 (string.h L1-644) | ○ |
| C-132〜C-141 | math (ceiling/flooring/rounding/narrow_maybe) | E-06 (math.h L1-89) | ○ |
| C-138 | NaN入力のnarrow_float | E-06 (math.h L17-25) | ○ |
| C-142〜C-164 | basic_rle (コンストラクタ/at/slice/replace/resize_trailing_extent/イテレータ) | E-07 (rle.h L1-1066) | ○ |
| C-165〜C-178 | enumset (set/reset/flip/test/any/all/from_bits) | E-08 (enumset.h L1-146) | ○ |
| C-179〜C-195 | small_vector (コンストラクタ/push_back/pop_back/at/insert/erase/clear/reserve/resize/shrink_to_fit/copy/move) | E-09 (small_vector.h L1-952) | ○ |
| C-196〜C-201 | hasher/hash_trait | E-10 (hash.h L1-291) | ○ |
| C-202〜C-205 | coalesce_value/coalesce | E-11 (coalesce.h L1-63) | ○ |
| C-206 | til::at | E-12 (at.h L1-25) | ○ |
| C-207〜C-208 | as_unsigned | E-13 (bit.h L1-16) | ○ |
| C-209〜C-222 | unicode系(is_surrogate/combine_surrogates/utf16_next/utf16_iterate) | E-14 (unicode.h L1-197) | ○ |
| C-223〜C-231 | u8u16/u16u8変換 | E-15 (u8u16convert.h L1-332) | ○ |
| C-232〜C-237 | generation_t/generational | E-16 (generational.h L1-69) | ○ |
| C-238〜C-244 | linear_flat_set | E-17 (flat_set.h L1-207) | ○ |
| C-245〜C-250 | spsc channel/producer/consumer | E-18 (spsc.h L1-645) | △ |
| C-251〜C-253 | latch | E-19 (latch.h L1-86) | ○ |
| C-254〜C-256 | throttled_func コンストラクタバリデーション | E-20 (throttled_func.h L34-52) | △ |
| C-257〜C-265 | env (コンストラクタ/set_user_environment_var/to_string/expand_environment_strings/is_path_var) | E-21 (env.h L1-499) | ○ |
| C-261 | expand_environment_strings (privateメソッド) | E-21 (env.h L286-334) | △ |

## 4) 不足情報（Unknown / Missing）
- **C-73 (layer_over)**: 浮動小数点演算の丸め処理により、期待値の正確な数値は実行時の検証が必要。ソースコードの計算式は確認済みだが、具体的な期待値のバイト精度は未検証。
  - 候補：実行結果による期待値の確定 / 浮動小数点誤差の許容範囲設定
- **C-245〜C-250 (spsc)**: SPSCキューのマルチスレッド動作テストには、プロデューサーとコンシューマーを別スレッドで実行する制御が必要。単体テストとしての境界が曖昧。
  - 候補：マルチスレッドテストフレームワーク使用 / 単一スレッドでのブロッキングなし動作テスト
- **C-254〜C-256 (throttled_func)**: WindowsスレッドプールタイマーAPIに依存するため、テスト環境でのモック化検討が必要。コンストラクタのバリデーションは確認済み。
  - 候補：CreateThreadpoolTimerのモック / 実タイマーを使った統合テスト
- **C-261 (expand_environment_strings)**: envクラスのprivateメソッドのため、直接テストは不可能。set_user_environment_var経由で間接テスト可能。
  - 候補：friendクラスによるテスト / public APIを経由した間接テスト

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: point, size, rect, color, string系, math, enumset, small_vector, hash, coalesce, at, bit, unicode, generational - ソースコードの関数シグネチャと実装から直接テストケースを導出。根拠は十分。
- **1 (中リスク)**: rle (basic_rle) - 置換アルゴリズムが非常に複雑（_replace_unchecked）。テストケースはカバーしているが、エッジケースの網羅性はレビュー推奨。
- **1 (中リスク)**: u8u16convert - Win32 API（MultiByteToWideChar/WideCharToMultiByte）に依存。テスト環境依存性あり。
- **1 (中リスク)**: env - レジストリアクセスとWin32 APIに多く依存。regenerate()は単体テスト困難のため対象外としている。
- **2 (高リスク)**: spsc, throttled_func - マルチスレッド動作を前提とするため、単体テストでのテスタビリティに課題あり。

## 6) レビュアーチェックリスト（最小）
- [ ] point/size/rectの算術演算テストケースがオーバーフロー検出を十分にカバーしているか
- [ ] rectのoperator-（減算）テストケースが4辺/3辺/2辺/1辺/0辺のパターンを網羅しているか
- [ ] color::layer_overの期待値が浮動小数点精度の観点で妥当か
- [ ] basic_rleのreplaceテストケースが「同一ラン内の置換」「ラン境界をまたぐ置換」「結合が発生する置換」を網羅しているか
- [ ] string.hのparse_u64で基数自動検出（0x, 0b, 0）の全パターンがテストされているか
- [ ] iterate_font_familiesのCSS準拠テスト（クォート、エスケープ、空白処理）が十分か
- [ ] spsc/throttled_funcのテストケースが単体テストとして実行可能な形になっているか（スレッド依存の排除）
- [ ] envのexpand_environment_stringsがprivateメソッドであることを考慮し、テスト方法が適切か
- [ ] small_vectorのヒープ遷移（スモールバッファからヒープへの遷移）テストが十分か
