package locale_test import ( "strings" "testing" "gitgud.io/mike/mpv-manager/internal/assets" "gitgud.io/mike/mpv-manager/pkg/locale" ) func TestEmbeddedLocaleDataIntegrity(t *testing.T) { entries, err := assets.ReadLocales() if err != nil { t.Fatal(err) } byCode := make(map[string][]locale.LocaleEntry) locales := make(map[string]string) for _, entry := range entries { code := locale.CanonicalLanguageCode(entry) if code == "" { t.Errorf("language %q has no selectable language code", entry.LanguageName) continue } byCode[code] = append(byCode[code], entry) for _, region := range entry.Regions { localeID := strings.ToLower(strings.TrimSpace(region.Locale)) if localeID == "" { t.Errorf("language %q has an empty regional locale", entry.LanguageName) continue } if previous, exists := locales[localeID]; exists { t.Errorf("locale %q is duplicated by %q and %q", region.Locale, previous, entry.LanguageName) } locales[localeID] = entry.LanguageName if prefix := strings.SplitN(localeID, "-", 2)[0]; prefix != code { t.Errorf("locale %q does not use canonical language code %q", region.Locale, code) } if strings.TrimSpace(region.CountryCode) == "" || strings.TrimSpace(region.CountryName) == "" || strings.TrimSpace(region.Flag) == "" { t.Errorf("locale %q has incomplete regional metadata", region.Locale) } } } for _, code := range locale.GetCommonLanguageCodes() { if len(byCode[code]) == 0 { t.Errorf("common language code %q has no embedded locale entry", code) } } assertLocale := func(id, country, flag string) { t.Helper() entry, region := locale.FindByLocale(id, entries) if entry == nil || region == nil { t.Fatalf("corrected locale %q is missing", id) } if region.CountryCode != country || region.Flag != flag { t.Errorf("locale %q metadata = %s/%s, want %s/%s", id, region.CountryCode, region.Flag, country, flag) } } assertLocale("pa-IN", "IN", "🇮🇳") assertLocale("es-419", "419", "🌎") assertLocale("fil-PH", "PH", "🇵🇭") assertLocale("te-IN", "IN", "🇮🇳") }