//go:build windows
|
|
package services
|
|
import (
|
"strings"
|
"testing"
|
|
"voicesnap/internal/config"
|
"voicesnap/internal/language"
|
"voicesnap/internal/model"
|
"voicesnap/internal/modelselection"
|
)
|
|
func TestWindowsPreviewShowsButDisablesNonSenseVoiceModels(t *testing.T) {
|
cfg := config.Default()
|
cfg.LanguageMode = config.LanguageModeManual
|
cfg.LanguageID = model.DefaultLanguageID
|
service := NewEngineService(cfg)
|
profile, err := model.GetModelProfile(model.Qwen3ASRModelID)
|
if err != nil {
|
t.Fatal(err)
|
}
|
|
status := service.modelStatusMap(profile, modelselection.CurrentModel{
|
ModelID: model.DefaultModelID,
|
Profile: model.DefaultModelProfile(),
|
SelectionMode: config.ModelSelectionModeAuto,
|
LanguageSettings: language.Resolve(config.LanguageModeManual, model.DefaultLanguageID, nil),
|
})
|
|
if got := status["supportedInBuild"]; got != false {
|
t.Fatalf("supportedInBuild = %v, want false", got)
|
}
|
if got := status["unsupportedReason"]; got != model.UnsupportedReasonWindowsPreview {
|
t.Fatalf("unsupportedReason = %v, want %s", got, model.UnsupportedReasonWindowsPreview)
|
}
|
if _, err := service.allowedModelProfile(model.Qwen3ASRModelID); err == nil {
|
t.Fatal("expected qwen3-asr to be rejected in Windows preview build")
|
} else if !strings.Contains(err.Error(), "Windows preview") {
|
t.Fatalf("error = %q, want Windows preview reason", err.Error())
|
}
|
}
|
|
func TestWindowsPreviewSupportsSenseVoiceYue(t *testing.T) {
|
cfg := config.Default()
|
cfg.LanguageMode = config.LanguageModeManual
|
cfg.LanguageID = model.CantoneseLanguageID
|
service := NewEngineService(cfg)
|
profile, err := model.GetModelProfile(model.SenseVoiceYueModelID)
|
if err != nil {
|
t.Fatal(err)
|
}
|
|
status := service.modelStatusMap(profile, modelselection.CurrentModel{
|
ModelID: model.SenseVoiceYueModelID,
|
Profile: profile,
|
SelectionMode: config.ModelSelectionModeAuto,
|
LanguageSettings: language.Resolve(config.LanguageModeManual, model.CantoneseLanguageID, nil),
|
})
|
|
if got := status["supportedInBuild"]; got != true {
|
t.Fatalf("supportedInBuild = %v, want true", got)
|
}
|
if got := status["unsupportedReason"]; got != "" {
|
t.Fatalf("unsupportedReason = %v, want empty", got)
|
}
|
if _, err := service.allowedModelProfile(model.SenseVoiceYueModelID); err != nil {
|
t.Fatalf("allowedModelProfile returned error: %v", err)
|
}
|
}
|