]> Sergey Matveev's repositories - go-opus.git/commitdiff
Test real Opus file
authorHraban Luyat <hraban@0brg.net>
Thu, 9 Jul 2015 16:36:30 +0000 (16:36 +0000)
committerHraban Luyat <hraban@0brg.net>
Thu, 9 Jul 2015 16:36:30 +0000 (16:36 +0000)
stream_test.go
testdata/speech_8.opus [new file with mode: 0644]

index f97089d1456bd6a21947e54ece255071b18e6f78..0654a5299b26419955b39dbb836db47aa834da37 100644 (file)
@@ -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 (file)
index 0000000..ec27645
Binary files /dev/null and b/testdata/speech_8.opus differ