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
package audio
 
import "testing"
 
func TestReadSamplesSinceReturnsOnlyNewSamples(t *testing.T) {
    r := &Recorder{
        pcmBuf: pcm16LE(0, 16384, -32768),
    }
 
    samples, nextOffset := r.ReadSamplesSince(1)
    if nextOffset != 3 {
        t.Fatalf("next offset = %d, want 3", nextOffset)
    }
    if len(samples) != 2 {
        t.Fatalf("sample count = %d, want 2", len(samples))
    }
    if samples[0] != 0.5 {
        t.Fatalf("samples[0] = %f, want 0.5", samples[0])
    }
    if samples[1] != -1 {
        t.Fatalf("samples[1] = %f, want -1", samples[1])
    }
}
 
func TestReadSamplesSinceClampsOffset(t *testing.T) {
    r := &Recorder{
        pcmBuf: pcm16LE(0, 16384),
    }
 
    samples, nextOffset := r.ReadSamplesSince(99)
    if nextOffset != 2 {
        t.Fatalf("next offset = %d, want 2", nextOffset)
    }
    if len(samples) != 0 {
        t.Fatalf("sample count = %d, want 0", len(samples))
    }
}
 
func TestOnDataCapsRecordingBuffer(t *testing.T) {
    r := &Recorder{
        isRecording: true,
        pcmBuf:      make([]byte, maxPCMBufferBytes-2),
    }
 
    r.onData(pcm16LE(1, 2))
 
    if got := len(r.pcmBuf); got != maxPCMBufferBytes {
        t.Fatalf("pcm buffer length = %d, want capped %d", got, maxPCMBufferBytes)
    }
    if !r.bufferLimitHit {
        t.Fatal("bufferLimitHit should be set after truncating at cap")
    }
 
    r.onData(pcm16LE(3))
    if got := len(r.pcmBuf); got != maxPCMBufferBytes {
        t.Fatalf("pcm buffer length after cap = %d, want %d", got, maxPCMBufferBytes)
    }
}
 
func pcm16LE(values ...int16) []byte {
    buf := make([]byte, len(values)*2)
    for i, value := range values {
        buf[i*2] = byte(value)
        buf[i*2+1] = byte(value >> 8)
    }
    return buf
}