"No","テストID","対象ファイル","対象クラス/関数","対象メソッド","テスト観点","テストケース名","前提条件","入力値","期待結果","優先度","備考"
"1","UT-HFB-001","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","有効なテキストが正しくシェイプされること","HarfBuzzTypefaceが設定されたGlyphTypefaceを使用","text=""Hello"", options.GlyphTypeface, options.FontRenderingEmSize=12","適切なグリフ情報を含むShapedBufferが返却される","高","テキストシェイピングの基本機能"
"2","UT-HFB-002","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","空文字列の場合に空のShapedBufferが返却されること","なし","text="""", options.GlyphTypeface, options.FontRenderingEmSize=12","長さ0のShapedBufferが返却される","高","エッジケース対応"
"3","UT-HFB-003","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","異常系","非HarfBuzzTypefaceが指定された場合にNotSupportedExceptionがスローされること","HarfBuzzTypeface以外のTextShaperTypefaceを使用","options.GlyphTypeface.TextShaperTypeface != HarfBuzzTypeface","NotSupportedExceptionがスローされる","高","型チェックの検証"
"4","UT-HFB-004","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","RTL（右から左）テキストが正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=""שלום"", options.BidiLevel=1","Direction.RightToLeftでシェイプされ、バッファが逆順になる","高","双方向テキスト対応"
"5","UT-HFB-005","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","LTR（左から右）テキストが正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=""Hello"", options.BidiLevel=0","Direction.LeftToRightでシェイプされる","高","双方向テキスト対応"
"6","UT-HFB-006","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","タブ文字が正しく処理されること","HarfBuzzTypefaceが設定済み","text=""\t"", options.IncrementalTabWidth=40","タブ文字がスペースグリフに変換され、指定幅で進む","中","タブ文字の特殊処理"
"7","UT-HFB-007","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","タブ文字でIncrementalTabWidth=0の場合にデフォルト幅が使用されること","HarfBuzzTypefaceが設定済み","text=""\t"", options.IncrementalTabWidth=0","スペースの4倍の幅が使用される","中","タブ文字のデフォルト処理"
"8","UT-HFB-008","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","LetterSpacingが適用されること","HarfBuzzTypefaceが設定済み","text=""AB"", options.LetterSpacing=5.0","各グリフのadvanceにLetterSpacingが加算される","中","字間調整"
"9","UT-HFB-009","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","カルチャが正しく設定されること","HarfBuzzTypefaceが設定済み","text=""Test"", options.Culture=new CultureInfo(""ja-JP"")","指定されたカルチャのLanguageがバッファに設定される","中","言語設定"
"10","UT-HFB-010","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","カルチャがnullの場合にCurrentCultureが使用されること","HarfBuzzTypefaceが設定済み","text=""Test"", options.Culture=null","CultureInfo.CurrentCultureが使用される","中","デフォルトカルチャ"
"11","UT-HFB-011","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","FontFeaturesが適用されること","HarfBuzzTypefaceが設定済み","text=""Test"", options.FontFeatures=[kern, liga]","指定されたフォント機能がシェイピングに適用される","中","OpenType機能"
"12","UT-HFB-012","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","境界値","FontFeaturesがnullの場合に空の配列が使用されること","HarfBuzzTypefaceが設定済み","text=""Test"", options.FontFeatures=null","正常にシェイピングが完了する","低","null安全性"
"13","UT-HFB-013","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","境界値","FontFeaturesが空の場合に空の配列が使用されること","HarfBuzzTypefaceが設定済み","text=""Test"", options.FontFeatures=[]","正常にシェイピングが完了する","低","空コレクション"
"14","UT-HFB-014","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","CRLF改行ペアが正しくマージされること","HarfBuzzTypefaceが設定済み","text=""A\r\nB""","改行ペアが単一クラスタとして処理される","高","改行処理"
"15","UT-HFB-015","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","LF単独の改行が正しく処理されること","HarfBuzzTypefaceが設定済み","text=""A\nB""","LFがZWNJに変換される","中","改行処理"
"16","UT-HFB-016","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","CreateTypeface","正常系","GlyphTypefaceからHarfBuzzTypefaceが作成されること","有効なGlyphTypeface","glyphTypeface=ValidGlyphTypeface","HarfBuzzTypefaceインスタンスが返却される","高","タイプフェイス作成"
"17","UT-HFB-017","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzApplicationExtensions.cs","HarfBuzzApplicationExtensions","UseHarfBuzz","正常系","AppBuilderにHarfBuzzTextShaperが登録されること","AppBuilderインスタンス","builder=AppBuilder.Configure<App>()","ITextShaperImplにHarfBuzzTextShaperが設定されたAppBuilderが返却される","高","アプリケーション設定"
"18","UT-HFB-018","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzApplicationExtensions.cs","HarfBuzzApplicationExtensions","UseHarfBuzz","正常系","メソッドチェーンで使用できること","AppBuilderインスタンス","builder.UseHarfBuzz().UsePlatformDetect()","AppBuilderインスタンスが返却されチェーン可能","中","Fluent API"
"19","UT-HFB-019","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","Constructor","正常系","GlyphTypefaceからHBFontとHBFaceが初期化されること","有効なGlyphTypeface","glyphTypeface=ValidGlyphTypeface","HBFont, HBFaceが正しく初期化される","高","初期化処理"
"20","UT-HFB-020","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","Constructor","正常系","UnitsPerEmがGlyphTypefaceのMetricsから設定されること","有効なGlyphTypeface","glyphTypeface.Metrics.DesignEmHeight=2048","HBFace.UnitsPerEm=2048が設定される","中","フォントメトリクス"
"21","UT-HFB-021","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","GetTable","正常系","管理配列バックのテーブルが正しく取得されること","PlatformTypefaceがテーブルデータを持つ","tag=Tag.kern","ピン留めされたBlobが返却される","中","テーブル取得（配列）"
"22","UT-HFB-022","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","GetTable","正常系","非配列バックのテーブルがネイティブメモリにコピーされること","PlatformTypefaceがMemoryManager等でバックされる","tag=Tag.kern","AllocHGlobalで確保されたBlobが返却される","中","テーブル取得（ネイティブ）"
"23","UT-HFB-023","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","GetTable","異常系","存在しないテーブルの場合にnullが返却されること","PlatformTypefaceがテーブルを持たない","tag=存在しないTag","nullが返却される","中","テーブル不在"
"24","UT-HFB-024","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","Dispose","正常系","HBFontとHBFaceが正しく破棄されること","HarfBuzzTypefaceが初期化済み","なし","HBFont.Dispose(), HBFace.Dispose()が呼び出される","高","リソース解放"
"25","UT-HFB-025","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","Dispose","正常系","複数回Disposeを呼び出しても例外が発生しないこと","HarfBuzzTypefaceが初期化済み","Dispose()を2回呼び出し","例外が発生しない","中","安全なDispose"
"26","UT-HFB-026","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTypeface.cs","HarfBuzzTypeface","GlyphTypeface","正常系","コンストラクタで渡されたGlyphTypefaceが取得できること","HarfBuzzTypefaceが初期化済み","なし","コンストラクタで渡されたGlyphTypefaceと同一のインスタンス","低","プロパティ取得"
"27","UT-HFB-027","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","境界値","1文字のテキストが正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=""A""","1つのグリフを含むShapedBufferが返却される","中","最小文字数"
"28","UT-HFB-028","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","サロゲートペア文字が正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=""\U0001F600"" (絵文字)","サロゲートペアが正しく処理される","中","Unicode処理"
"29","UT-HFB-029","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","結合文字が正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=""é"" (e + combining acute)","結合文字が正しくクラスタ化される","中","結合文字処理"
"30","UT-HFB-030","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","境界値","非常に長いテキストが正しくシェイプされること","HarfBuzzTypefaceが設定済み","text=10000文字の文字列","メモリ不足なく正常に処理される","低","大量データ"
"31","UT-HFB-031","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","スレッドセーフにシェイピングが実行されること","複数スレッドから同時アクセス","複数スレッドから同時にShapeText呼び出し","各スレッドで正しい結果が返却される","高","スレッドセーフ（ThreadStatic使用）"
"32","UT-HFB-032","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","同一カルチャのLanguageがキャッシュされること","同一カルチャで複数回呼び出し","options.Culture=CultureInfo(""en-US"")を複数回","s_cachedLanguageからキャッシュが再利用される","低","パフォーマンス最適化"
"33","UT-HFB-033","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","FontRenderingEmSizeに基づいてスケールが正しく計算されること","HarfBuzzTypefaceが設定済み","options.FontRenderingEmSize=24","textScale=FontRenderingEmSize/scaleXでグリフ位置が計算される","中","スケール計算"
"34","UT-HFB-034","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","ShapeText","正常系","グリフオフセットが正しく計算されること","HarfBuzzTypefaceが設定済み","オフセットを持つグリフを含むテキスト","XOffset, YOffsetが正しくVectorに変換される","中","オフセット計算"
"35","UT-HFB-035","src/HarfBuzz/Avalonia.HarfBuzz/HarfBuzzTextShaper.cs","HarfBuzzTextShaper","GetContainingMemory","異常系","サポートされないメモリタイプの場合にInvalidOperationExceptionがスローされること","特殊なMemory<char>実装","カスタムMemory<char>","InvalidOperationExceptionがスローされる","低","エラーハンドリング"
