]> Sergey Matveev's repositories - go-opus.git/commitdiff
Test opus stream .Close method
authorHraban Luyat <hraban@0brg.net>
Sun, 12 Jul 2015 09:40:25 +0000 (09:40 +0000)
committerHraban Luyat <hraban@0brg.net>
Sun, 12 Jul 2015 09:40:25 +0000 (09:40 +0000)
stream_test.go

index 7d4a2ef3f3b942b8739262e29333022ce47fbb85..ee4edea3acec07aced05cdbb0cf8b23a7a9d4d2b 100644 (file)
@@ -6,6 +6,7 @@ package opus
 
 import (
        "bytes"
+       "fmt"
        "io"
        "os"
        "strings"
@@ -44,11 +45,26 @@ func readStreamWav(t *testing.T, stream *Stream, buffersize int) []byte {
        }
 }
 
-func readFileWav(t *testing.T, fname string, buffersize int) []byte {
-       reader, err := os.Open(fname)
+func mustOpenFile(t *testing.T, fname string) *os.File {
+       f, err := os.Open(fname)
+       if err != nil {
+               t.Fatalf("Error while opening %s: %v", fname, err)
+               return nil
+       }
+       return f
+}
+
+func mustOpenStream(t *testing.T, r io.Reader) *Stream {
+       stream, err := NewStream(r)
        if err != nil {
-               t.Fatalf("Error while opening file: %v", err)
+               t.Fatalf("Error while creating opus stream: %v", err)
+               return nil
        }
+       return stream
+}
+
+func readFileWav(t *testing.T, fname string, buffersize int) []byte {
+       reader := mustOpenFile(t, fname)
        stream, err := NewStream(reader)
        if err != nil {
                t.Fatalf("Error while creating opus stream: %v", err)
@@ -71,6 +87,25 @@ func TestStreamSmallBuffer(t *testing.T) {
        }
 }
 
+type mockCloser struct {
+       io.Reader
+       closed bool
+}
+
+func (m *mockCloser) Close() error {
+       if m.closed {
+               return fmt.Errorf("Already closed")
+       }
+       m.closed = true
+       return nil
+}
+
 func TestCloser(t *testing.T) {
-       /* TODO: test if stream.Close() also closes the underlying reader */
+       f := mustOpenFile(t, "testdata/speech_8.opus")
+       mc := &mockCloser{Reader: f}
+       stream := mustOpenStream(t, mc)
+       stream.Close()
+       if !mc.closed {
+               t.Error("Expected opus stream to call .Close on the reader")
+       }
 }