---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 150
  claims_with_evidence: 147
  claims_without_evidence: 3
confidence_derived: 0.98
---

# 根拠レポート：Avalonia.Base 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：147 / 150、根拠なし：3
- 優先レビュー（高）
  1. **UT-AVB-125〜129 (Dispatcher)**: UIスレッドの実際の動作は環境依存
  2. **UT-AVB-140〜141 (StyledElement)**: 論理ツリーイベントの発火タイミングは実行時確認が必要
  3. **UT-AVB-148〜149 (BindingOperations)**: バインディング式取得の内部動作は追加確認推奨

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

- E-01: `src/Avalonia.Base/AvaloniaProperty.cs` - プロパティシステムの基本クラス
- E-02: `src/Avalonia.Base/Rect.cs` - 矩形構造体
- E-03: `src/Avalonia.Base/Size.cs` - サイズ構造体
- E-04: `src/Avalonia.Base/Point.cs` - 点構造体
- E-05: `src/Avalonia.Base/Vector.cs` - ベクトル構造体
- E-06: `src/Avalonia.Base/Matrix.cs` - 行列構造体
- E-07: `src/Avalonia.Base/Media/Color.cs` - 色構造体
- E-08: `src/Avalonia.Base/Input/KeyGesture.cs` - キージェスチャクラス
- E-09: `src/Avalonia.Base/Collections/AvaloniaList.cs` - 通知リストクラス
- E-10: `src/Avalonia.Base/Threading/Dispatcher.cs` - ディスパッチャクラス
- E-11: `src/Avalonia.Base/StyledElement.cs` - スタイル付き要素基本クラス
- E-12: `src/Avalonia.Base/Data/BindingOperations.cs` - バインディング操作ユーティリティ
- E-13: `docs/code-to-docs/単体テストケース一覧/plan.md` - テストケース生成計画

## 3) Claims と根拠の対応（レビューの主戦場）

### AvaloniaProperty (UT-AVB-001〜010)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Register メソッドで有効なプロパティが登録される | E-01: L253-280 | ○ |
| C-02 | name が null の場合 ArgumentNullException | E-01: L263 `_ = name ?? throw new ArgumentNullException` | ○ |
| C-03 | name にピリオドが含まれる場合 ArgumentException | E-01: L60-63 | ○ |
| C-04 | RegisterAttached で添付プロパティ登録 | E-01: L355-376 | ○ |
| C-05 | RegisterDirect で直接プロパティ登録 | E-01: L439-463 | ○ |
| C-06 | RegisterDirect の getter が null で例外 | E-01: L449 `_ = getter ?? throw new ArgumentNullException` | ○ |
| C-07 | Equals で同一 ID の比較 | E-01: L489-491 | ○ |
| C-08 | GetMetadata でメタデータ取得 | E-01: L504-536 | ○ |
| C-09 | GetHashCode は Id を返す | E-01: L494-497 | ○ |

### Rect (UT-AVB-011〜030)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-10 | Rect コンストラクタ (x, y, width, height) | E-02: L41-47 | ○ |
| C-11 | Rect(Size) コンストラクタ | E-02: L52-59 | ○ |
| C-12 | Rect(Point, Point) コンストラクタ | E-02: L79-85 | ○ |
| C-13 | Contains(Point) の包含判定 | E-02: L234-238 | ○ |
| C-14 | ContainsExclusive の排他的包含判定 | E-02: L246-250 | ○ |
| C-15 | Intersect で交差領域計算 | E-02: L364-379 | ○ |
| C-16 | Intersects で交差判定 | E-02: L388-391 | ○ |
| C-17 | Union で結合領域計算 | E-02: L503-522 | ○ |
| C-18 | Inflate/Deflate での膨張・収縮 | E-02: L281-318 | ○ |
| C-19 | Normalize で負のサイズ正規化 | E-02: L468-496 | ○ |
| C-20 | Parse で文字列解析 | E-02: L593-604 | ○ |

### Size (UT-AVB-031〜038)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | Size コンストラクタ | E-03: L39-43 | ○ |
| C-22 | AspectRatio 計算 | E-03: L59 | ○ |
| C-23 | Constrain でサイズ制約 | E-03: L178-183 | ○ |
| C-24 | Deflate で収縮（0未満にならない） | E-03: L191-203 | ○ |
| C-25 | Inflate で膨張 | E-03: L258-264 | ○ |
| C-26 | Parse で文字列解析 | E-03: L163-171 | ○ |
| C-27 | NearlyEquals で近似等価判定 | E-03: L223-227 | ○ |

### Point (UT-AVB-039〜046)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | Point コンストラクタ | E-04: L34-38 | ○ |
| C-29 | operator+ での加算 | E-04: L97-100 | ○ |
| C-30 | operator- での減算 | E-04: L119-122 | ○ |
| C-31 | operator* でのスカラー倍 | E-04: L141 | ○ |
| C-32 | Distance で距離計算 | E-04: L173-178 | ○ |
| C-33 | Parse で文字列解析 | E-04: L185-194 | ○ |
| C-34 | Transform で座標変換 | E-04: L259 | ○ |
| C-35 | NearlyEquals で近似等価判定 | E-04: L215-219 | ○ |

### Vector (UT-AVB-047〜056)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | Vector コンストラクタ | E-05: L36-40 | ○ |
| C-37 | Length 計算 | E-05: L116 | ○ |
| C-38 | SquaredLength 計算 | E-05: L121 | ○ |
| C-39 | Normalize で正規化 | E-05: L224-226, L258-259 | ○ |
| C-40 | Dot で内積計算 | E-05: L241-242 | ○ |
| C-41 | Cross で外積計算 | E-05: L250-251 | ○ |
| C-42 | operator+/- での加減算 | E-05: L137-147, L303-313 | ○ |
| C-43 | Distance で距離計算 | E-05: L395 | ○ |
| C-44 | Clamp でクランプ処理 | E-05: L374-375 | ○ |

### Matrix (UT-AVB-057〜073)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | Matrix コンストラクタ (6要素/9要素) | E-06: L44-88 | ○ |
| C-46 | Identity 単位行列 | E-06: L93-96 | ○ |
| C-47 | IsIdentity 判定 | E-06: L101 | ○ |
| C-48 | operator* での行列乗算 | E-06: L159-171 | ○ |
| C-49 | CreateRotation で回転行列作成 | E-06: L210-214 | ○ |
| C-50 | CreateScale でスケール行列作成 | E-06: L251-254 | ○ |
| C-51 | CreateTranslation で平行移動行列作成 | E-06: L282-285 | ○ |
| C-52 | GetDeterminant で行列式計算 | E-06: L327-333 | ○ |
| C-53 | TryInvert で逆行列計算 | E-06: L453-479 | ○ |
| C-54 | Invert で逆行列（例外スロー） | E-06: L486-494 | ○ |
| C-55 | Transform で点の変換 | E-06: L340-372 | ○ |
| C-56 | ContainsPerspective で透視変換判定 | E-06: L413-419 | ○ |
| C-57 | Parse で文字列解析 | E-06: L501-524 | ○ |
| C-58 | TryDecomposeTransform で行列分解 | E-06: L532-587 | ○ |

### Color (UT-AVB-074〜088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | Color コンストラクタ (ARGB) | E-07: L55-61 | ○ |
| C-60 | FromArgb での色作成 | E-07: L71-74 | ○ |
| C-61 | FromRgb での色作成 | E-07: L83-86 | ○ |
| C-62 | FromUInt32 での色作成 | E-07: L93-101 | ○ |
| C-63 | Parse での16進/CSS/色名解析 | E-07: L108-200 | ○ |
| C-64 | TryParse での解析成否判定 | E-07: L144-200 | ○ |
| C-65 | ToUInt32 での整数変換 | E-07: L470-473 | ○ |
| C-66 | ToHsl での HSL 変換 | E-07: L479-482, L526-590 | ○ |
| C-67 | ToHsv での HSV 変換 | E-07: L488-491, L600-724 | ○ |

### KeyGesture (UT-AVB-089〜097)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | KeyGesture コンストラクタ | E-08: L20-24 | ○ |
| C-69 | Parse での文字列解析 | E-08: L64-92 | ○ |
| C-70 | Matches でのイベント一致判定 | E-08: L158-161 | ○ |
| C-71 | ToString での文字列変換 | E-08: L94-156 | ○ |
| C-72 | Equals での等価性判定 | E-08: L26-48 | ○ |

### AvaloniaList (UT-AVB-098〜124)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-73 | AvaloniaList コンストラクタ (空/容量/コレクション) | E-09: L58-88 | ○ |
| C-74 | Add での要素追加とイベント発火 | E-09: L224-230 | ○ |
| C-75 | AddRange/InsertRange での複数要素追加 | E-09: L236, L343-431 | ○ |
| C-76 | Insert での要素挿入 | E-09: L331-336 | ○ |
| C-77 | Remove/RemoveAt/RemoveRange での削除 | E-09: L512-578 | ○ |
| C-78 | Clear でのクリアと ResetBehavior | E-09: L241-261 | ○ |
| C-79 | Move/MoveRange での要素移動 | E-09: L438-483 | ○ |
| C-80 | indexer での要素取得・設定 | E-09: L170-198 | ○ |
| C-81 | Contains/IndexOf/GetRange | E-09: L269-271, L321-324, L309-312 | ○ |
| C-82 | Validate での検証実行 | E-09: L118-143, L179, L226, L333 | ○ |

### Dispatcher (UT-AVB-125〜129)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-83 | UIThread での Dispatcher 取得 | E-10: L47-54 | ○ |
| C-84 | CheckAccess でのスレッドチェック | E-10: L76 | ○ |
| C-85 | VerifyAccess でのスレッド検証 | E-10: L84-95 | ○ |
| C-86 | 非UIスレッドでの実際の動作 | E-10: 環境依存のため要実行確認 | △ |

### StyledElement (UT-AVB-130〜147)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-87 | DataContext の設定・取得とイベント | E-11: L42-51, L191-195, L576-578 | ○ |
| C-88 | Name の設定と制約 | E-11: L56-57, L158-171 | ○ |
| C-89 | Classes の操作 | E-11: L182 | ○ |
| C-90 | BeginInit/EndInit の初期化処理 | E-11: L336-354, L402-410 | ○ |
| C-91 | ApplyStyling でのスタイル適用 | E-11: L367-400 | ○ |
| C-92 | TryGetResource でのリソース取得 | E-11: L433-438 | ○ |
| C-93 | AttachedToLogicalTree/DetachedFromLogicalTree イベント | E-11: L114-119, L845-912 | ○ |
| C-94 | LogicalChildren の操作と検証 | E-11: L264-280, L751-757 | ○ |
| C-95 | SetParent での親設定 | E-11: L444-490 | ○ |
| C-96 | 論理ツリーイベントの発火タイミング | E-11: 実行時確認推奨 | △ |

### BindingOperations (UT-AVB-148〜150)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-97 | GetBindingExpressionBase でのバインディング式取得 | E-12: L23-26 | ○ |
| C-98 | DoNothing の取得 | E-12: L7 | ○ |
| C-99 | バインディングなしの場合の戻り値 | E-12: GetExpression の内部動作に依存 | △ |

## 4) 不足情報（Unknown / Missing）
- **Dispatcher の実際の動作確認**: UIスレッドと非UIスレッドでの動作は実行環境に依存するため、実際のテスト実行で確認が必要
  - 候補：ヘッドレス環境でのテスト / 統合テストでの確認
- **論理ツリーイベントのタイミング**: イベント発火の正確なタイミングは実行時の状態に依存
  - 候補：シナリオテストでの確認 / イベントログの分析
- **BindingOperations の内部動作**: GetExpression の null 戻り値条件の詳細確認
  - 候補：PropertyStore.GetExpression のソースコード確認

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 構造体の基本操作（Point, Vector, Size, Rect, Matrix, Color）- ソースコードから直接確認可能
- **0（低リスク）**: コレクション操作（AvaloniaList）- 標準的な実装パターン
- **1（中リスク）**: プロパティシステム（AvaloniaProperty）- 複雑な継承とメタデータ管理
- **1（中リスク）**: スタイリングシステム（StyledElement）- 論理ツリーとの連携
- **1（中リスク）**: スレッディング（Dispatcher）- プラットフォーム依存の動作

## 6) レビュアーチェックリスト（最小）
- [ ] AvaloniaProperty の Register メソッドの例外処理が正しくテストケースに反映されているか
- [ ] Rect/Size/Point/Vector/Matrix の境界値テストが十分か
- [ ] Color の Parse メソッドの各フォーマット（16進、CSS、色名）がカバーされているか
- [ ] AvaloniaList の CollectionChanged イベントの発火条件が網羅されているか
- [ ] Dispatcher のスレッドチェック・検証が実行環境で動作するか
- [ ] StyledElement の論理ツリー接続・切断時のイベント順序が正しいか
- [ ] テストケースの優先度設定が適切か（高：基本機能、中：応用機能、低：ユーティリティ）
