From: Hraban Luyat Date: Thu, 9 Jul 2015 16:36:30 +0000 (+0000) Subject: Test real Opus file X-Git-Tag: v2.0.0~91 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=695222dff594a788828382a4ff385c0c355ebe6f;p=go-opus.git Test real Opus file --- diff --git a/stream_test.go b/stream_test.go index f97089d..0654a52 100644 --- a/stream_test.go +++ b/stream_test.go @@ -5,20 +5,65 @@ package opus import ( + "bytes" + "fmt" "io" + "os" "strings" "testing" ) func TestStream(t *testing.T) { // Simple testing, no actual decoding - reader := strings.NewReader("hello") + reader := strings.NewReader("hello test test this is not a legal Opus stream") _, err := NewStream(reader) if err == nil { t.Fatalf("Expected error while initializing illegal opus stream") } } +func readStreamWav(stream *Stream) ([]byte, error) { + var buf bytes.Buffer + pcm := make([]int16, 1000) + for { + n, err := stream.Read(pcm) + switch err { + case io.EOF: + return buf.Bytes(), nil + case nil: + break + default: + return nil, err + } + if n == 0 { + return nil, fmt.Errorf("Nil-error Read() must not return 0") + } + for i := 0; i < n; i++ { + buf.WriteByte(byte(pcm[i] & 0xff)) + buf.WriteByte(byte(pcm[i] >> 8)) + } + } +} + +func TestFile(t *testing.T) { + // Simple testing, no actual decoding + reader, err := os.Open("testdata/speech_8.opus") + if err != nil { + t.Fatalf("Error while opening file: %v", err) + } + stream, err := NewStream(reader) + if err != nil { + t.Fatalf("Error while creating opus stream: %v", err) + } + wav, err := readStreamWav(stream) + if err != nil { + t.Fatalf("Error while decoding opus file: %v", err) + } + if len(wav) != 1036800 { + t.Fatalf("Unexpected length of WAV file: %d", len(wav)) + } +} + func TestCloser(t *testing.T) { /* TODO: test if stream.Close() also closes the underlying reader */ } diff --git a/testdata/speech_8.opus b/testdata/speech_8.opus new file mode 100644 index 0000000..ec27645 Binary files /dev/null and b/testdata/speech_8.opus differ