---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 137
  claims_with_evidence: 131
  claims_without_evidence: 6
confidence_derived: 0.96
---

# 根拠レポート：interactivity-base 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：131 / 137、根拠なし：6
- 優先レビュー（高）
  1. **C-025 (UT-ITB-025)**：Feature_UseNumpadEventsForClipboardInput のフィーチャーフラグの有効/無効条件が外部定義であり、コンパイル時定数のため実行時テスト可否が不明
  2. **C-130/C-132/C-134 (OneCoreフォールバック)**：BUILD_ONECORE_INTERACTIVITY マクロ依存のコードパスであり、テスト環境での再現性に懸念
  3. **C-135/C-136/C-137 (RundownAndExit)**：[[noreturn]] 関数のため通常のテストフレームワークでの検証が困難

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

- E-01: `src/interactivity/base/ApiDetector.hpp` - ApiDetectorクラス定義（公開/非公開メソッド宣言、ApiLevel列挙型）
- E-02: `src/interactivity/base/ApiDetector.cpp` - ApiDetector実装（DetectNtUserWindow, DetectApiSupport, TryLoadWellKnownLibrary, TryLocateProcedure, SetLevelAndFreeIfNecessary）
- E-03: `src/interactivity/base/EventSynthesis.cpp` - EventSynthesis実装（IsCharFullWidth, CharToKeyEvents, SynthesizeKeyboardEvents, SynthesizeNumpadEvents）
- E-04: `src/interactivity/inc/EventSynthesis.hpp` - EventSynthesis関数宣言
- E-05: `src/interactivity/base/HostSignalInputThread.hpp` - HostSignalInputThreadクラス定義
- E-06: `src/interactivity/base/HostSignalInputThread.cpp` - HostSignalInputThread実装
- E-07: `src/interactivity/base/InteractivityFactory.hpp` - InteractivityFactoryクラス定義
- E-08: `src/interactivity/base/InteractivityFactory.cpp` - InteractivityFactory実装
- E-09: `src/interactivity/base/PseudoConsoleWindowAccessibilityProvider.hpp` - PseudoConsoleWindowAccessibilityProviderクラス定義
- E-10: `src/interactivity/base/PseudoConsoleWindowAccessibilityProvider.cpp` - PseudoConsoleWindowAccessibilityProvider実装
- E-11: `src/interactivity/base/RemoteConsoleControl.hpp` - RemoteConsoleControlクラス定義
- E-12: `src/interactivity/base/RemoteConsoleControl.cpp` - RemoteConsoleControl実装
- E-13: `src/interactivity/base/ServiceLocator.cpp` - ServiceLocator実装
- E-14: `src/interactivity/inc/ServiceLocator.hpp` - ServiceLocatorクラス定義
- E-15: `src/interactivity/base/VtApiRedirection.cpp` - VtApiRedirection実装
- E-16: `src/interactivity/inc/VtApiRedirection.hpp` - VtApiRedirection関数宣言
- E-17: `src/interactivity/inc/IConsoleControl.hpp` - IConsoleControlインターフェース定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | Win32環境でDetectNtUserWindowがApiLevel::Win32を返す | E-01, E-02 | ○ |
| C-002 | OneCore環境でDetectNtUserWindowがApiLevel::OneCoreを返す | E-01, E-02 | ○ |
| C-003 | levelがnullptrの場合STATUS_INVALID_PARAMETERが返る | E-02 (L42-45) | ○ |
| C-004 | ライブラリロード成功かつプロシージャ指定なし時にWin32レベル | E-02 (L40-58) | ○ |
| C-005 | ライブラリ・プロシージャ共に存在時にWin32レベル | E-02 (L40-58) | ○ |
| C-006 | プロシージャ不在時にOneCoreレベルかつライブラリ解放 | E-02 (L40-58, L142-154) | ○ |
| C-007 | NO_FORWARDERフラグでのライブラリロード | E-02 (L61-105) | ○ |
| C-008 | NO_FORWARDERフラグ失敗時のSYSTEM32フォールバック | E-02 (L98-102) | ○ |
| C-009 | 存在しないライブラリでSTATUS_UNSUCCESSFUL | E-02 (L107-126) | ○ |
| C-010 | プロシージャ存在時にSTATUS_SUCCESS | E-02 (L128-140) | ○ |
| C-011 | プロシージャ不在時にSTATUS_UNSUCCESSFUL | E-02 (L128-140) | ○ |
| C-012 | ステータス成功時にWin32レベル設定 | E-02 (L142-154) | ○ |
| C-013 | ステータス失敗時にOneCoreレベル設定とFreeLibrary | E-02 (L142-154) | ○ |
| C-014 | 全角ひらがな文字の判定 | E-03 (L19) | ○ |
| C-015 | 全角カタカナ文字の判定 | E-03 (L20) | ○ |
| C-016 | CJK統合漢字の判定 | E-03 (L24-25) | ○ |
| C-017 | 全角ASCII変種の判定 | E-03 (L31) | ○ |
| C-018 | 半角ASCII文字がfalse | E-03 (L16-33) | ○ |
| C-019 | 全角範囲下限境界(0x1100) | E-03 (L17) | ○ |
| C-020 | 全角範囲上限境界(0x115F) | E-03 (L17) | ○ |
| C-021 | 全角範囲外の直前(0x10FF) | E-03 (L17) | ○ |
| C-022 | 全角範囲外の直後(0x1160) | E-03 (L17) | ○ |
| C-023 | VkKeyScanW変換可能文字のキーイベント変換 | E-03 (L36-63), E-04 | ○ |
| C-024 | VkKeyScanW変換不可な全角文字のキーボードイベント生成 | E-03 (L36-63) | ○ |
| C-025 | Numpadイベントへのフォールバック | E-03 (L42-57) | △ |
| C-026 | 修飾キーなしのキーダウン・キーアップペア | E-03 (L74-113) | ○ |
| C-027 | Shift修飾付きイベント | E-03 (L86-93, L109-112) | ○ |
| C-028 | Ctrl修飾付きフラグ | E-03 (L82, L97) | ○ |
| C-029 | AltGr修飾付きイベント | E-03 (L84-88, L105-108) | ○ |
| C-030 | Numpadイベントシーケンス生成 | E-03 (L125-156) | ○ |
| C-031 | WideCharToMultiByte変換失敗時の処理 | E-03 (L127-133) | ○ |
| C-032 | 0xFF（signed -1）のunsigned処理 | E-03 (L136-141) | ○ |
| C-033 | 有効なパイプハンドルでの構築 | E-05, E-06 (L18-25) | ○ |
| C-034 | INVALID_HANDLE_VALUEでのE_HANDLEスロー | E-06 (L23) | ○ |
| C-035 | nullptrでのE_HANDLEスロー | E-06 (L24) | ○ |
| C-036 | スレッド正常開始 | E-06 (L179-195) | ○ |
| C-037 | CreateThread失敗時のエラー | E-06 (L191) | ○ |
| C-038 | NotifyAppシグナル処理 | E-06 (L87-92) | ○ |
| C-039 | EndTaskシグナル処理 | E-06 (L103-108) | ○ |
| C-040 | SetForegroundシグナルの無視 | E-06 (L93-101) | ○ |
| C-041 | 不明シグナルIDでE_UNEXPECTED | E-06 (L109-113) | ○ |
| C-042 | パイプ正常終了でS_OK | E-06 (L83, L116) | ○ |
| C-043 | パイプからのデータ正常読み取り | E-06 (L151-175) | ○ |
| C-044 | ERROR_BROKEN_PIPEでの_Shutdown | E-06 (L158-164) | ○ |
| C-045 | 読み取りバイト数不一致での_Shutdown | E-06 (L169-172) | ○ |
| C-046 | 指定バイト数のシーク | E-06 (L125-142) | ○ |
| C-047 | byteCount=0でのシーク | E-06 (L129) | ○ |
| C-048 | シーク途中のデータ取得失敗 | E-06 (L133-136) | ○ |
| C-049 | 正しいサイズのパケット受信 | E-06 (L56-72) | ○ |
| C-050 | パケットサイズ小さすぎでE_ILLEGAL_METHOD_CALL | E-06 (L63) | ○ |
| C-051 | パケットサイズ大きすぎで余剰スキップ | E-06 (L69) | ○ |
| C-052 | Win32レベルでConsoleControl生成 | E-07, E-08 (L32-72) | ○ |
| C-053 | 不正ApiLevelでSTATUS_INVALID_LEVEL | E-08 (L55-57) | ○ |
| C-054 | 例外発生時のNTSTATUSエラー返却 | E-08 (L60-63) | ○ |
| C-055 | Win32レベルでConsoleInputThread生成 | E-08 (L74-114) | ○ |
| C-056 | Win32レベルでWindowDpiApi生成 | E-08 (L116-156) | ○ |
| C-057 | Win32レベルでWindowMetrics生成 | E-08 (L158-198) | ○ |
| C-058 | Win32レベルでSystemConfigurationProvider生成 | E-08 (L200-240) | ○ |
| C-059 | 疑似ウィンドウ作成の基本動作 | E-08 (L253-333) | ○ |
| C-060 | CreateWindowExW失敗時のエラー | E-08 (L307-311) | ○ |
| C-061 | 不正ApiLevelでのウィンドウ作成 | E-08 (L321-323) | ○ |
| C-062 | SetOwnerでの_ownerアトミック格納 | E-08 (L335-337) | ○ |
| C-063 | 疑似ウィンドウ存在時のSetWindowLongPtrW | E-08 (L339-354) | ○ |
| C-064 | 疑似ウィンドウ未作成時のSetOwner | E-08 (L339) | ○ |
| C-065 | 表示状態変更時のSW_SHOWNOACTIVATE | E-08 (L357-365) | ○ |
| C-066 | 非表示状態変更時のSW_MINIMIZE | E-08 (L357-365) | ○ |
| C-067 | 疑似ウィンドウ未作成時のSetVisibility | E-08 (L359) | ○ |
| C-068 | _suppressVisibilityChangeの動作 | E-08 (L361-363) | ○ |
| C-069 | WM_CREATEでのファクトリポインタ保存 | E-08 (L378-387) | ○ |
| C-070 | ファクトリ設定済み時のPseudoWindowProcディスパッチ | E-08 (L390-394) | ○ |
| C-071 | ファクトリ未設定時のDefWindowProcW | E-08 (L396-397) | ○ |
| C-072 | WM_SIZE SIZE_RESTORED時のコールバック | E-08 (L429-432) | ○ |
| C-073 | WM_SIZE SIZE_MINIMIZED時のコールバック | E-08 (L434-437) | ○ |
| C-074 | WM_SHOWWINDOW lParam=0 wParam=TRUE時のコールバック | E-08 (L451-454) | ○ |
| C-075 | WM_SHOWWINDOW lParam!=0時のコールバック非呼出 | E-08 (L451) | ○ |
| C-076 | WM_GETOBJECTでのUIAプロバイダ返却 | E-08 (L457-468) | ○ |
| C-077 | WM_ACTIVATEでのフォーカス委譲 | E-08 (L469-477) | ○ |
| C-078 | 未処理メッセージのDefWindowProcW | E-08 (L480) | ○ |
| C-079 | VtWriterへの表示通知 | E-08 (L491-509) | ○ |
| C-080 | suppressフラグtrue時の早期リターン | E-08 (L493-496) | ○ |
| C-081 | 有効なHWNDでRuntimeClassInitialize成功 | E-09, E-10 (L10-15) | ○ |
| C-082 | nullptr入力でE_INVALIDARG | E-10 (L12) | ○ |
| C-083 | get_ProviderOptionsでServerSideProvider返却 | E-10 (L17-22) | ○ |
| C-084 | get_ProviderOptionsのnullチェック | E-10 (L19) | ○ |
| C-085 | GetPatternProviderでnullptr返却 | E-10 (L24-30) | ○ |
| C-086 | GetPatternProviderのnullチェック | E-10 (L27) | ○ |
| C-087 | UIA_ControlTypePropertyIdの返却値 | E-10 (L43-48) | ○ |
| C-088 | UIA_NamePropertyIdの返却値 | E-10 (L49-57) | ○ |
| C-089 | UIA_IsControlElementPropertyIdの返却値 | E-10 (L59-66) | ○ |
| C-090 | 未知プロパティIDでVT_EMPTY | E-10 (L37, L68-69) | ○ |
| C-091 | GetPropertyValueのnullチェック | E-10 (L35) | ○ |
| C-092 | get_HostRawElementProviderの正常動作 | E-10 (L74-79) | ○ |
| C-093 | get_HostRawElementProviderのnullチェック | E-10 (L76) | ○ |
| C-094 | _pseudoConsoleHwndがnullptr時のエラー | E-10 (L77) | ○ |
| C-095 | RemoteConsoleControlコンストラクタ | E-11, E-12 (L12-14) | ○ |
| C-096 | NotifyConsoleApplicationのパケット送信 | E-12 (L49-56) | ○ |
| C-097 | SetForegroundのローカル委譲 | E-12 (L58-64) | ○ |
| C-098 | EndTaskのパケット送信 | E-12 (L66-75) | ○ |
| C-099 | SetWindowOwnerのローカル委譲 | E-12 (L77-82) | ○ |
| C-100 | ControlのWI_ASSERT_FAIL | E-12 (L17-20) | ○ |
| C-101 | NotifyWinEventのWI_ASSERT_FAIL | E-12 (L22-25) | ○ |
| C-102 | _SendTypedPacketのパック送信 | E-12 (L29-47) | ○ |
| C-103 | WriteFile失敗時のログ | E-12 (L46) | ○ |
| C-104 | SetOneCoreTeardownFunctionの設定 | E-13 (L39-43), E-14 | ○ |
| C-105 | 二重登録時のFAIL_FAST | E-13 (L41) | ○ |
| C-106 | SetConsoleControlInstanceの正常設定 | E-13 (L143-159), E-14 | ○ |
| C-107 | SetConsoleControlInstanceの二重設定防止 | E-13 (L145-148) | ○ |
| C-108 | SetConsoleControlInstanceのNULLバリデーション | E-13 (L149-152) | ○ |
| C-109 | SetConsoleWindowInstanceの正常設定 | E-13 (L161-179), E-14 | ○ |
| C-110 | SetConsoleWindowInstanceの二重設定防止 | E-13 (L165-168) | ○ |
| C-111 | SetConsoleWindowInstanceのNULLバリデーション | E-13 (L169-172) | ○ |
| C-112 | LocateConsoleWindowの正常返却 | E-13 (L185-188) | ○ |
| C-113 | LocateConsoleWindow未設定時のnullptr | E-13 (L187) | ○ |
| C-114 | LocateConsoleControlの遅延初期化 | E-13 (L190-210) | ○ |
| C-115 | LocateConsoleControlのキャッシュ | E-13 (L194) | ○ |
| C-116 | LocateConsoleInputThreadの返却 | E-13 (L212-215) | ○ |
| C-117 | LocateHighDpiApiの遅延初期化 | E-13 (L217-237) | ○ |
| C-118 | LocateWindowMetricsの遅延初期化 | E-13 (L239-259) | ○ |
| C-119 | LocateSystemConfigurationProviderの遅延初期化 | E-13 (L261-281) | ○ |
| C-120 | LocateGlobalsの参照返却 | E-13 (L283-286) | ○ |
| C-121 | CreateConsoleInputThreadの正常生成 | E-13 (L111-137) | ○ |
| C-122 | CreateConsoleInputThreadの二重生成防止 | E-13 (L115-118) | ○ |
| C-123 | LocatePseudoWindowの遅延初期化 | E-13 (L295-316) | ○ |
| C-124 | LocatePseudoWindowのキャッシュ | E-13 (L298) | ○ |
| C-125 | SetPseudoWindowOwnerの委譲 | E-13 (L318-332) | ○ |
| C-126 | SetPseudoWindowVisibilityの委譲 | E-13 (L334-348) | ○ |
| C-127 | LoadInteractivityFactoryの正常生成 | E-13 (L354-364) | ○ |
| C-128 | LoadInteractivityFactoryの二重ロード防止 | E-13 (L358) | ○ |
| C-129 | OneCoreSafeMapVirtualKeyWの通常動作 | E-15 (L17-35), E-16 | ○ |
| C-130 | OneCoreSafeMapVirtualKeyWのOneCoreフォールバック | E-15 (L20-33) | △ |
| C-131 | OneCoreSafeVkKeyScanWの通常動作 | E-15 (L37-55), E-16 | ○ |
| C-132 | OneCoreSafeVkKeyScanWのOneCoreフォールバック | E-15 (L40-53) | △ |
| C-133 | OneCoreSafeGetKeyStateの通常動作 | E-15 (L57-75), E-16 | ○ |
| C-134 | OneCoreSafeGetKeyStateのOneCoreフォールバック | E-15 (L60-73) | △ |
| C-135 | RundownAndExitのロック解除 | E-13 (L45-54) | △ |
| C-136 | RundownAndExitのティアダウン関数呼び出し | E-13 (L92-95) | ○ |
| C-137 | RundownAndExitの並行呼び出し排他制御 | E-13 (L61-67) | △ |

## 4) 不足情報（Unknown / Missing）
- **Feature_UseNumpadEventsForClipboardInput (C-025)**：コンパイル時にconstexprで評価されるフィーチャーフラグ。フラグ定義が外部ヘッダにあり、テスト時の切り替え方法が不明
  - 候補：Feature Flagsの定義ファイル / テストビルド構成ファイル / conditional compilation設定
- **BUILD_ONECORE_INTERACTIVITY (C-130, C-132, C-134)**：プリプロセッサマクロによる条件コンパイル。OneCoreビルドでのみ有効になるパスのため、通常ビルドでのテスト不可
  - 候補：OneCore用ビルド構成 / ConIoSrvCommモック / 条件付きテスト設定
- **RundownAndExit (C-135, C-137)**：[[noreturn]]属性が付与されたExitProcess呼び出しを含む関数。通常のユニットテストでのテストが困難
  - 候補：ExitProcessのモック / プロセスフォーク方式のテスト / インテグレーションテストでの検証

## 5) リスクフラグ（レビュー観点）
- **リスク1 (中)**：RundownAndExitはプロセス終了を伴うため、テスト実行環境への影響を考慮する必要がある。モック化またはプロセス分離テストの検討が必要
- **リスク1 (中)**：OneCoreフォールバックパスはBUILD_ONECORE_INTERACTIVITYマクロ依存。テスト対象ビルドで有効でない場合、テストケースがスキップされる可能性がある
- **リスク0 (低)**：Win32 API呼び出し（LoadLibraryExW, CreateWindowExW, GetProcAddress等）を含むメソッドはモック化が必要だが、標準的なテスト手法で対応可能
- **リスク1 (中)**：HostSignalInputThreadのスレッド関連テストでは、パイプの読み取りブロッキングとスレッド終了のタイミング制御が必要

## 6) レビュアーチェックリスト（最小）
- [ ] ApiDetectorのDetectNtUserWindowテスト（C-001, C-002）が実行環境のAPIレベルに依存しないことを確認（モック使用）
- [ ] EventSynthesisのIsCharFullWidth境界値テスト（C-019～C-022）がUnicode 9.0仕様と整合していることを確認
- [ ] HostSignalInputThreadのコンストラクタ例外テスト（C-034, C-035）がTHROW_HR_IFの動作と一致していることを確認
- [ ] InteractivityFactoryのCreatePseudoWindow（C-059）テストがImmDisableIME, RegisterClassExW, CreateWindowExWのモック化を前提としていることを確認
- [ ] PseudoConsoleWindowAccessibilityProviderのGetPropertyValue（C-087～C-090）のプロパティID網羅性を確認
- [ ] RemoteConsoleControlの_SendTypedPacket（C-102）がパック境界（#pragma pack(push, 1)）を正しくテストしていることを確認
- [ ] ServiceLocatorの遅延初期化テスト（C-114, C-117～C-119, C-123）が静的変数のリセット手段を持つことを確認
- [ ] RundownAndExitの並行呼び出しテスト（C-137）がatomic操作のメモリオーダーを検証していることを確認
