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 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 }