package transcription import ( "math" "testing" "time" ) func TestAdjustLeadSilence(t *testing.T) { got := adjustLeadSilence([]Segment{ {Start: 0.2, End: 1.1, Text: "first"}, {Start: 1.4, End: 2.0, Text: "second"}, }, 800*time.Millisecond) if got[0].Start != 0 { t.Fatalf("first start = %v, want 0", got[0].Start) } if !near(got[0].End, 0.3) { t.Fatalf("first end = %v, want 0.3", got[0].End) } if !near(got[1].Start, 0.6) { t.Fatalf("second start = %v, want 0.6", got[1].Start) } } func TestNormalizeProviderOrder(t *testing.T) { got := normalizeProviderOrder([]string{"whisperx", "qwen", "voxtral", "qwen2-audio"}) want := []string{ProviderWhisperX, ProviderQwenAudio, ProviderVoxtral} if len(got) != len(want) { t.Fatalf("providers = %#v, want %#v", got, want) } for i := range want { if got[i] != want[i] { t.Fatalf("providers = %#v, want %#v", got, want) } } } func TestNewWithOptionsBuildsComparisonProviders(t *testing.T) { client := NewWithOptions(Options{ Providers: []string{"whisperx", "qwen2-audio", "voxtral-small"}, WhisperXURL: "http://whisperx", QwenAudioBaseURL: "http://qwen", VoxtralBaseURL: "http://voxtral", }) if client == nil { t.Fatal("client is nil") } got := make([]string, 0, len(client.providers)) for _, provider := range client.providers { got = append(got, provider.Name) } want := []string{ProviderWhisperX, ProviderQwenAudio, ProviderVoxtral} for i := range want { if got[i] != want[i] { t.Fatalf("providers = %#v, want %#v", got, want) } } } func near(got, want float64) bool { return math.Abs(got-want) < 0.000001 }