package mic import ( "bytes" "os" "testing" ) func TestRecorderCloseIdempotent(t *testing.T) { t.Parallel() dir := t.TempDir() path := dir + "/rec.wav" // openRecorder uses MicDir(); write through fileRecorder directly. f, err := os.Create(path) if err != nil { t.Fatal(err) } r := &fileRecorder{path: path, f: f} if err := r.Write([]byte{1, 0, 2, 0}); err != nil { t.Fatal(err) } n, err := r.Close() if err != nil { t.Fatal(err) } if n != 4 { t.Fatalf("written = %d, want 4", n) } n2, err := r.Close() if err != nil { t.Fatal(err) } if n2 != 4 { t.Fatalf("second close written = %d, want 4", n2) } if err := r.Write([]byte{3, 0}); err == nil { t.Fatal("write after close should fail") } } func TestAppendChunkPCMCaps(t *testing.T) { t.Parallel() half := maxChunkPCM / 2 buf := appendChunkPCM(nil, bytes.Repeat([]byte{1}, half)) buf = appendChunkPCM(buf, bytes.Repeat([]byte{2}, half)) buf = appendChunkPCM(buf, bytes.Repeat([]byte{3}, half)) if len(buf) != maxChunkPCM { t.Fatalf("len = %d, want %d", len(buf), maxChunkPCM) } if buf[0] != 2 { t.Fatalf("first byte = %d, want 2 (oldest chunk dropped)", buf[0]) } }