"No","テストID","対象ファイル","対象クラス/関数","対象メソッド","テスト観点","テストケース名","前提条件","入力値","期待結果","優先度","備考"
"1","UT-ACF-001","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","FixableDiagnosticIds","正常系","FixableDiagnosticIdsがAVA2002を含むこと","なし","なし","ImmutableArray<string>に""AVA2002""が含まれる","高","診断IDの正確性は修正対象の特定に必須"
"2","UT-ACF-002","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","FixableDiagnosticIds","正常系","FixableDiagnosticIdsが1件のみ返却されること","なし","なし","ImmutableArray<string>の要素数が1","中","想定外の診断IDに反応しないことの確認"
"3","UT-ACF-003","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","GetFixAllProvider","正常系","WellKnownFixAllProviders.BatchFixerが返却されること","なし","なし","WellKnownFixAllProviders.BatchFixerと等しいオブジェクトが返却される","高","一括修正機能の提供確認"
"4","UT-ACF-004","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","GetFixAllProvider","正常系","GetFixAllProviderがnullを返却しないこと","なし","なし","戻り値がnullではない","中","FixAllProviderの存在確認"
"5","UT-ACF-005","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","RegisterCodeFixesAsync","正常系","avares://で始まる文字列引数を含むローカル変数宣言に対してコード修正が登録されること","AVA2002診断が報告されたドキュメント","診断位置にLocalDeclarationStatementSyntaxが存在","CodeFixContextにコード修正が1件登録される","高","基本的なコード修正登録機能"
"6","UT-ACF-006","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","RegisterCodeFixesAsync","正常系","登録されるコード修正のタイトルが正しいこと","AVA2002診断が報告されたドキュメント","診断位置にLocalDeclarationStatementSyntaxが存在","登録されるCodeActionのタイトルが""Use AssetLoader to open assets as stream first""である","中","ユーザー向け表示の確認"
"7","UT-ACF-007","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","RegisterCodeFixesAsync","異常系","複数の診断がある場合に最初の診断のみ処理されること","AVA2002診断が複数報告されたドキュメント","context.Diagnosticsに複数の診断が含まれる","最初の診断位置に対してのみコード修正が登録される","中","First()による取得動作の確認"
"8","UT-ACF-008","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","RegisterCodeFixesAsync","異常系","LocalDeclarationStatementSyntaxが見つからない場合に例外がスローされること","AVA2002診断が報告されたドキュメント","診断位置にLocalDeclarationStatementSyntaxが存在しない","InvalidOperationExceptionがスローされる","高","異常ケースのエラーハンドリング確認"
"9","UT-ACF-009","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","avares://で始まる文字列がAssetLoader.Open(new Uri(...))に置換されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://MyAssembly/Assets/image.png""を含む","引数がAssetLoader.Open(new Uri(""avares://MyAssembly/Assets/image.png""))に変換される","高","コア機能のテスト"
"10","UT-ACF-010","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","avares://で始まらない文字列引数は変換されないこと","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""https://example.com/image.png""を含む","引数がそのまま保持される","高","非対象引数の保護確認"
"11","UT-ACF-011","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","複数の引数がある場合にavares://で始まる引数のみ置換されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://...""と""file://...""の両方を含む","avares://の引数のみAssetLoader.Open形式に変換され、他の引数はそのまま","高","選択的変換の確認"
"12","UT-ACF-012","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","Avalonia.Platform using文が追加されること","using Avalonia.Platformが存在しないドキュメント","avares://で始まる引数を含む宣言","変換後のドキュメントにusing Avalonia.Platform;が追加される","高","必要な名前空間の自動追加"
"13","UT-ACF-013","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","System using文が追加されること","using Systemが存在しないドキュメント","avares://で始まる引数を含む宣言","変換後のドキュメントにusing System;が追加される","高","Uriクラス用の名前空間追加"
"14","UT-ACF-014","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","既存のAvalonia.Platform using文がある場合は重複追加されないこと","using Avalonia.Platformが既に存在するドキュメント","avares://で始まる引数を含む宣言","using Avalonia.Platform;が重複して追加されない","中","重複using防止の確認"
"15","UT-ACF-015","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","既存のSystem using文がある場合は重複追加されないこと","using Systemが既に存在するドキュメント","avares://で始まる引数を含む宣言","using System;が重複して追加されない","中","重複using防止の確認"
"16","UT-ACF-016","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","境界値","空文字列の引数がある場合は変換されないこと","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に空文字列""""を含む","引数がそのまま保持される","中","空文字列の境界値テスト"
"17","UT-ACF-017","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","境界値","avares://のみの文字列（パスなし）が正しく処理されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://""のみを含む","AssetLoader.Open(new Uri(""avares://""))に変換される","低","最小avares文字列の処理"
"18","UT-ACF-018","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","境界値","引数が0件の場合に例外がスローされないこと","ObjectCreationExpressionSyntaxを含むローカル変数宣言","ArgumentListが空","空のArgumentListのままオブジェクト生成式が保持される","中","空引数リストの処理"
"19","UT-ACF-019","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","異常系","定数でない式の引数は変換されないこと","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に変数参照や関数呼び出しを含む","定数でない引数はそのまま保持される","高","GetConstantValue().HasValueがfalseの場合"
"20","UT-ACF-020","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","異常系","文字列以外の定数値の引数は変換されないこと","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に数値リテラル(例: 123)を含む","数値引数はそのまま保持される","中","constantValue.Valueが文字列でない場合"
"21","UT-ACF-021","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","avares://の大文字小文字が保持されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://MyAssembly/Path""を含む","変換後のUri引数で元の大文字小文字が保持される","中","文字列の完全性確認"
"22","UT-ACF-022","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","特殊文字を含むパスが正しく処理されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://Assembly/Path With Space/image.png""を含む","特殊文字を含むパスがそのままUri引数として保持される","中","パスの特殊文字処理"
"23","UT-ACF-023","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","正常系","日本語パスが正しく処理されること","ObjectCreationExpressionSyntaxを含むローカル変数宣言","引数に""avares://Assembly/画像/test.png""を含む","日本語パスがそのままUri引数として保持される","低","マルチバイト文字の処理"
"24","UT-ACF-024","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","RegisterCodeFixesAsync","異常系","CancellationTokenがキャンセルされた場合の動作","AVA2002診断が報告されたドキュメント","context.CancellationTokenがキャンセル済み","OperationCanceledExceptionがスローされるか、処理が中断される","中","キャンセル処理の確認"
"25","UT-ACF-025","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","異常系","SyntaxRootがnullの場合の動作","不正なドキュメント状態","GetSyntaxRootAsync()がnullを返す","NullReferenceExceptionがスローされる","中","異常ドキュメント状態のテスト"
"26","UT-ACF-026","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","異常系","SemanticModelがnullの場合の動作","不正なドキュメント状態","GetSemanticModelAsync()がnullを返す","NullReferenceExceptionがスローされる","中","異常ドキュメント状態のテスト"
"27","UT-ACF-027","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","ReplaceArgumentAsync","異常系","ObjectCreationExpressionSyntaxが見つからない場合の動作","LocalDeclarationStatementSyntaxは存在するが内部にObjectCreationExpressionSyntaxがない","ObjectCreationExpressionSyntaxを含まない宣言","InvalidOperationExceptionがスローされる","高","First()による例外発生の確認"
"28","UT-ACF-028","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","クラス属性","正常系","ExportCodeFixProvider属性が正しく設定されていること","なし","なし","LanguageNames.CSharpとName=nameof(BitmapAnalyzerCodeFixProvider)で属性が設定されている","高","MEFによるエクスポート設定の確認"
"29","UT-ACF-029","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","クラス属性","正常系","Shared属性が設定されていること","なし","なし","[Shared]属性がクラスに付与されている","中","MEFによる共有設定の確認"
"30","UT-ACF-030","src/tools/Avalonia.Analyzers.CodeFixes.CSharp/BitmapAnalyzerCodeFixProvider.cs","BitmapAnalyzerCodeFixProvider","継承","正常系","CodeFixProviderを継承していること","なし","なし","BitmapAnalyzerCodeFixProviderがCodeFixProviderを継承している","高","Roslyn Analyzerフレームワークとの互換性"
