---
generated_at: 2026-01-28 14:30:00
metrics:
  claims_total: 116
  claims_with_evidence: 112
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート：utils.csv（単体テストケース一覧）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：112 / 116、根拠なし：4
- 優先レビュー（高）
  1. **UT-UTL-061, 062**：checkInternetConnection - 外部パッケージ依存のため実際の動作確認が必要
  2. **UT-UTL-089, 090**：PushNotificationsManager - Firebase依存のためモック化が必要
  3. **UT-UTL-109, 110**：preCacheLanguageData - API呼び出しのモック化が必要

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

- E-01: `lib/utils/input_field_validators.dart` - PhoneNumberValidator, EmailValidator mixins
- E-02: `lib/utils/extension.dart` - HexColor extension, getAttributesValueFromAdditional, getValueFromDynamic, formatCurrency
- E-03: `lib/utils/shared_preference_helper.dart` - SharedPreferenceHelper class
- E-04: `lib/utils/status_color_helper.dart` - OrderStatusBGColorHelper, ReviewColorHelper
- E-05: `lib/utils/check_internet_connection.dart` - checkInternetConnection function
- E-06: `lib/utils/theme_provider.dart` - ThemeProvider class
- E-07: `lib/utils/application_localization.dart` - ApplicationLocalizations, StringExtend extension
- E-08: `lib/utils/badge_helper.dart` - BadgeIcon widget
- E-09: `lib/utils/dialog_helper.dart` - DialogHelper class
- E-10: `lib/utils/radio_button_group.dart` - RadioButtonGroup widget
- E-11: `lib/utils/check_box_group.dart` - CheckboxGroup widget
- E-12: `lib/utils/push_notifications_manager.dart` - PushNotificationsManager class
- E-13: `lib/utils/circular_progress_indicator.dart` - CircularProgressIndicatorClass
- E-14: `lib/utils/app_global_data.dart` - GlobalData class
- E-15: `lib/utils/mobikul_theme.dart` - MobiKulTheme class
- E-16: `lib/utils/app_navigation.dart` - generateRoute function
- E-17: `lib/utils/prefetching_helper.dart` - preCacheLanguageData, preCacheCMSData, etc.
- E-18: `lib/utils/no_data_found_widget.dart` - NoDataFound widget
- E-19: `lib/utils/app_constants.dart` - AppSizes, AppColors classes
- E-20: `lib/utils/assets_constants.dart` - AssetConstants, IcoMoonIcons classes
- E-21: `lib/utils/string_constants.dart` - StringConstants class
- E-22: `lib/utils/route_constants.dart` - Route constant definitions
- E-23: `lib/utils/shared_preference_keys.dart` - SharedPreference key constants
- E-24: `lib/utils/server_configuration.dart` - Server configuration constants

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | PhoneNumberValidator.isValidPhone - 有効な電話番号でtrueが返却される | E-01 (line 12-16) | ○ |
| C-02 | PhoneNumberValidator.isValidPhone - 国際番号形式対応 | E-01 (line 14) | ○ |
| C-03 | PhoneNumberValidator.isValidPhone - 短すぎる番号でfalse | E-01 (line 14 regex) | ○ |
| C-04 | PhoneNumberValidator.isValidPhone - 長すぎる番号でfalse | E-01 (line 14 regex) | ○ |
| C-05 | PhoneNumberValidator.isValidPhone - 不正文字でfalse | E-01 (line 14 regex) | ○ |
| C-06 | PhoneNumberValidator.isValidPhone - 10桁境界値 | E-01 (line 14 regex) | ○ |
| C-07 | PhoneNumberValidator.isValidPhone - 12桁境界値 | E-01 (line 14 regex) | ○ |
| C-08 | EmailValidator.isValidEmail - 有効なメールでtrue | E-01 (line 18-24) | ○ |
| C-09 | EmailValidator.isValidEmail - サブドメイン対応 | E-01 (line 20-22 regex) | ○ |
| C-10 | EmailValidator.isValidEmail - @なしでfalse | E-01 (line 20-22 regex) | ○ |
| C-11 | EmailValidator.isValidEmail - ドメインなしでfalse | E-01 (line 20-22 regex) | ○ |
| C-12 | EmailValidator.isValidEmail - 空文字でfalse | E-01 (line 20-22 regex) | ○ |
| C-13 | HexColor.fromHex - 6桁16進数 | E-02 (line 16-21) | ○ |
| C-14 | HexColor.fromHex - #付き形式 | E-02 (line 19) | ○ |
| C-15 | HexColor.fromHex - 8桁16進数 | E-02 (line 18) | ○ |
| C-16 | HexColor.toHex - ハッシュ付き出力 | E-02 (line 24-28) | ○ |
| C-17 | HexColor.toHex - ハッシュなし出力 | E-02 (line 24) | ○ |
| C-18 | HexColor.toCssHex - CSS形式出力 | E-02 (line 30-36) | ○ |
| C-19 | getAttributesValueFromAdditional - List形式解析 | E-02 (line 46-51) | ○ |
| C-20 | getAttributesValueFromAdditional - Map形式解析 | E-02 (line 53-54) | ○ |
| C-21 | getAttributesValueFromAdditional - null安全性 | E-02 (line 42) | ○ |
| C-22 | getAttributesValueFromAdditional - キー不存在 | E-02 (line 57-61) | ○ |
| C-23 | getAttributeKeyValueFromAdditional - 正常取得 | E-02 (line 65-88) | ○ |
| C-24 | getAttributeKeyValueFromAdditional - 範囲外 | E-02 (line 74, 85) | ○ |
| C-25 | getValueFromDynamic - 正常取得 | E-02 (line 92-99) | ○ |
| C-26 | getValueFromDynamic - null安全性 | E-02 (line 93) | ○ |
| C-27 | getValueFromDynamic - キー不存在 | E-02 (line 97) | ○ |
| C-28 | formatCurrency - USD形式 | E-02 (line 101-104) | ○ |
| C-29 | formatCurrency - JPY形式 | E-02 (line 101-104) | ○ |
| C-30 | SharedPreferenceHelper.getDate/setDate | E-03 (line 30-36) | ○ |
| C-31 | SharedPreferenceHelper.getDate - デフォルト値 | E-03 (line 31) | ○ |
| C-32 | SharedPreferenceHelper.getLanguageName/setLanguageName | E-03 (line 38-44) | ○ |
| C-33 | SharedPreferenceHelper.getLanguageName - デフォルト値 | E-03 (line 43) | ○ |
| C-34 | SharedPreferenceHelper.getCartCount/setCartCount | E-03 (line 82-88) | ○ |
| C-35 | SharedPreferenceHelper.getCartCount - デフォルト値 | E-03 (line 87) | ○ |
| C-36 | SharedPreferenceHelper.getCustomerToken/setCustomerToken | E-03 (line 98-104) | ○ |
| C-37 | SharedPreferenceHelper.getCustomerToken - デフォルト値 | E-03 (line 103) | ○ |
| C-38 | SharedPreferenceHelper.getCustomerLoggedIn/setCustomerLoggedIn | E-03 (line 130-136) | ○ |
| C-39 | SharedPreferenceHelper.getCustomerLoggedIn - デフォルト値 | E-03 (line 131) | ○ |
| C-40 | SharedPreferenceHelper.onUserLogout | E-03 (line 63-72) | ○ |
| C-41 | SharedPreferenceHelper.getCurrencySymbol/setCurrencySymbol | E-03 (line 162-168) | ○ |
| C-42 | SharedPreferenceHelper.getCurrencySymbol - デフォルト値 | E-03 (line 167) | ○ |
| C-43 | SharedPreferenceHelper.getCurrencyCode/setCurrencyCode | E-03 (line 186-192) | ○ |
| C-44 | SharedPreferenceHelper.getCurrencyCode - デフォルト値 | E-03 (line 191) | ○ |
| C-45 | SharedPreferenceHelper.getTheme/setTheme | E-03 (line 154-160) | ○ |
| C-46 | SharedPreferenceHelper.getFingerPrintUser/setFingerPrintUser | E-03 (line 138-144) | ○ |
| C-47 | SharedPreferenceHelper.getDrawerCategories/setDrawerCategories | E-03 (line 202-214) | ○ |
| C-48 | SharedPreferenceHelper.getDrawerCategories - JSON変換 | E-03 (line 207-213) | ○ |
| C-49 | OrderStatusBGColorHelper.getOrderBgColor - completed | E-04 (line 20-21) | ○ |
| C-50 | OrderStatusBGColorHelper.getOrderBgColor - pending | E-04 (line 22-23) | ○ |
| C-51 | OrderStatusBGColorHelper.getOrderBgColor - canceled | E-04 (line 28-29) | ○ |
| C-52 | OrderStatusBGColorHelper.getOrderBgColor - 大文字小文字無視 | E-04 (line 19 toLowerCase) | ○ |
| C-53 | OrderStatusBGColorHelper.getOrderBgColor - デフォルト色 | E-04 (line 40-41) | ○ |
| C-54 | ReviewColorHelper.getColor - 1つ星 | E-04 (line 48-49) | ○ |
| C-55 | ReviewColorHelper.getColor - 2つ星 | E-04 (line 50-51) | ○ |
| C-56 | ReviewColorHelper.getColor - 3つ星 | E-04 (line 52-53) | ○ |
| C-57 | ReviewColorHelper.getColor - 4つ星 | E-04 (line 54-55) | ○ |
| C-58 | ReviewColorHelper.getColor - 5つ星 | E-04 (line 56-57) | ○ |
| C-59 | ReviewColorHelper.getColor - 境界値0.5 | E-04 (line 48) | ○ |
| C-60 | ReviewColorHelper.getColor - 境界値1.1 | E-04 (line 50) | ○ |
| C-61 | checkInternetConnection - 接続あり | E-05 (line 13-15) | △ |
| C-62 | checkInternetConnection - 接続なし | E-05 (line 13-15) | △ |
| C-63 | ThemeProvider.isDark getter | E-06 (line 18) | ○ |
| C-64 | ThemeProvider.isDark setter - 保存 | E-06 (line 26-29) | ○ |
| C-65 | ThemeProvider.isDark setter - 通知 | E-06 (line 29) | ○ |
| C-66 | ThemeProvider.getPreferences - 自動検出 | E-06 (line 34-57) | ○ |
| C-67 | ApplicationLocalizations.load | E-07 (line 41-59) | ○ |
| C-68 | ApplicationLocalizations.translate - 正常 | E-07 (line 62-64) | ○ |
| C-69 | ApplicationLocalizations.translate - フォールバック | E-07 (line 63) | ○ |
| C-70 | StringExtend.localized - 正常 | E-07 (line 94-97) | ○ |
| C-71 | StringExtend.localized - null安全 | E-07 (line 96) | ○ |
| C-72 | _AppLocalizationsDelegate.isSupported - サポート | E-07 (line 74-79) | ○ |
| C-73 | _AppLocalizationsDelegate.isSupported - 未サポート | E-07 (line 76-78) | ○ |
| C-74 | BadgeIcon.build - バッジ表示 | E-08 (line 40-45) | ○ |
| C-75 | BadgeIcon.build - showIfZero=true | E-08 (line 43) | ○ |
| C-76 | BadgeIcon.build - showIfZero=false | E-08 (line 43) | ○ |
| C-77 | DialogHelper.networkErrorDialog | E-09 (line 19-50) | ○ |
| C-78 | DialogHelper.closeDialog | E-09 (line 52-54) | ○ |
| C-79 | DialogHelper.searchDialog | E-09 (line 56-110) | ○ |
| C-80 | RadioButtonGroup.build - 生成 | E-10 (line 85-141) | ○ |
| C-81 | RadioButtonGroup.build - 初期選択 | E-10 (line 81, 95) | ○ |
| C-82 | RadioButtonGroup.build - 無効化 | E-10 (line 101-104) | ○ |
| C-83 | RadioButtonGroup.onChange | E-10 (line 108-109) | ○ |
| C-84 | CheckboxGroup.build | E-11 (line 77-138) | ○ |
| C-85 | CheckboxGroup.onChanged - 追加 | E-11 (line 148-149) | ○ |
| C-86 | CheckboxGroup.onChanged - 削除 | E-11 (line 146-147) | ○ |
| C-87 | CheckboxGroup.downloadFile | E-11 (line 160-222) | ○ |
| C-88 | CheckboxGroup.downloadFile - 空URL | E-11 (line 161-164) | ○ |
| C-89 | PushNotificationsManager.setUpFirebase | E-12 (line 44-61) | △ |
| C-90 | PushNotificationsManager.createFcmToken | E-12 (line 99-103) | △ |
| C-91 | PushNotificationsManager.subscribeToTopic | E-12 (line 105-111) | ○ |
| C-92 | PushNotificationsManager.showNotification | E-12 (line 74-97) | ○ |
| C-93 | PushNotificationsManager.getNotificationStyle - 画像あり | E-12 (line 63-72) | ○ |
| C-94 | PushNotificationsManager.getNotificationStyle - 画像なし | E-12 (line 64) | ○ |
| C-95 | PushNotificationsManager.createDownloadNotification - 進捗 | E-12 (line 152-176) | ○ |
| C-96 | PushNotificationsManager.createDownloadNotification - 完了 | E-12 (line 170-171) | ○ |
| C-97 | PushNotificationsManager.openFile | E-12 (line 178-189) | ○ |
| C-98 | CircularProgressIndicatorClass.circularProgressIndicator | E-13 (line 14-20) | ○ |
| C-99 | GlobalData.cartCountController | E-14 (line 32-33) | ○ |
| C-100 | GlobalData.productsStream | E-14 (line 35-36) | ○ |
| C-101 | MobiKulTheme.getColor | E-15 (line 270-282) | ○ |
| C-102 | MobiKulTheme.lightTheme | E-15 (line 46-164) | ○ |
| C-103 | MobiKulTheme.darkTheme | E-15 (line 166-268) | ○ |
| C-104 | generateRoute - splash | E-16 (line 118-119) | ○ |
| C-105 | generateRoute - home | E-16 (line 120-132) | ○ |
| C-106 | generateRoute - productScreen | E-16 (line 149-159) | ○ |
| C-107 | generateRoute - 未定義ルート | E-16 (line 412-417) | ○ |
| C-108 | generateRoute - paypal-sdk除外 | E-16 (line 114-116) | ○ |
| C-109 | preCacheLanguageData - 正常 | E-17 (line 19-27) | ○ |
| C-110 | preCacheLanguageData - エラー | E-17 (line 23-26) | ○ |
| C-111 | preCacheCMSData | E-17 (line 29-36) | ○ |
| C-112 | preCacheOrderDetails | E-17 (line 38-45) | ○ |
| C-113 | preCacheProductDetails | E-17 (line 47-56) | ○ |
| C-114 | NoDataFound.build | E-18 (line 15-37) | ○ |
| C-115 | AppSizes.screenHeight/screenWidth | E-19 (line 22-25) | ○ |
| C-116 | AssetConstants.emptyOrders | E-20 (line 16) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-61, C-62 (checkInternetConnection)**:
  - 外部パッケージ `internet_connection_checker` に依存しており、実際のネットワーク状態に基づくテストはモック化が必要
  - 候補：InternetConnectionCheckerのモック / テスト環境でのネットワーク制御

- **C-89, C-90 (PushNotificationsManager)**:
  - Firebase Messagingに依存しており、実機またはエミュレータでのテストが必要
  - 候補：FirebaseMessagingのモック / firebase_messaging_platformインターフェースのモック

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 理由 |
|---|---|---|
| 2（高） | UT-UTL-036〜039（認証トークン管理） | セキュリティ上重要な機能のため、トークン漏洩・不正アクセス防止の観点でテストが重要 |
| 2（高） | UT-UTL-040（onUserLogout） | ログアウト時に全ユーザー情報が確実にクリアされることはセキュリティ上重要 |
| 1（中） | UT-UTL-028〜029（formatCurrency） | 金額表示は商取引に直結するため、各通貨での正確な表示が重要 |
| 1（中） | UT-UTL-061〜062（checkInternetConnection） | オフライン時の動作に影響するため、適切なエラーハンドリングが必要 |
| 0（低） | UT-UTL-074〜076（BadgeIcon） | UI表示のみで機能的影響は限定的 |

## 6) レビュアーチェックリスト（最小）
- [ ] PhoneNumberValidator/EmailValidatorの正規表現が国際的な電話番号・メールアドレス形式を網羅しているか確認
- [ ] SharedPreferenceHelperのデフォルト値が仕様と一致しているか確認
- [ ] onUserLogoutで漏れなく全ユーザー情報がクリアされるか確認
- [ ] formatCurrencyが対応すべき通貨コード一覧を確認
- [ ] generateRouteで全画面へのルーティングが定義されているか確認
- [ ] プッシュ通知関連のテストはFirebaseのモック化方針を決定
- [ ] checkInternetConnectionのテストはネットワーク状態のモック化方針を決定
