45 lines
938 B
Go
45 lines
938 B
Go
package mic
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestEncodeWAVRoundTrip(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
pcm := make([]byte, 3200)
|
||
|
|
for i := range pcm {
|
||
|
|
pcm[i] = byte(i % 256)
|
||
|
|
}
|
||
|
|
wav := EncodeWAV(pcm)
|
||
|
|
if len(wav) != wavHeaderSize+len(pcm) {
|
||
|
|
t.Fatalf("wav len = %d, want %d", len(wav), wavHeaderSize+len(pcm))
|
||
|
|
}
|
||
|
|
got, err := PCMBytesFromWAV(wav)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if got != len(pcm) {
|
||
|
|
t.Fatalf("pcm bytes = %d, want %d", got, len(pcm))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRecordingFilename(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
name := RecordingFilename(mustTime("2006-01-02T15:04:05"))
|
||
|
|
if name != "2006-01-02-150405.wav" {
|
||
|
|
t.Fatalf("name = %q", name)
|
||
|
|
}
|
||
|
|
if !ValidRecordingFilename(name) {
|
||
|
|
t.Fatal("expected valid filename")
|
||
|
|
}
|
||
|
|
if ValidRecordingFilename("../evil.wav") {
|
||
|
|
t.Fatal("expected invalid filename")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func mustTime(s string) (t time.Time) {
|
||
|
|
t, _ = time.ParseInLocation("2006-01-02T15:04:05", s, time.Local)
|
||
|
|
return t
|
||
|
|
}
|