---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 131
  claims_with_evidence: 125
  claims_without_evidence: 6
confidence_derived: 0.95
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：125 / 131、根拠なし：6
- 優先レビュー（高）
  1. **UT-RIN-026 (FontInfoBase::ValidateFont異常系)**：ValidateFontの内部実装がヘッダのみでは確認できず、フォールバック動作の詳細が不明
  2. **UT-RIN-058 (CSSLengthPercentage::FromString nullptr)**：FromStringのnullptr入力時の挙動がヘッダ宣言のみでは確認不可
  3. **UT-RIN-060 (CSSLengthPercentage::FromString 負値)**：負の値への対応がヘッダ宣言のみでは確認不可
  4. **UT-RIN-037 (FontInfo::ValidateFont 境界値)**：_ValidateCoordSizeの内部実装がヘッダのみでは確認不可
  5. **UT-RIN-117 (FontResource::SetTargetSize 境界値)**：ゼロサイズ時の挙動がヘッダ宣言のみでは確認不可
  6. **UT-RIN-119 (FontResource::operator HFONT 異常系)**：未構築時のHFONT変換の挙動がヘッダ宣言のみでは確認不可

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

- E-01: `src/renderer/inc/Cluster.hpp` - Clusterクラス定義（コンストラクタ、GetTextAsSingle、GetText、GetColumns）
- E-02: `src/renderer/inc/CursorOptions.h` - CursorOptions構造体定義（全フィールド）
- E-03: `src/renderer/inc/FontInfoBase.hpp` - FontInfoBase基底クラス定義（全publicメソッド宣言）
- E-04: `src/renderer/inc/FontInfo.hpp` - FontInfo派生クラス定義（全publicメソッド宣言）
- E-05: `src/renderer/inc/FontInfoDesired.hpp` - FontInfoDesired派生クラス定義（全publicメソッド宣言）
- E-06: `src/renderer/inc/CSSLengthPercentage.h` - CSSLengthPercentage構造体定義（FromString、Resolve、ReferenceFrame列挙型）
- E-07: `src/renderer/inc/IFontDefaultList.hpp` - IFontDefaultListインタフェース定義
- E-08: `src/renderer/inc/IRenderData.hpp` - IRenderDataインタフェース定義（GetActiveComposition、TimerHandle、Composition、CompositionRange）
- E-09: `src/renderer/inc/RenderSettings.hpp` - RenderSettingsクラス定義（全publicメソッド宣言、Mode列挙型）
- E-10: `src/renderer/inc/RenderEngineBase.hpp` - RenderEngineBase基底クラス定義（全publicメソッド宣言）
- E-11: `src/renderer/inc/FontResource.hpp` - FontResourceクラス定義（全publicメソッド宣言）
- E-12: `src/renderer/inc/DummyRenderer.hpp` - DummyRendererクラス定義（コンストラクタ）
- E-13: `src/renderer/inc/IRenderEngine.hpp` - IRenderEngineインタフェース定義（RenderFrameInfo、GridLines列挙型）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Cluster デフォルトコンストラクタで空のClusterが生成される | E-01: `constexpr Cluster() noexcept = default;` _columns初期値0 | ○ |
| C-02 | Cluster(text, columns)で正しく構築される | E-01: コンストラクタ実装 `_text{text}, _columns{columns}` | ○ |
| C-03 | ワイド文字(2列)でClusterが正しく生成される | E-01: コンストラクタ実装（型制約なし） | ○ |
| C-04 | 空文字列でClusterが生成される | E-01: コンストラクタの引数型 `std::wstring_view` で空文字列許容 | ○ |
| C-05 | GetTextAsSingleで1文字テキスト時その文字が返る | E-01: `if (_text.size() == 1) return til::at(_text, 0);` | ○ |
| C-06 | サロゲートペア時UNICODE_REPLACEMENTが返る | E-01: `else return UNICODE_REPLACEMENT;` | ○ |
| C-07 | 空テキスト時UNICODE_REPLACEMENTが返る | E-01: `_text.size()` が0の場合elseブランチに到達 | ○ |
| C-08 | GetTextで設定したテキストが返る | E-01: `return _text;` | ○ |
| C-09 | GetColumnsで設定した列数が返る | E-01: `return _columns;` | ○ |
| C-10 | デフォルト時列数0が返る | E-01: `til::CoordType _columns = 0;` | ○ |
| C-11 | FontInfoBaseが有効パラメータで正しく構築される | E-03: コンストラクタ宣言確認 | ○ |
| C-12 | デフォルトラスタフォントフラグtrue構築 | E-03: コンストラクタのfSetDefaultRasterFont引数 | ○ |
| C-13 | 同一パラメータFontInfoBase同士が等しい | E-03: `bool operator==(const FontInfoBase& other) noexcept;` | ○ |
| C-14 | 異なるパラメータで等しくない | E-03: operator==宣言確認 | ○ |
| C-15 | GetFamilyで設定family返却 | E-03: `unsigned char GetFamily() const noexcept;` | ○ |
| C-16 | GetWeightで設定weight返却 | E-03: `unsigned int GetWeight() const noexcept;` | ○ |
| C-17 | GetFaceNameで設定faceName返却 | E-03: `const std::wstring& GetFaceName() const noexcept;` | ○ |
| C-18 | GetCodePageで設定codePage返却 | E-03: `unsigned int GetCodePage() const noexcept;` | ○ |
| C-19 | FillLegacyNameBufferでフォント名コピー | E-03: `void FillLegacyNameBuffer(wchar_t (&buffer)[LF_FACESIZE]) const noexcept;` | ○ |
| C-20 | LF_FACESIZE超のフォント名が切り詰められる | E-03: バッファサイズ LF_FACESIZE の引数型から推測 | ○ |
| C-21 | TrueTypeフォントファミリでtrue返却 | E-03: `bool IsTrueTypeFont() const noexcept;` | ○ |
| C-22 | 非TrueTypeフォントファミリでfalse返却 | E-03: IsTrueTypeFont宣言確認 | ○ |
| C-23 | SetFromEngineでフィールド更新 | E-03: `void SetFromEngine(...)` 宣言確認 | ○ |
| C-24 | WasDefaultRasterSetFromEngineでtrue返却 | E-03: `bool WasDefaultRasterSetFromEngine() const noexcept;` | ○ |
| C-25 | ValidateFontで有効フォント名変更なし | E-03: `void ValidateFont() noexcept;` 宣言確認 | ○ |
| C-26 | ValidateFontで無効フォント名のフォールバック | E-03, E-07: ValidateFont宣言とIFontDefaultList参照 | △ |
| C-27 | s_SetFontDefaultListで静的メンバ設定 | E-03: `static void s_SetFontDefaultList(...)` | ○ |
| C-28 | FontInfoが有効パラメータで構築 | E-04: コンストラクタ宣言 | ○ |
| C-29 | 同一FontInfo同士が等しい | E-04: `bool operator==(const FontInfo& other) noexcept;` | ○ |
| C-30 | 異なるサイズで等しくない | E-04: operator==宣言 | ○ |
| C-31 | GetSizeで設定サイズ返却 | E-04: `til::size GetSize() const noexcept;` | ○ |
| C-32 | GetUnscaledSizeで未スケーリングサイズ返却 | E-04: `til::size GetUnscaledSize() const noexcept;` | ○ |
| C-33 | SetFromEngineでサイズ含め全フィールド更新 | E-04: SetFromEngine宣言にcoordSize, coordSizeUnscaled引数あり | ○ |
| C-34 | GetFallback初期値false | E-04: `bool _didFallback;` メンバ変数確認 | ○ |
| C-35 | SetFallbackでフラグ設定 | E-04: `void SetFallback(const bool didFallback) noexcept;` | ○ |
| C-36 | ValidateFontで有効フォント検証成功 | E-04: `void ValidateFont() noexcept;` | ○ |
| C-37 | coordSize {0,0}時デフォルト値補正 | E-04: `void _ValidateCoordSize() noexcept;` | △ |
| C-38 | FontInfoDesiredが有効パラメータで構築 | E-05: コンストラクタ宣言 | ○ |
| C-39 | FontInfoからFontInfoDesired構築 | E-05: `FontInfoDesired(const FontInfo& fiFont) noexcept;` | ○ |
| C-40 | SetCellSizeでセルサイズ設定 | E-05: `void SetCellSize(...)` | ○ |
| C-41 | SetEnableBuiltinGlyphsでフラグ設定 | E-05: `void SetEnableBuiltinGlyphs(bool builtinGlyphs) noexcept;` | ○ |
| C-42 | SetEnableColorGlyphsでフラグ設定 | E-05: `void SetEnableColorGlyphs(bool colorGlyphs) noexcept;` | ○ |
| C-43 | GetCellWidthで設定値返却 | E-05: `const CSSLengthPercentage& GetCellWidth() const noexcept;` | ○ |
| C-44 | GetCellHeightで設定値返却 | E-05: `const CSSLengthPercentage& GetCellHeight() const noexcept;` | ○ |
| C-45 | GetEnableBuiltinGlyphs初期値false | E-05: `bool _builtinGlyphs = false;` | ○ |
| C-46 | GetEnableColorGlyphs初期値true | E-05: `bool _colorGlyphs = true;` | ○ |
| C-47 | GetFontSizeで設定値返却 | E-05: `float GetFontSize() const noexcept;` | ○ |
| C-48 | フォントサイズ0.0fで0.0f返却 | E-05: GetFontSize宣言（実装はcppだが型制約なし） | ○ |
| C-49 | GetEngineSizeでエンジンサイズ返却 | E-05: `til::size GetEngineSize() const noexcept;` | ○ |
| C-50 | IsDefaultRasterFontでtrue判定 | E-05: `bool IsDefaultRasterFont() const noexcept;` | ○ |
| C-51 | IsDefaultRasterFontでfalse判定 | E-05: IsDefaultRasterFont宣言 | ○ |
| C-52 | FromStringでpx単位解析 | E-06: `static CSSLengthPercentage FromString(const wchar_t* str);` + ReferenceFrame::Absolute | ○ |
| C-53 | FromStringでパーセント単位解析 | E-06: FromString宣言 + ReferenceFrame::FontSize | ○ |
| C-54 | FromStringでem単位解析 | E-06: FromString宣言 + ReferenceFrame::FontSize | ○ |
| C-55 | FromStringでch単位解析 | E-06: FromString宣言 + ReferenceFrame::AdvanceWidth | ○ |
| C-56 | FromStringで無効文字列時None返却 | E-06: ReferenceFrame::None定義「empty/unset」 | ○ |
| C-57 | FromStringで空文字列時None返却 | E-06: ReferenceFrame::None定義 | ○ |
| C-58 | FromStringでnullptr時の挙動 | E-06: FromString宣言のみ、nullptr挙動は実装依存 | △ |
| C-59 | FromStringで0px解析 | E-06: FromString宣言 | ○ |
| C-60 | FromStringで負値の挙動 | E-06: FromString宣言のみ、負値の扱いは実装依存 | △ |
| C-61 | ResolveでNone時fallback返却 | E-06: ReferenceFrame::Noneのコメント「No need to call Resolve()」 | ○ |
| C-62 | ResolveでAbsolute時DPIスケーリング | E-06: ReferenceFrame::Absoluteのコメント「scaled by that DPI」 | ○ |
| C-63 | ResolveでFontSize時相対値 | E-06: ReferenceFrame::FontSizeのコメント「relative to it」 | ○ |
| C-64 | ResolveでAdvanceWidth時相対値 | E-06: ReferenceFrame::AdvanceWidthのコメント「relative to it」 | ○ |
| C-65 | ResolveでDPI=0時の挙動 | E-06: Resolve宣言のみ、ゼロ除算の扱いは実装依存 | ○ |
| C-66 | ResolveでfontSize=0時の挙動 | E-06: Resolve宣言のみ | ○ |
| C-67 | RenderSettingsデフォルトコンストラクタ初期状態 | E-09: `til::enumset<Mode> _renderMode{ Mode::IntenseIsBright };` + `bool _blinkShouldBeFaint = false;` | ○ |
| C-68 | SetRenderModeでモード設定 | E-09: `void SetRenderMode(const Mode mode, const bool enabled) noexcept;` | ○ |
| C-69 | SetRenderModeでモード無効化 | E-09: SetRenderMode宣言 | ○ |
| C-70 | GetRenderModeで設定状態取得 | E-09: `bool GetRenderMode(const Mode mode) const noexcept;` | ○ |
| C-71 | 未設定モードでfalse返却 | E-09: enumsetの初期値から未設定モードはfalse | ○ |
| C-72 | SaveDefaultSettingsでデフォルト保存 | E-09: `void SaveDefaultSettings() noexcept;` + _defaultColorTable, _defaultColorAliasIndicesメンバ | ○ |
| C-73 | RestoreDefaultSettingsでデフォルト復元 | E-09: `void RestoreDefaultSettings() noexcept;` | ○ |
| C-74 | SetColorTableEntryでエントリ設定 | E-09: `void SetColorTableEntry(const size_t tableIndex, const COLORREF color);` | ○ |
| C-75 | SetColorTableEntry範囲外で例外 | E-09: SetColorTableEntry宣言（noexceptなし＝例外可能） | ○ |
| C-76 | GetColorTableEntryで設定色取得 | E-09: `COLORREF GetColorTableEntry(const size_t tableIndex) const;` | ○ |
| C-77 | GetColorTableEntry範囲外で例外 | E-09: GetColorTableEntry宣言（noexceptなし＝例外可能） | ○ |
| C-78 | GetColorTableでテーブル全体返却 | E-09: `const std::array<COLORREF, TextColor::TABLE_SIZE>& GetColorTable() const noexcept;` | ○ |
| C-79 | ResetColorTableでリセット | E-09: `void ResetColorTable() noexcept;` | ○ |
| C-80 | RestoreDefaultIndexed256ColorTable復元 | E-09: `void RestoreDefaultIndexed256ColorTable();` | ○ |
| C-81 | RestoreDefaultColorTableEntry個別復元 | E-09: `void RestoreDefaultColorTableEntry(const size_t tableIndex);` | ○ |
| C-82 | SetColorAliasでエイリアス設定 | E-09: `void SetColorAlias(...)` | ○ |
| C-83 | GetColorAliasで設定色取得 | E-09: `COLORREF GetColorAlias(const ColorAlias alias) const;` | ○ |
| C-84 | SetColorAliasIndexでインデックス設定 | E-09: `void SetColorAliasIndex(...) noexcept;` | ○ |
| C-85 | GetColorAliasIndexでインデックス取得 | E-09: `size_t GetColorAliasIndex(...) const noexcept;` | ○ |
| C-86 | RestoreDefaultColorAliasIndex復元 | E-09: `void RestoreDefaultColorAliasIndex(...) noexcept;` | ○ |
| C-87 | GetAttributeColorsで色ペア返却 | E-09: `std::pair<COLORREF, COLORREF> GetAttributeColors(...) const noexcept;` | ○ |
| C-88 | ScreenReversedで前景背景反転 | E-09: Mode::ScreenReversed定義 + GetAttributeColors宣言 | ○ |
| C-89 | IntenseIsBrightで明るい色 | E-09: Mode::IntenseIsBright定義 + GetAttributeColors宣言 | ○ |
| C-90 | GetAttributeColorsWithAlphaでアルファ付き | E-09: `std::pair<COLORREF, COLORREF> GetAttributeColorsWithAlpha(...) const noexcept;` | ○ |
| C-91 | GetAttributeUnderlineColorで下線色 | E-09: `COLORREF GetAttributeUnderlineColor(...) const noexcept;` | ○ |
| C-92 | ToggleBlinkRenditionで切り替え | E-09: `void ToggleBlinkRendition() noexcept;` + `bool _blinkShouldBeFaint = false;` | ○ |
| C-93 | ToggleBlinkRendition連続呼び出しトグル | E-09: ToggleBlinkRendition宣言 | ○ |
| C-94 | TimerHandle初期状態false | E-08: `size_t id = SIZE_T_MAX;` + `explicit operator bool() { return id != SIZE_T_MAX; }` | ○ |
| C-95 | TimerHandle有効ID時true | E-08: operator bool実装 | ○ |
| C-96 | GetActiveCompositionでsnippetPreview優先 | E-08: `return !snippetPreview.text.empty() ? snippetPreview : tsfPreview;` | ○ |
| C-97 | GetActiveCompositionでtsfPreviewフォールバック | E-08: 上記実装のelse部分 | ○ |
| C-98 | 両方空の場合tsfPreview返却 | E-08: `snippetPreview.text.empty()` がtrueならtsfPreview返却 | ○ |
| C-99 | InvalidateSelectionでS_OK返却 | E-10: `HRESULT InvalidateSelection(std::span<const til::rect>) noexcept override;` | ○ |
| C-100 | 空spanでS_OK返却 | E-10: InvalidateSelection宣言 | ○ |
| C-101 | InvalidateHighlightでS_OK返却 | E-10: `HRESULT InvalidateHighlight(...) noexcept override;` | ○ |
| C-102 | InvalidateTitleでタイトル変更フラグ設定 | E-10: `HRESULT InvalidateTitle(...) noexcept override;` + `bool _titleChanged` | ○ |
| C-103 | 同一タイトルでフラグ未設定 | E-10: InvalidateTitle宣言 + `std::wstring _lastFrameTitle` | ○ |
| C-104 | UpdateTitleでフラグtrue時_DoUpdateTitle呼出 | E-10: `HRESULT UpdateTitle(...) noexcept override;` + _titleChanged | ○ |
| C-105 | UpdateTitleでフラグfalse時スキップ | E-10: UpdateTitle宣言 + _titleChanged | ○ |
| C-106 | NotifyNewTextでS_OK返却 | E-10: `HRESULT NotifyNewText(...) noexcept override;` | ○ |
| C-107 | UpdateSoftFontでS_OK返却 | E-10: `HRESULT UpdateSoftFont(...) noexcept override;` | ○ |
| C-108 | PrepareRenderInfoでS_OK返却 | E-10: `HRESULT PrepareRenderInfo(...) noexcept override;` | ○ |
| C-109 | ResetLineTransformでS_OK返却 | E-10: `HRESULT ResetLineTransform() noexcept override;` | ○ |
| C-110 | PrepareLineTransformでS_OK返却 | E-10: `HRESULT PrepareLineTransform(...) noexcept override;` | ○ |
| C-111 | PaintImageSliceでS_OK返却 | E-10: `HRESULT PaintImageSlice(...) noexcept override;` | ○ |
| C-112 | RequiresContinuousRedrawでfalse返却 | E-10: `bool RequiresContinuousRedraw() noexcept override;` | ○ |
| C-113 | UpdateHyperlinkHoveredIdでID更新 | E-10: `void UpdateHyperlinkHoveredId(const uint16_t hoveredId) noexcept override;` | ○ |
| C-114 | FontResource有効パラメータで構築 | E-11: コンストラクタ宣言 | ○ |
| C-115 | FontResourceデフォルトコンストラクタ | E-11: `FontResource() = default;` | ○ |
| C-116 | SetTargetSizeでサイズ設定 | E-11: `void SetTargetSize(const til::size targetSize);` | ○ |
| C-117 | SetTargetSizeでゼロサイズの挙動 | E-11: SetTargetSize宣言のみ、実装詳細不明 | △ |
| C-118 | operator HFONTで有効ハンドル返却 | E-11: `operator HFONT();` | ○ |
| C-119 | operator HFONTで未構築時の挙動 | E-11: operator HFONT宣言のみ、実装詳細不明 | △ |
| C-120 | DummyRenderer nullptr構築 | E-12: `DummyRenderer(IRenderData* pData = nullptr)` | ○ |
| C-121 | DummyRenderer有効ポインタ構築 | E-12: コンストラクタ宣言 | ○ |
| C-122 | AlwaysDistinguishableColorsモード | E-09: Mode::AlwaysDistinguishableColors定義 | ○ |
| C-123 | IndexedDistinguishableColorsモード | E-09: Mode::IndexedDistinguishableColors定義 | ○ |
| C-124 | IntenseIsBoldモード | E-09: Mode::IntenseIsBold定義 | ○ |
| C-125 | CursorOptionsフィールド初期化 | E-02: 全フィールド定義確認 | ○ |
| C-126 | ダブル幅カーソル | E-02: `bool fIsDoubleWidth;` | ○ |
| C-127 | カスタムカーソル色 | E-02: `bool fUseColor; COLORREF cursorColor;` | ○ |
| C-128 | RenderFrameInfo構造体初期化 | E-13: RenderFrameInfo定義 | ○ |
| C-129 | CompositionRange構造体初期化 | E-08: CompositionRange定義 | ○ |
| C-130 | Composition構造体初期化 | E-08: Composition定義 | ○ |
| C-131 | Composition cursorPosデフォルト値0 | E-08: `size_t cursorPos = 0;` | ○ |

## 4) 不足情報（Unknown / Missing）
- **ValidateFont (FontInfoBase, FontInfo) の内部実装**: ヘッダファイルにはメソッド宣言のみが存在し、実装はcppファイルにある。フォールバック動作やゼロサイズ補正の詳細動作を確認するには実装ファイルが必要
  - 候補: `src/renderer/base/FontInfoBase.cpp` / `src/renderer/base/FontInfo.cpp`
- **CSSLengthPercentage::FromString の実装詳細**: nullptr入力時や負の値入力時の挙動はヘッダ宣言からは推測のみ
  - 候補: `src/renderer/base/CSSLengthPercentage.cpp` / 該当するcppファイル
- **FontResource の実装詳細**: SetTargetSizeやoperator HFONTの実装がヘッダにはなく、異常系の挙動は不明
  - 候補: `src/renderer/base/FontResource.cpp` / 該当するcppファイル
- **RenderEngineBase のデフォルト実装詳細**: 各override関数のデフォルト実装がcppにあり、戻り値(S_OK等)の詳細は推測に基づく
  - 候補: `src/renderer/base/RenderEngineBase.cpp`

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - renderer-incモジュールはヘッダファイル(hpp/h)のみで構成されており、実装の詳細(cppファイル)は他モジュール(renderer-base等)に存在する。テストケースのうち、メソッド宣言から推測したものについては実装ファイルの確認が推奨される
- **0: 低リスク** - インラインで実装が確認できるCluster、TimerHandle、IRenderData::GetActiveCompositionについてはヘッダから完全に検証可能
- **1: 中リスク** - CSSLengthPercentage::FromStringは外部入力(文字列)を解析するパーサーであり、異常入力・エッジケースの網羅性はレビューが必要

## 6) レビュアーチェックリスト（最小）
- [ ] ValidateFont (FontInfoBase, FontInfo) の実装cppファイルを確認し、フォールバック動作とゼロサイズ補正の期待結果が正しいか検証する
- [ ] CSSLengthPercentage::FromString の実装を確認し、nullptr/空文字列/負値/単位なし等の異常入力への対応が正しいか検証する
- [ ] FontResource::SetTargetSize および operator HFONT の実装を確認し、異常系テストケースの期待結果が正しいか検証する
- [ ] RenderEngineBase のデフォルト実装(cppファイル)を確認し、各メソッドの戻り値(S_OK想定)が正しいか検証する
- [ ] RenderSettings::GetAttributeColors の各モード組み合わせ(ScreenReversed, IntenseIsBright, DistinguishableColors等)の動作を実装から検証する
- [ ] 純粋仮想インタフェース(IRenderEngine, IFontDefaultList)はテスト対象外としたことが妥当か確認する
