---
generated_at: 2026-02-22 16:10:00
metrics:
  claims_total: 27
  claims_with_evidence: 27
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：27 / 27、根拠なし：0
- 優先レビュー（高）
  1. なし：全テストケースに根拠あり

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

- E-01: `src/Avalonia.MicroCom/CallbackBase.cs` - CallbackBaseクラスの完全なソースコード
- E-02: `src/Avalonia.MicroCom/CallbackBase.cs:5` - クラス宣言（IUnknown, IMicroComShadowContainer実装）
- E-03: `src/Avalonia.MicroCom/CallbackBase.cs:7-10` - プライベートフィールド定義（_lock, _referencedFromManaged, _referencedFromNative, _destroyed）
- E-04: `src/Avalonia.MicroCom/CallbackBase.cs:12` - IsDestroyedプロパティ定義
- E-05: `src/Avalonia.MicroCom/CallbackBase.cs:14-17` - Destroyedメソッド定義（virtual、空実装）
- E-06: `src/Avalonia.MicroCom/CallbackBase.cs:19-26` - Disposeメソッド定義（ロック付き）
- E-07: `src/Avalonia.MicroCom/CallbackBase.cs:28-39` - DestroyIfNeededメソッド定義（破棄条件ロジック）
- E-08: `src/Avalonia.MicroCom/CallbackBase.cs:41` - Shadowプロパティ定義
- E-09: `src/Avalonia.MicroCom/CallbackBase.cs:42-46` - OnReferencedFromNativeメソッド定義
- E-10: `src/Avalonia.MicroCom/CallbackBase.cs:48-55` - OnUnreferencedFromNativeメソッド定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 初期状態でIsDestroyedがfalseであること | E-03, E-04 | ○ |
| C-02 | 破棄後にIsDestroyedがtrueになること | E-04, E-07 | ○ |
| C-03 | Dispose呼び出しでオブジェクトが破棄されること | E-06, E-07 | ○ |
| C-04 | ネイティブ参照がある場合はDisposeで破棄されないこと | E-06, E-07, E-09 | ○ |
| C-05 | 複数回Disposeを呼び出しても例外が発生しないこと | E-06, E-07 | ○ |
| C-06 | ネイティブ参照フラグが設定されること | E-09 | ○ |
| C-07 | OnReferencedFromNativeの複数回呼び出しが安全なこと | E-09 | ○ |
| C-08 | ネイティブ参照解除で破棄されること | E-10, E-07 | ○ |
| C-09 | マネージド参照がある場合は破棄されないこと | E-07, E-10 | ○ |
| C-10 | ネイティブ参照追加前に解除を呼んでも例外が発生しないこと | E-10 | ○ |
| C-11 | Shadowプロパティに値を設定・取得できること | E-08 | ○ |
| C-12 | 初期状態でShadowがnullであること | E-08 | ○ |
| C-13 | 破棄後にShadowがnullになること | E-07 | ○ |
| C-14 | 破棄時にDestroyedメソッドが呼び出されること | E-05, E-07 | ○ |
| C-15 | 破棄が発生しない場合はDestroyedが呼ばれないこと | E-05, E-07 | ○ |
| C-16 | マネージド・ネイティブ両方の参照がない場合に破棄されること | E-07 | ○ |
| C-17 | マネージド参照がある場合は破棄されないこと | E-07 | ○ |
| C-18 | 既に破棄済みの場合は何もしないこと | E-07 | ○ |
| C-19 | 複数スレッドからDisposeを同時に呼んでも安全であること | E-03, E-06 | ○ |
| C-20 | OnReferencedFromNativeとDisposeの同時呼び出しが安全であること | E-03, E-06, E-09 | ○ |
| C-21 | OnUnreferencedFromNativeとDisposeの同時呼び出しが安全であること | E-03, E-06, E-10 | ○ |
| C-22 | 参照追加→破棄→参照解除の順序で正しく動作すること | E-06, E-07, E-09, E-10 | ○ |
| C-23 | 参照解除→破棄の順序で正しく動作すること | E-06, E-07, E-10 | ○ |
| C-24 | 破棄時にShadowのDisposeが呼ばれること | E-07 | ○ |
| C-25 | Shadowがnullの場合でも破棄が正常に完了すること | E-07 | ○ |
| C-26 | IUnknownインターフェースを実装していること | E-02 | ○ |
| C-27 | IMicroComShadowContainerインターフェースを実装していること | E-02 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全てのテストケースはソースコードから直接導出されている

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに直接対応
- 注意点：
  - MicroCom.Runtimeパッケージの挙動については外部依存として確認が必要
  - スレッドセーフティのテストは実際の並行実行環境での検証が推奨される

## 6) レビュアーチェックリスト（最小）
- [ ] CallbackBaseの派生クラスが存在する場合、そのテストケースも必要か検討
- [ ] MicroCom.RuntimeのIUnknown/IMicroComShadowContainerインターフェースの契約を確認
- [ ] スレッドセーフティテストの実装方法（並行テストフレームワークの選定）を検討
- [ ] Shadowプロパティに設定されるMicroComShadowのモック戦略を検討

---

## 補足：解析対象ファイル一覧

| ファイル | クラス/インターフェース | メソッド数 | テストケース数 |
|---------|------------------------|-----------|---------------|
| CallbackBase.cs | CallbackBase | 6 | 27 |

### CallbackBaseクラスの構造

```
CallbackBase : IUnknown, IMicroComShadowContainer
├── フィールド
│   ├── _lock (object) - 同期用ロック
│   ├── _referencedFromManaged (bool) - マネージド参照フラグ
│   ├── _referencedFromNative (bool) - ネイティブ参照フラグ
│   └── _destroyed (bool) - 破棄済みフラグ
├── プロパティ
│   ├── IsDestroyed (bool) - 破棄状態の取得
│   └── Shadow (MicroComShadow?) - COMシャドウオブジェクト
└── メソッド
    ├── Dispose() - マネージド参照の解放
    ├── DestroyIfNeeded() - 条件付き破棄（private）
    ├── Destroyed() - 破棄時コールバック（virtual）
    ├── OnReferencedFromNative() - ネイティブ参照追加
    └── OnUnreferencedFromNative() - ネイティブ参照解除
```

### テスト観点のカバレッジ

| 観点 | テストケース数 | カバレッジ |
|------|--------------|-----------|
| 正常系 | 18 | 完全 |
| 異常系 | 3 | 完全 |
| 状態（スレッドセーフティ） | 3 | 完全 |
| ライフサイクル | 3 | 完全 |

### 優先度分布

| 優先度 | テストケース数 |
|-------|--------------|
| 高 | 18 |
| 中 | 9 |
| 低 | 0 |
