---
generated_at: 2026-02-22 12:30:00
metrics:
  claims_total: 70
  claims_with_evidence: 68
  claims_without_evidence: 2
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード内のクラス・メソッド定義が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：publicメソッド、重要なロジック、エラー処理を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：68 / 70、根拠なし：2
- 優先レビュー（高）
  1. **UT-RMP-022〜026（TcpTransportBase.Listen/Connect）**：ネットワーク関連のため実機テストが必要
  2. **UT-RMP-039〜044（EventStash）**：マルチスレッド動作のため競合状態の確認が必要
  3. **UT-RMP-017〜020（BsonStreamTransportConnection.Send）**：非同期処理とエラーハンドリングの確認が必要

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

- E-01: `src/Avalonia.Remote.Protocol/AvaloniaRemoteMessageGuidAttribute.cs` - Attribute定義、コンストラクタでGuid.Parse使用
- E-02: `src/Avalonia.Remote.Protocol/DefaultMessageTypeResolver.cs` - IMessageTypeResolver実装、Dictionary使用
- E-03: `src/Avalonia.Remote.Protocol/BsonStreamTransport.cs` - IAvaloniaRemoteTransportConnection実装、ReadExact/Reader/Sendメソッド
- E-04: `src/Avalonia.Remote.Protocol/TcpTransportBase.cs` - 抽象クラス、Listen/Connectメソッド、DisposableServer内部クラス
- E-05: `src/Avalonia.Remote.Protocol/BsonTcpTransport.cs` - TcpTransportBase継承、CreateTransport実装
- E-06: `src/Avalonia.Remote.Protocol/TransportConnectionWrapper.cs` - IAvaloniaRemoteTransportConnection実装、SendQueue/Worker
- E-07: `src/Avalonia.Remote.Protocol/EventStash.cs` - ジェネリッククラス、Add/Remove/Fireメソッド、_stashフィールド
- E-08: `src/Avalonia.Remote.Protocol/ViewportMessages.cs` - メッセージクラス群、PixelFormat列挙型
- E-09: `src/Avalonia.Remote.Protocol/InputMessages.cs` - InputModifiers/MouseButton列挙型、イベントメッセージクラス群
- E-10: `src/Avalonia.Remote.Protocol/DesignMessages.cs` - UpdateXamlMessage、ExceptionDetailsクラス
- E-11: `src/Avalonia.Remote.Protocol/TransportMessages.cs` - HtmlTransportStartedMessageクラス
- E-12: `src/Avalonia.Remote.Protocol/ITransport.cs` - IAvaloniaRemoteTransportConnectionインターフェース定義
- E-13: `src/Avalonia.Remote.Protocol/IMessageTypeResolver.cs` - IMessageTypeResolverインターフェース定義
- E-14: `src/Avalonia.Remote.Protocol/MetsysBson.cs` - Serializer/Deserializerクラス（サードパーティライブラリ）

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | AvaloniaRemoteMessageGuidAttribute正常系テスト | E-01: コンストラクタでGuid.Parse(guid)を呼び出し | ○ |
| C-02 | AvaloniaRemoteMessageGuidAttribute無効GUID例外テスト | E-01: Guid.Parse使用により無効GUIDでFormatException | ○ |
| C-03 | AvaloniaRemoteMessageGuidAttribute空文字例外テスト | E-01: Guid.Parse使用により空文字でFormatException | ○ |
| C-04 | AvaloniaRemoteMessageGuidAttribute null例外テスト | E-01: Guid.Parseへのnull渡しでArgumentNullException | ○ |
| C-05 | DefaultMessageTypeResolverコンストラクタ正常系 | E-02: アセンブリループでAvaloniaRemoteMessageGuidAttribute取得 | ○ |
| C-06 | DefaultMessageTypeResolver空配列初期化 | E-02: assemblies ?? Array.Empty<Assembly>()で空配列対応 | ○ |
| C-07 | DefaultMessageTypeResolver null配列初期化 | E-02: assemblies ?? Array.Empty<Assembly>()でnull対応 | ○ |
| C-08 | GetByGuid正常系 | E-02: _guidsToTypes[id]でDictionary検索 | ○ |
| C-09 | GetByGuid未登録GUID例外 | E-02: Dictionary未登録キーでKeyNotFoundException | ○ |
| C-10 | GetGuid正常系 | E-02: _typesToGuids[type]でDictionary検索 | ○ |
| C-11 | GetGuid未登録型例外 | E-02: Dictionary未登録キーでKeyNotFoundException | ○ |
| C-12 | BsonStreamTransportConnectionコンストラクタ | E-03: フィールド初期化確認 | ○ |
| C-13 | Disposeでキャンセルとコールバック | E-03: _cancelSource.Cancel()と_disposeCallback?.Invoke() | ○ |
| C-14 | Dispose nullコールバック | E-03: _disposeCallback?.Invoke()でnull安全 | ○ |
| C-15 | StartReading正常系 | E-03: Task.Run(Reader, _cancel)で読み取り開始 | ○ |
| C-16 | StartReading重複呼び出し例外 | E-03: _readingAlreadyStarted判定でInvalidOperationException | ○ |
| C-17 | Send正常系 | E-03: Serializer.Serialize使用、_outputBlock.CopyToAsync | ○ |
| C-18 | Send同時書き込み例外 | E-03: _writeOperationPending判定でInvalidOperationException | ○ |
| C-19 | Send壊れたライター処理 | E-03: _writerIsBroken判定で即リターン | ○ |
| C-20 | Sendエラー時OnException発火 | E-03: catch内でFireException呼び出し、_writerIsBroken=true | ○ |
| C-21 | TcpTransportBaseコンストラクタ | E-04: _resolver = resolver代入 | ○ |
| C-22 | Listen正常系 | E-04: TcpListener.Start()、AcceptNew()非同期メソッド | ○ |
| C-23 | Listen接続コールバック | E-04: cb(t)でコールバック呼び出し | ○ |
| C-24 | Listen Dispose | E-04: DisposableServer.Dispose()でserver.Stop() | ○ |
| C-25 | Connect正常系 | E-04: TcpClient.ConnectAsync使用 | ○ |
| C-26 | Connect接続失敗例外 | E-04: ConnectAsyncがSocketExceptionスロー | ○ |
| C-27 | BsonTcpTransportデフォルトコンストラクタ | E-05: this(new DefaultMessageTypeResolver(...))呼び出し | ○ |
| C-28 | BsonTcpTransportリゾルバ指定コンストラクタ | E-05: base(resolver)呼び出し | ○ |
| C-29 | CreateTransport実装 | E-05: BsonStreamTransportConnection生成、TransportConnectionWrapperでラップ | ○ |
| C-30 | TransportConnectionWrapperコンストラクタ | E-06: _conn.OnExceptionと_conn.OnMessageフック | ○ |
| C-31 | Wrapper Dispose | E-06: _conn.Dispose()呼び出し | ○ |
| C-32 | Wrapper Send | E-06: _sendQueue.Enqueue、Worker非同期メソッド | ○ |
| C-33 | Wrapper Send順序保証 | E-06: Queueによる順序保証 | ○ |
| C-34 | Wrapper Sendエラー処理 | E-06: wi.Tcs.TrySetException(e)でタスク例外完了 | ○ |
| C-35 | Wrapper OnMessage配信 | E-06: _onMessage経由でイベント配信 | ○ |
| C-36 | Wrapper OnMessageスタッシュ再生 | E-06, E-07: EventStashによるスタッシュと再生 | ○ |
| C-37 | Wrapper Start | E-06: _conn.Start()呼び出し | ○ |
| C-38 | EventStashコンストラクタ | E-07: _transport, _exceptionHandler代入 | ○ |
| C-39 | EventStash Addスタッシュ再生 | E-07: _delegate==nullでneedsReplay、_stashループ | ○ |
| C-40 | EventStash Add複数ハンドラ | E-07: needsReplay判定で2番目以降は再生なし | ○ |
| C-41 | EventStash Add例外ハンドリング | E-07: try-catch内で_exceptionHandler(e)呼び出し | ○ |
| C-42 | EventStash Remove | E-07: _delegate -= handler | ○ |
| C-43 | EventStash Fireスタッシュ | E-07: _delegate==nullで_stash.Add(ev) | ○ |
| C-44 | EventStash Fire配信 | E-07: _delegate?.Invoke(_transport, ev) | ○ |
| C-45 | MeasureViewportMessageプロパティ | E-08: Width, Heightプロパティ定義 | ○ |
| C-46 | ClientViewportAllocatedMessageプロパティ | E-08: Width, Height, DpiX, DpiYプロパティ定義 | ○ |
| C-47 | FrameMessageプロパティ | E-08: SequenceId, Format, Data, Width, Height, Stride, DpiX, DpiY定義 | ○ |
| C-48 | FrameMessage Data null | E-08: byte[] Dataプロパティ、null許容 | ○ |
| C-49 | FrameMessage Data空配列 | E-08: byte[]型のため空配列設定可能 | ○ |
| C-50 | ClientSupportedPixelFormatsMessageプロパティ | E-08: PixelFormat[] Formats定義 | ○ |
| C-51 | Formats null | E-08: 配列型のためnull許容 | ○ |
| C-52 | Formats空配列 | E-08: 配列型のため空配列設定可能 | ○ |
| C-53 | PointerMovedEventMessageプロパティ | E-09: X, Y継承、Modifiers継承 | ○ |
| C-54 | PointerPressedEventMessageプロパティ | E-09: Button, X, Y, Modifiers定義/継承 | ○ |
| C-55 | ScrollEventMessageプロパティ | E-09: DeltaX, DeltaY, X, Y定義/継承 | ○ |
| C-56 | KeyEventMessageプロパティ | E-09: IsDown, Key, PhysicalKey, KeySymbol, Modifiers定義 | ○ |
| C-57 | TextInputEventMessageプロパティ | E-09: Text, Modifiers定義 | ○ |
| C-58 | TextInputEventMessage Textデフォルト | E-09: Text = string.Empty初期化 | ○ |
| C-59 | UpdateXamlMessageプロパティ | E-10: Xaml, AssemblyPath, XamlFileProjectPath定義 | ○ |
| C-60 | UpdateXamlResultMessageプロパティ | E-10: Error, Handle, Exception定義 | ○ |
| C-61 | ExceptionDetailsデフォルトコンストラクタ | E-10: 空のpublic ExceptionDetails()定義 | ○ |
| C-62 | ExceptionDetails Exception抽出 | E-10: ExceptionType=e.GetType().Name, Message=e.Message | ○ |
| C-63 | ExceptionDetails TargetInvocationException | E-10: if (e is TargetInvocationException)でInnerException使用 | ○ |
| C-64 | ExceptionDetails XmlException | E-10: if (e is XmlException xml)でLineNumber, LinePosition設定 | ○ |
| C-65 | StartDesignerSessionMessageプロパティ | E-10: SessionId定義 | ○ |
| C-66 | HtmlTransportStartedMessageプロパティ | E-11: Uri定義 | ○ |
| C-67 | PixelFormat Rgb565値 | E-08: enum PixelFormat定義 | △ |
| C-68 | PixelFormat MaxValue | E-08: MaxValue = Bgra8888定義 | ○ |
| C-69 | InputModifiersフラグ | E-09: [Flags] public enum InputModifiers | △ |
| C-70 | MouseButton列挙値 | E-09: public enum MouseButton定義 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-67（PixelFormat Rgb565値）**: 列挙型の具体的な整数値は実行時確認が必要
  - 候補：C#のenum仕様により0から開始と推測されるが、明示的な値指定なし
- **C-69（InputModifiersフラグ）**: [Flags]属性はあるが、列挙値が0から連番で定義されているため、ビットフラグとして正しく機能しない可能性
  - 候補：実装上の問題の可能性があり、テスト時に確認必要

## 5) リスクフラグ（レビュー観点）
- **リスク1（中）**: EventStash内のlock(this)使用 - デッドロックの可能性あり
- **リスク2（中）**: TransportConnectionWrapper.WorkerのWhile(true)ループ - 終了条件がない
- **リスク1（中）**: InputModifiers列挙型の値が[Flags]として適切でない可能性（値が0,1,2,3...ではなくビットフラグ1,2,4,8...であるべき）
- **リスク0（低）**: MetsysBson.csはサードパーティコードのため、本モジュールのテスト対象外とすべき

## 6) レビュアーチェックリスト（最小）
- [ ] ネットワーク関連テスト（UT-RMP-022〜026）の実機テスト環境が準備されているか
- [ ] EventStashのマルチスレッドテストでスレッドセーフティが確認されているか
- [ ] InputModifiers列挙型の[Flags]属性が意図通り機能するか確認
- [ ] BsonStreamTransportConnectionの非同期エラーハンドリングが適切にテストされているか
- [ ] MetsysBson.cs（サードパーティライブラリ）は本モジュールのテスト対象から除外してよいか確認
