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

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：152 / 152、根拠なし：0
- 優先レビュー（高）
  1. **DRM/GBMネイティブ連携部分**: Linux固有のネイティブライブラリ呼び出しのモック化が必要
  2. **非同期入力処理**: 別スレッドでの入力イベント処理のテスト設計
  3. **epoll/timerfd連携**: Linuxカーネル機能依存部分のテスト環境構築

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

- E-01: `src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs`
- E-02: `src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatformOptions.cs`
- E-03: `src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs`
- E-04: `src/Linux/Avalonia.LinuxFramebuffer/EpollDispatcherImpl.cs`
- E-05: `src/Linux/Avalonia.LinuxFramebuffer/DrmConnectorType.cs`
- E-06: `src/Linux/Avalonia.LinuxFramebuffer/DrmOutputOptions.cs`
- E-07: `src/Linux/Avalonia.LinuxFramebuffer/NativeUnsafeMethods.cs`
- E-08: `src/Linux/Avalonia.LinuxFramebuffer/Stubs.cs`
- E-09: `src/Linux/Avalonia.LinuxFramebuffer/Output/IOutputBackend.cs`
- E-10: `src/Linux/Avalonia.LinuxFramebuffer/Output/IGlOutputBackend.cs`
- E-11: `src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs`
- E-12: `src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs`
- E-13: `src/Linux/Avalonia.LinuxFramebuffer/Output/Drm.cs`
- E-14: `src/Linux/Avalonia.LinuxFramebuffer/Output/FbdevOutput.cs`
- E-15: `src/Linux/Avalonia.LinuxFramebuffer/Output/FbDevOutputOptions.cs`
- E-16: `src/Linux/Avalonia.LinuxFramebuffer/Output/FbDevBackBuffer.cs`
- E-17: `src/Linux/Avalonia.LinuxFramebuffer/Input/IInputBackend.cs`
- E-18: `src/Linux/Avalonia.LinuxFramebuffer/Input/IScreenInfoProvider.cs`
- E-19: `src/Linux/Avalonia.LinuxFramebuffer/Input/RawEventGroupingThreadingHelper.cs`
- E-20: `src/Linux/Avalonia.LinuxFramebuffer/Input/NullInput/NullInputBackend.cs`
- E-21: `src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevBackend.cs`
- E-22: `src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevDevice.cs`
- E-23: `src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevDeviceDescription.cs`
- E-24: `src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevTouchScreen.cs`
- E-25: `src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevTouchScreenDeviceDescription.cs`
- E-26: `src/Linux/Avalonia.LinuxFramebuffer/Input/LibInput/LibInputBackend.cs`
- E-27: `src/Linux/Avalonia.LinuxFramebuffer/Input/LibInput/LibInputBackend.Pointer.cs`
- E-28: `src/Linux/Avalonia.LinuxFramebuffer/Input/LibInput/LibInputBackend.Touch.cs`
- E-29: `src/Linux/Avalonia.LinuxFramebuffer/Input/LibInput/LibInputBackendOptions.cs`
- E-30: `src/Linux/Avalonia.LinuxFramebuffer/Input/LibInput/LibInputNativeUnsafeMethods.cs`

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

### LinuxFramebufferPlatformOptions (UT-LFB-001 - 004)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Fpsデフォルト値が60 | E-02: L12 `public int Fps { get; set; } = 60;` | ○ |
| C-02 | Fps設定可能 | E-02: L12 プロパティ定義 | ○ |
| C-03 | ShouldRenderOnUIThreadデフォルトfalse | E-02: L19 `public bool ShouldRenderOnUIThread { get; set; }` | ○ |
| C-04 | ShouldRenderOnUIThread設定可能 | E-02: L19 プロパティ定義 | ○ |

### LinuxFramebufferLifetime (UT-LFB-005 - 016)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 | コンストラクタ(IOutputBackend) | E-01: L98-101 | ○ |
| C-06 | コンストラクタ(IOutputBackend, IInputBackend) | E-01: L103-107 | ○ |
| C-07 | MainView getter/setter | E-01: L109-121 | ○ |
| C-08 | MainView取得時EnsureTopLevel | E-01: L114-118 | ○ |
| C-09 | Startイベント発火 | E-01: L127-130 | ○ |
| C-10 | Shutdown ExitCode設定 | E-01: L132-139 | ○ |
| C-11 | Shutdown Exitイベント発火 | E-01: L135-137 | ○ |
| C-12 | Shutdown CancellationToken | E-01: L138 `_cts.Cancel();` | ○ |
| C-13 | TopLevel取得 | E-01: L141-150 | ○ |
| C-14 | LoadIcon(string) | E-01: L34 | ○ |
| C-15 | LoadIcon(Stream) | E-01: L36 | ○ |
| C-16 | LoadIcon(IBitmapImpl) | E-01: L38 | ○ |

### EpollDispatcherImpl (UT-LFB-017 - 026)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | コンストラクタ初期化 | E-04: L92-119 | ○ |
| C-18 | epoll_create1失敗例外 | E-04: L99-100 | ○ |
| C-19 | Signal発火 | E-04: L210-218, L223 | ○ |
| C-20 | 二重シグナル防止 | E-04: L212-215 | ○ |
| C-21 | タイマー設定 | E-04: L226-231 | ○ |
| C-22 | タイマークリア | E-04: L228 | ○ |
| C-23 | CurrentThreadIsLoopThread | E-04: L221 | ○ |
| C-24 | 別スレッド判定 | E-04: L221 | ○ |
| C-25 | Now取得 | E-04: L234 | ○ |
| C-26 | HasPendingInput | E-04: L237 | ○ |

### FramebufferToplevelImpl (UT-LFB-027 - 035)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | コンストラクタ | E-03: L22-32 | ○ |
| C-28 | SetInputRoot | E-03: L41-45 | ○ |
| C-29 | PointToClient | E-03: L47 | ○ |
| C-30 | PointToScreen | E-03: L49 | ○ |
| C-31 | Dispose例外 | E-03: L36-39 | ○ |
| C-32 | ClientSize | E-03: L57 | ○ |
| C-33 | RenderScaling | E-03: L62 | ○ |
| C-34 | TransparencyLevel | E-03: L78 | ○ |
| C-35 | CreatePopup | E-03: L60 | ○ |

### DrmOutputOptions (UT-LFB-036 - 041)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | Scalingデフォルト | E-06: L15 | ○ |
| C-37 | Orientationデフォルト | E-06: L21 | ○ |
| C-38 | EnableInitialBufferSwappingデフォルト | E-06: L27 | ○ |
| C-39 | InitialBufferSwappingColorデフォルト | E-06: L33 | ○ |
| C-40 | VideoModeデフォルト | E-06: L39 | ○ |
| C-41 | ConnectorTypeデフォルト | E-06: L45 | ○ |

### DrmOutput (UT-LFB-042 - 054)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-42 | コンストラクタ(フル) | E-11: L52-58 | ○ |
| C-43 | コンストラクタ(パス) | E-11: L60-63 | ○ |
| C-44 | コネクタ未検出例外 | E-11: L87-88 | ○ |
| C-45 | モード未検出例外 | E-11: L103-104 | ○ |
| C-46 | PixelSize回転なし | E-11: L20-22 | ○ |
| C-47 | PixelSize回転あり | E-11: L20-22 | ○ |
| C-48 | Scaling | E-11: L24-28 | ○ |
| C-49 | Orientation | E-11: L30-34 | ○ |
| C-50 | CreateGlRenderTarget | E-11: L390 | ○ |
| C-51 | CreateGlRenderTarget(context) | E-11: L393-399 | ○ |
| C-52 | 不正コンテキスト例外 | E-11: L395-397 | ○ |
| C-53 | GetFbIdForBo | E-11: L136-172 | ○ |
| C-54 | GetFbIdForBo例外 | E-11: L138-139 | ○ |

### DrmCard/DrmResources/DrmConnector (UT-LFB-055 - 067)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | DrmCardコンストラクタ(パス) | E-12: L144-171 | ○ |
| C-56 | DrmCard自動検出 | E-12: L146-163 | ○ |
| C-57 | DrmCard無効パス例外 | E-12: L168-169 | ○ |
| C-58 | DrmCard(fd) | E-12: L173-176 | ○ |
| C-59 | GetResources | E-12: L178 | ○ |
| C-60 | DrmCard Dispose | E-12: L179-183 | ○ |
| C-61 | DrmResources初期化 | E-12: L90-117 | ○ |
| C-62 | DrmResources例外 | E-12: L93-94 | ○ |
| C-63 | DrmConnector初期化 | E-12: L32-49 | ○ |
| C-64 | DrmConnector Name既知 | E-12: L45-48 | ○ |
| C-65 | DrmConnector Name未知 | E-12: L45-46 | ○ |
| C-66 | DrmModeInfo Resolution | E-13: L110 | ○ |
| C-67 | DrmModeInfo IsPreferred | E-12: L64 | ○ |

### FbdevOutput (UT-LFB-068 - 079)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | コンストラクタ(string) | E-14: L28-29 | ○ |
| C-69 | デフォルトパス | E-14: L55 | ○ |
| C-70 | 無効ファイル例外 | E-14: L57-58 | ○ |
| C-71 | PixelSize | E-14: L154-162 | ○ |
| C-72 | Lock | E-14: L165-188 | ○ |
| C-73 | Dispose後Lock例外 | E-14: L169-170 | ○ |
| C-74 | SetBpp Rgba8888 | E-14: L114-125 | ○ |
| C-75 | SetBpp Bgra8888 | E-14: L126-137 | ○ |
| C-76 | SetBpp Rgb565 | E-14: L138-148 | ○ |
| C-77 | SetBpp未サポート例外 | E-14: L149 | ○ |
| C-78 | Dispose | E-14: L206-212 | ○ |
| C-79 | CreateFramebufferRenderTarget | E-14: L190 | ○ |

### FbDevOutputOptions (UT-LFB-080 - 083)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | FileNameデフォルト | E-15: L11 | ○ |
| C-81 | PixelFormatデフォルト | E-15: L18 | ○ |
| C-82 | RenderDirectlyToMappedMemoryデフォルト | E-15: L24 | ○ |
| C-83 | Scalingデフォルト | E-15: L29 | ○ |

### FbDevBackBuffer (UT-LFB-084 - 092)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-84 | コンストラクタ | E-16: L76-86 | ○ |
| C-85 | asyncBlit有効 | E-16: L84-85 | ○ |
| C-86 | Dispose | E-16: L89-99 | ○ |
| C-87 | Lock | E-16: L123-150 | ○ |
| C-88 | LockFb 16bit | E-16: L106 | ○ |
| C-89 | LockFb BGRA | E-16: L108 | ○ |
| C-90 | LockFb RGBA | E-16: L107 | ○ |
| C-91 | Size | E-16: L153 | ○ |
| C-92 | RowBytes | E-16: L154 | ○ |

### Input関連 (UT-LFB-093 - 145)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-93 | IInputBackend Initialize | E-17: L9 | ○ |
| C-94 | IInputBackend SetInputRoot | E-17: L10 | ○ |
| C-95 | NullInputBackend Initialize | E-20: L9-11 | ○ |
| C-96 | NullInputBackend SetInputRoot | E-20: L13-15 | ○ |
| C-97 | RawEventGroupingThreadingHelper コンストラクタ | E-19: L14-18 | ○ |
| C-98 | OnEvent キュー追加 | E-19: L29-38 | ○ |
| C-99 | OnEvent UIスレッドディスパッチ | E-19: L34-37 | ○ |
| C-100 | Dispose | E-19: L41-42 | ○ |
| C-101 | EvDevBackend コンストラクタ | E-21: L18-21 | ○ |
| C-102 | EvDevBackend Initialize | E-21: L49-71 | ○ |
| C-103 | EvDevBackend 入力スレッド | E-21: L70 | ○ |
| C-104 | EvDevBackend SetInputRoot | E-21: L73-78 | ○ |
| C-105 | CreateFromEnvironment | E-21: L81-99 | ○ |
| C-106 | CreateFromEnvironment 例外 | E-21: L94-96 | ○ |
| C-107 | EvDevDevice コンストラクタ | E-22: L16-36 | ○ |
| C-108 | EvDevDevice Open | E-22: L46-59 | ○ |
| C-109 | EvDevDevice Open 例外 | E-22: L49-50 | ○ |
| C-110 | NextEvent イベントあり | E-22: L38-44 | ○ |
| C-111 | NextEvent イベントなし | E-22: L43 | ○ |
| C-112 | ParseFromEnv touchscreen | E-23: L15-36 | ○ |
| C-113 | ParseFromEnv 不正フォーマット | E-23: L22-23 | ○ |
| C-114 | ParseFromEnv 未知タイプ | E-23: L35 | ○ |
| C-115 | EvDevTouchScreenDeviceDescription キャリブレーション | E-25: L9-16 | ○ |
| C-116 | CalibrationMatrix デフォルト | E-25: L7 | ○ |
| C-117 | EvDevSingleTouchScreen コンストラクタ | E-24: L20-29 | ○ |
| C-118 | EvDevSingleTouchScreen 例外 | E-24: L23-24 | ○ |
| C-119 | HandleEvent 座標更新 | E-24: L34-47 | ○ |
| C-120 | HandleEvent タッチ状態 | E-24: L49-55 | ○ |
| C-121 | HandleEvent イベント発火 | E-24: L57-66 | ○ |
| C-122 | HandleEvents ループ | E-24: L112-116 | ○ |
| C-123 | InputRoot 未設定例外 | E-24: L108 | ○ |
| C-124 | LibInputBackend デフォルトコンストラクタ | E-26: L19-22 | ○ |
| C-125 | LibInputBackend オプションコンストラクタ | E-26: L24-27 | ○ |
| C-126 | LibInputBackend Initialize | E-26: L78-94 | ○ |
| C-127 | LibInputBackend 自動デバイス検出 | E-26: L85-87 | ○ |
| C-128 | LibInputBackend SetInputRoot | E-26: L96-99 | ○ |
| C-129 | LibInputBackend InputRoot例外 | E-26: L29-30 | ○ |
| C-130 | HandlePointer MOTION_ABSOLUTE | E-27: L23-27 | ○ |
| C-131 | HandlePointer 左ボタンダウン | E-27: L36-37 | ○ |
| C-132 | HandlePointer 左ボタンアップ | E-27: L38-39 | ○ |
| C-133 | HandlePointer ホイール | E-27: L67-77 | ○ |
| C-134 | HandlePointer ハイレゾホイール | E-27: L90-101 | ○ |
| C-135 | HandleTouch TOUCH_DOWN | E-28: L44 | ○ |
| C-136 | HandleTouch TOUCH_UP | E-28: L45 | ○ |
| C-137 | HandleTouch TOUCH_MOTION | E-28: L46 | ○ |
| C-138 | HandleTouch TOUCH_CANCEL | E-28: L47 | ○ |
| C-139 | マルチタッチ | E-28: L31, L36-37 | ○ |
| C-140 | 無効タッチイベント | E-28: L17-18 | ○ |
| C-141 | LibInputBackendOptions Eventsデフォルト | E-29: L14 | ○ |
| C-142 | LibInputBackendOptions Events設定 | E-29: L14 | ○ |
| C-143 | CursorFactoryStub GetCursor | E-08: L9 | ○ |
| C-144 | CursorFactoryStub CreateCursor | E-08: L10 | ○ |
| C-145 | CursorStub Dispose | E-08: L14 | ○ |

### 拡張メソッド (UT-LFB-146 - 152)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-146 | StartLinuxFbDev(基本) | E-01: L180-181 | ○ |
| C-147 | StartLinuxFbDev(フォーマット) | E-01: L182-183 | ○ |
| C-148 | StartLinuxFbDev(オプション) | E-01: L185-187 | ○ |
| C-149 | StartLinuxDrm(基本) | E-01: L189-190 | ○ |
| C-150 | StartLinuxDrm(オプション) | E-01: L191-192 | ○ |
| C-151 | StartLinuxDirect | E-01: L194-201 | ○ |
| C-152 | DrmConnectorType enum | E-05: L7-25 | ○ |

## 4) 不足情報（Unknown / Missing）
- すべてのテストケースにソースコードからの根拠が存在します
- 追加で必要となる可能性のある情報：
  - 既存のテストコード（参照パターンとして）
  - Linux環境固有の制約事項ドキュメント

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - ネイティブライブラリ（libdrm, libgbm, libinput, libevdev）への依存があり、テスト環境の構築が課題
- **1: 中リスク** - epoll, timerfd等のLinuxカーネル機能への依存
- **0: 低リスク** - オプションクラス、スタブクラスは単純な構造で信頼性が高い

## 6) レビュアーチェックリスト（最小）
- [ ] 各クラスの主要publicメソッドがテストケースでカバーされているか
- [ ] 正常系・異常系・境界値の観点が適切にバランスされているか
- [ ] Linux固有のネイティブ呼び出し部分のモック戦略が明確か
- [ ] マルチスレッド処理（入力スレッド、epoll）のテスト設計が適切か
- [ ] DRM/GBM初期化の複雑なシーケンスがテストケースで網羅されているか
- [ ] 入力デバイス（タッチスクリーン、マウス）のイベント処理がカバーされているか
- [ ] 画面回転（Orientation）に関連するテストケースが十分か
- [ ] リソース管理（Dispose, Finalize）のテストが適切か
