Ariver
2026-07-03 72b84399db9001a3b26ddad00c307438d940d8ee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//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)
    }
}