From 695222dff594a788828382a4ff385c0c355ebe6f Mon Sep 17 00:00:00 2001
From: Hraban Luyat <hraban@0brg.net>
Date: Thu, 9 Jul 2015 16:36:30 +0000
Subject: [PATCH] Test real Opus file

---
 stream_test.go         |  47 ++++++++++++++++++++++++++++++++++++++++-
 testdata/speech_8.opus | Bin 0 -> 10941 bytes
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 testdata/speech_8.opus

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 0000000000000000000000000000000000000000..ec2764572a384326ce3a1b41662b3eb56ab0bcdc
GIT binary patch
literal 10941
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

literal 0
HcmV?d00001

-- 
2.51.0