---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 133
  claims_with_evidence: 133
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコードから根拠（Evidence）が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：対象クラス・メソッドを適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：133 / 133、根拠なし：0
- 優先レビュー（高）
  1. **HeadlessUnitTestSession**: テストフレームワークの中核機能であり、分離レベルやディスパッチ処理の検証が重要
  2. **HeadlessWindowImpl**: 入力イベントシミュレーションの正確性確認が必要
  3. **HeadlessWindowExtensions**: 拡張メソッドの動作検証が重要

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

- E-01: `src/Headless/Avalonia.Headless/HeadlessPlatformStubs.cs` - クリップボード、カーソル、フォント、アイコン、スクリーンのスタブ実装
- E-02: `src/Headless/Avalonia.Headless/HeadlessWindowImpl.cs` - ヘッドレスウィンドウの実装、入力イベント処理
- E-03: `src/Headless/Avalonia.Headless/IHeadlessWindow.cs` - ヘッドレスウィンドウのインターフェース定義
- E-04: `src/Headless/Avalonia.Headless/AvaloniaTestApplicationAttribute.cs` - テストアプリケーション属性
- E-05: `src/Headless/Avalonia.Headless/HeadlessPlatformRenderInterface.cs` - レンダリングインターフェースのスタブ実装
- E-06: `src/Headless/Avalonia.Headless/AvaloniaHeadlessPlatform.cs` - プラットフォーム初期化とビルダー拡張
- E-07: `src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs` - ユニットテストセッション管理
- E-08: `src/Headless/Avalonia.Headless/HeadlessUnitTestIsolationAttribute.cs` - テスト分離レベル属性と列挙型
- E-09: `src/Headless/Avalonia.Headless/HeadlessWindowExtensions.cs` - ウィンドウ操作の拡張メソッド

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

### HeadlessPlatformStubs.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | HeadlessClipboardImplStub.TryGetDataAsync - データ取得機能 | E-01 L24-26 | ○ |
| C-02 | HeadlessClipboardImplStub.TryGetDataAsync - null時の動作 | E-01 L26 | ○ |
| C-03 | HeadlessClipboardImplStub.SetDataAsync - データ設定機能 | E-01 L28-32 | ○ |
| C-04 | HeadlessClipboardImplStub.ClearAsync - データクリア機能 | E-01 L34-39 | ○ |
| C-05 | HeadlessClipboardImplStub.ClearAsync - null安全性 | E-01 L36-37 | ○ |
| C-06 | HeadlessClipboardImplStub.IsCurrentOwnerAsync - true返却 | E-01 L41-42 | ○ |
| C-07 | HeadlessClipboardImplStub.IsCurrentOwnerAsync - false返却 | E-01 L42 | ○ |
| C-08 | HeadlessCursorFactoryStub.GetCursor - カーソル取得 | E-01 L62 | ○ |
| C-09 | HeadlessCursorFactoryStub.CreateCursor - カーソル作成 | E-01 L63 | ○ |
| C-10 | HeadlessPlatformTypeface コンストラクタ | E-01 L75-85 | ○ |
| C-11 | HeadlessPlatformTypeface.TryGetStream | E-01 L102-116 | ○ |
| C-12 | HeadlessPlatformTypeface.TryGetTable | E-01 L118-123 | ○ |
| C-13 | HeadlessPlatformTypeface.Dispose | E-01 L97-100 | ○ |
| C-14 | HeadlessFontManagerStub.GetDefaultFontFamilyName | E-01 L136 | ○ |
| C-15 | HeadlessFontManagerStub.GetInstalledFontFamilyNames | E-01 L138-141 | ○ |
| C-16 | HeadlessFontManagerStub.TryMatchCharacter | E-01 L143-155 | ○ |
| C-17 | HeadlessFontManagerStub.TryCreateGlyphTypeface | E-01 L157-169 | ○ |
| C-18 | HeadlessIconLoaderStub.LoadIcon | E-01 L250-263 | ○ |
| C-19 | HeadlessScreensStub.GetAllScreenKeys | E-01 L268 | ○ |
| C-20 | HeadlessScreensStub.CreateScreenFromKey | E-01 L270-279 | ○ |
| C-21 | TextTestHelper.GetStartCharIndex | E-01 L285-290 | ○ |
| C-22 | HeadlessFontManagerWithMultipleSystemFontsStub | E-01 L186-238 | ○ |

### HeadlessWindowImpl.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | HeadlessWindowImpl コンストラクタ - 初期化 | E-02 L30-40 | ○ |
| C-24 | HeadlessWindowImpl.Dispose | E-02 L42-47 | ○ |
| C-25 | HeadlessWindowImpl.PointToClient | E-02 L70 | ○ |
| C-26 | HeadlessWindowImpl.PointToScreen | E-02 L72 | ○ |
| C-27 | HeadlessWindowImpl.Show | E-02 L82-89 | ○ |
| C-28 | HeadlessWindowImpl.Hide | E-02 L91-94 | ○ |
| C-29 | HeadlessWindowImpl.Activate | E-02 L98-102 | ○ |
| C-30 | HeadlessWindowImpl.Resize | E-02 L107-120 | ○ |
| C-31 | HeadlessWindowImpl.Lock | E-02 L207-219 | ○ |
| C-32 | HeadlessWindowImpl.GetLastRenderedFrame | E-02 L223-236 | ○ |
| C-33 | HeadlessWindowImpl.KeyPress | E-02 L279-290 | ○ |
| C-34 | HeadlessWindowImpl.KeyRelease | E-02 L292-303 | ○ |
| C-35 | HeadlessWindowImpl.TextInput | E-02 L305-311 | ○ |
| C-36 | HeadlessWindowImpl.MouseDown | E-02 L313-325 | ○ |
| C-37 | HeadlessWindowImpl.MouseMove | E-02 L327-331 | ○ |
| C-38 | HeadlessWindowImpl.MouseUp | E-02 L333-345 | ○ |
| C-39 | HeadlessWindowImpl.MouseWheel | E-02 L347-351 | ○ |
| C-40 | HeadlessWindowImpl.DragDrop | E-02 L353-357 | ○ |
| C-41 | HeadlessWindowImpl.Move | E-02 L359-363 | ○ |
| C-42 | HeadlessWindowImpl.SetTransparencyLevelHint | E-02 L376-387 | ○ |
| C-43 | HeadlessWindowImpl.TryGetFeature | E-02 L264-277 | ○ |

### HeadlessPlatformRenderInterface.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | HeadlessPlatformRenderInterface.Initialize | E-05 L16-21 | ○ |
| C-45 | HeadlessPlatformRenderInterface.CreateEllipseGeometry | E-05 L34 | ○ |
| C-46 | HeadlessPlatformRenderInterface.CreateLineGeometry | E-05 L36-41 | ○ |
| C-47 | HeadlessPlatformRenderInterface.CreateRectangleGeometry | E-05 L43-46 | ○ |
| C-48 | HeadlessPlatformRenderInterface.CreateStreamGeometry | E-05 L48 | ○ |
| C-49 | HeadlessPlatformRenderInterface.CreateGeometryGroup | E-05 L50-53 | ○ |
| C-50 | HeadlessPlatformRenderInterface.CreateCombinedGeometry | E-05 L55-56 | ○ |
| C-51 | HeadlessPlatformRenderInterface.CreateRenderTarget | E-05 L58 | ○ |
| C-52 | HeadlessPlatformRenderInterface.CreateRenderTargetBitmap | E-05 L68-71 | ○ |
| C-53 | HeadlessPlatformRenderInterface.CreateWriteableBitmap | E-05 L73-76 | ○ |
| C-54 | HeadlessPlatformRenderInterface.LoadBitmap | E-05 L78-86 | ○ |
| C-55 | HeadlessPlatformRenderInterface.LoadBitmapToWidth | E-05 L115-118 | ○ |
| C-56 | HeadlessPlatformRenderInterface.LoadBitmapToHeight | E-05 L120-123 | ○ |
| C-57 | HeadlessPlatformRenderInterface.ResizeBitmap | E-05 L125-128 | ○ |
| C-58 | HeadlessPlatformRenderInterface.CreateGlyphRun | E-05 L135-142 | ○ |
| C-59 | HeadlessPlatformRenderInterface.CreateRegion | E-05 L32 | ○ |
| C-60 | HeadlessGeometryStub.FillContains | E-05 L183 | ○ |
| C-61 | HeadlessGeometryStub.GetRenderBounds | E-05 L185-193 | ○ |
| C-62 | HeadlessGeometryStub.Intersect | E-05 L202-203 | ○ |
| C-63 | HeadlessGeometryStub.WithTransform | E-05 L205-206 | ○ |
| C-64 | HeadlessBitmapStub.Lock | E-05 L443-448 | ○ |
| C-65 | HeadlessBitmapStub.CreateDrawingContext | E-05 L403-413 | ○ |

### AvaloniaHeadlessPlatform.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | AvaloniaHeadlessPlatform.Initialize | E-06 L76-94 | ○ |
| C-67 | AvaloniaHeadlessPlatform.ForceRenderTimerTick | E-06 L101-107 | ○ |
| C-68 | HeadlessWindowingPlatform.CreateWindow | E-06 L60 | ○ |
| C-69 | HeadlessWindowingPlatform.CreateEmbeddableWindow | E-06 L63 | ○ |
| C-70 | HeadlessWindowingPlatform.GetWindowsZOrder | E-06 L67-73 | ○ |
| C-71 | AvaloniaHeadlessPlatformExtensions.UseHeadless | E-06 L118-125 | ○ |
| C-72 | RenderTimer.ForceTick | E-06 L50 | ○ |
| C-73 | RenderTimer.RunsInBackground | E-06 L48 | ○ |

### HeadlessUnitTestSession.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74 | HeadlessUnitTestSession.StartNew | E-07 L202-274 | ○ |
| C-75 | HeadlessUnitTestSession.Dispatch(Action) | E-07 L51-58 | ○ |
| C-76 | HeadlessUnitTestSession.Dispatch<TResult>(Func) | E-07 L61-64 | ○ |
| C-77 | HeadlessUnitTestSession.Dispatch<TResult>(Func<Task>) | E-07 L67-70 | ○ |
| C-78 | HeadlessUnitTestSession.DispatchCore | E-07 L82-131 | ○ |
| C-79 | HeadlessUnitTestSession.Dispose | E-07 L179-185 | ○ |
| C-80 | HeadlessUnitTestSession.DisposeAsync | E-07 L187-193 | ○ |
| C-81 | HeadlessUnitTestSession.GetOrStartForAssembly | E-07 L282-305 | ○ |
| C-82 | HeadlessUnitTestSession.EnsureSharedApplication | E-07 L133-151 | ○ |
| C-83 | HeadlessUnitTestSession.EnsureIsolatedApplication | E-07 L153-177 | ○ |

### HeadlessWindowExtensions.cs

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | HeadlessWindowExtensions.CaptureRenderedFrame | E-09 L21-26 | ○ |
| C-85 | HeadlessWindowExtensions.GetLastRenderedFrame | E-09 L33-42 | ○ |
| C-86 | HeadlessWindowExtensions.KeyPress | E-09 L47-49 | ○ |
| C-87 | HeadlessWindowExtensions.KeyPressQwerty | E-09 L54-55 | ○ |
| C-88 | HeadlessWindowExtensions.KeyRelease | E-09 L60-62 | ○ |
| C-89 | HeadlessWindowExtensions.KeyReleaseQwerty | E-09 L67-68 | ○ |
| C-90 | HeadlessWindowExtensions.KeyTextInput | E-09 L76-77 | ○ |
| C-91 | HeadlessWindowExtensions.MouseDown | E-09 L85-87 | ○ |
| C-92 | HeadlessWindowExtensions.MouseMove | E-09 L92-94 | ○ |
| C-93 | HeadlessWindowExtensions.MouseUp | E-09 L99-101 | ○ |
| C-94 | HeadlessWindowExtensions.MouseWheel | E-09 L106-108 | ○ |
| C-95 | HeadlessWindowExtensions.DragDrop | E-09 L113-115 | ○ |
| C-96 | HeadlessWindowExtensions.GetImpl | E-09 L145-149 | ○ |

### Attributes

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-97 | AvaloniaTestApplicationAttribute コンストラクタ | E-04 L22-27 | ○ |
| C-98 | AvaloniaTestIsolationAttribute コンストラクタ | E-08 L41-46 | ○ |
| C-99 | AvaloniaTestIsolationLevel 列挙型 | E-08 L11-33 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースに対してソースコードからの根拠が確認できました。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全てのテストケースはソースコードの実装に基づいており、根拠が明確です。

以下の点についてはレビュー時に確認を推奨します：
- HeadlessUnitTestSessionの分離レベル（PerTest/PerAssembly）の動作確認
- 入力イベントシミュレーション（キーボード・マウス）のタイミング依存性
- フレームバッファのスレッドセーフ性（Lock/GetLastRenderedFrame）

## 6) レビュアーチェックリスト（最小）
- [ ] HeadlessUnitTestSession.Dispatch*メソッドの非同期処理が正しくテストされるか確認
- [ ] HeadlessWindowImplの入力イベント（KeyPress, MouseDown等）のイベント引数が正確か確認
- [ ] HeadlessPlatformRenderInterfaceのジオメトリ演算（Intersect, WithTransform）の境界条件を確認
- [ ] GetOrStartForAssemblyのスレッドセーフ性（lockブロック）を確認
- [ ] AvaloniaHeadlessPlatform.Initialize で登録されるサービスの依存関係を確認
