Ariver
2026-06-14 d14fa75079de570cb9c4dbf63f6b5bd65f959b09
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
72
73
74
package main
 
import (
    "strings"
    "testing"
    "time"
)
 
func TestLiveCaptionDisplayTextFitsOverlayBuffer(t *testing.T) {
    input := strings.Repeat("这是一句实时字幕", 12)
    got := liveCaptionDisplayText(input)
    if got == "" {
        t.Fatal("caption should not be empty")
    }
    if len([]byte(got)) > liveCaptionMaxBytes {
        t.Fatalf("caption bytes = %d, want <= %d", len([]byte(got)), liveCaptionMaxBytes)
    }
    if !strings.HasPrefix(got, "...") {
        t.Fatalf("caption = %q, want leading truncation marker", got)
    }
}
 
func TestReleaseTailCaptureDelayUsesEngineCapability(t *testing.T) {
    a := &App{}
    a.replaceEngine(tailCaptureTestEngine{delay: 300 * time.Millisecond})
 
    if got := a.releaseTailCaptureDelay(); got != 300*time.Millisecond {
        t.Fatalf("releaseTailCaptureDelay() = %v, want 300ms", got)
    }
}
 
func TestReleaseTailCaptureDelayDefaultsToZero(t *testing.T) {
    a := &App{}
    a.replaceEngine(plainTestEngine{})
 
    if got := a.releaseTailCaptureDelay(); got != 0 {
        t.Fatalf("releaseTailCaptureDelay() = %v, want 0", got)
    }
}
 
func TestStartRecordingIgnoredWhileStoppingRecording(t *testing.T) {
    a := &App{isStoppingRecording: true}
 
    a.startRecordingLocked()
 
    if a.isRecording {
        t.Fatal("startRecordingLocked should not start while stop tail capture is pending")
    }
}
 
func TestStartTapRecordingIgnoredWhileStoppingRecording(t *testing.T) {
    a := &App{isStoppingRecording: true}
 
    a.startTapRecordingLocked()
 
    if a.isRecording || a.isFreetalking {
        t.Fatal("startTapRecordingLocked should not start while stop tail capture is pending")
    }
}
 
type plainTestEngine struct{}
 
func (plainTestEngine) Recognize([]float32) (string, error) { return "", nil }
func (plainTestEngine) HardwareInfo() string                { return "test" }
func (plainTestEngine) Close()                              {}
 
type tailCaptureTestEngine struct {
    plainTestEngine
    delay time.Duration
}
 
func (e tailCaptureTestEngine) ReleaseTailCaptureDelay() time.Duration {
    return e.delay
}