| | |
| | | } |
| | | } |
| | | |
| | | func TestResolveManualCantoneseUsesSenseVoiceYueDefault(t *testing.T) { |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeManual |
| | | cfg.LanguageID = model.CantoneseLanguageID |
| | | cfg.ModelSelectionMode = config.ModelSelectionModeAuto |
| | | |
| | | current := Resolve(cfg, fakeDetector{locale: "en-US"}) |
| | | if current.LanguageSettings.EffectiveLanguageID != model.CantoneseLanguageID { |
| | | t.Fatalf("effective language = %q, want %q", current.LanguageSettings.EffectiveLanguageID, model.CantoneseLanguageID) |
| | | } |
| | | if current.ModelID != model.SenseVoiceYueModelID { |
| | | t.Fatalf("model id = %q, want %q", current.ModelID, model.SenseVoiceYueModelID) |
| | | } |
| | | if current.Profile.BackendKind != model.BackendSenseVoice { |
| | | t.Fatalf("backend = %q, want %q", current.Profile.BackendKind, model.BackendSenseVoice) |
| | | } |
| | | } |
| | | |
| | | func TestResolveManualCantoneseRejectsChineseUpgradeModels(t *testing.T) { |
| | | tests := []string{ |
| | | model.Qwen3ASRModelID, |
| | | model.XASRZhEn960ModelID, |
| | | } |
| | | for _, modelID := range tests { |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeManual |
| | | cfg.LanguageID = model.CantoneseLanguageID |
| | | cfg.ModelSelectionMode = config.ModelSelectionModeManual |
| | | cfg.SelectedModelID = modelID |
| | | |
| | | current := Resolve(cfg, fakeDetector{locale: "en-US"}) |
| | | if current.ModelID != model.SenseVoiceYueModelID { |
| | | t.Fatalf("%s resolved model id = %q, want %q", modelID, current.ModelID, model.SenseVoiceYueModelID) |
| | | } |
| | | if current.FallbackReason != "manual model not available for language" { |
| | | t.Fatalf("%s fallback reason = %q, want language incompatibility", modelID, current.FallbackReason) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func TestResolveAutoUsesEuropeanDefaultModel(t *testing.T) { |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeAuto |
| | |
| | | } |
| | | |
| | | func TestResolveManualUsesQwen3ASRForChinese(t *testing.T) { |
| | | if !model.IsModelSupportedInCurrentBuild(model.Qwen3ASRModelID) { |
| | | t.Skip("qwen3-asr is disabled in this build") |
| | | } |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeAuto |
| | | cfg.ModelSelectionMode = config.ModelSelectionModeManual |
| | |
| | | } |
| | | } |
| | | |
| | | func TestResolveManualQwen3ASRFallsBackWhenUnsupported(t *testing.T) { |
| | | if model.IsModelSupportedInCurrentBuild(model.Qwen3ASRModelID) { |
| | | t.Skip("qwen3-asr is supported in this build") |
| | | } |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeAuto |
| | | cfg.ModelSelectionMode = config.ModelSelectionModeManual |
| | | cfg.SelectedModelID = model.Qwen3ASRModelID |
| | | |
| | | current := Resolve(cfg, fakeDetector{locale: "zh-CN"}) |
| | | if current.ModelID != model.DefaultModelID { |
| | | t.Fatalf("model id = %q, want fallback %q", current.ModelID, model.DefaultModelID) |
| | | } |
| | | if current.FallbackReason != "manual model not supported in current build" { |
| | | t.Fatalf("fallback reason = %q, want unsupported build reason", current.FallbackReason) |
| | | } |
| | | } |
| | | |
| | | func TestResolveManualUsesXASRForChinese(t *testing.T) { |
| | | cfg := config.Default() |
| | | cfg.LanguageMode = config.LanguageModeAuto |