go-vorbis/encoder_test.go

112 lines
1.7 KiB
Go

package go_vorbis
import (
"io"
"os"
"testing"
)
func TestEncoderCBR(t *testing.T) {
t.Parallel()
f, err := os.Open("test.vorbis")
if err != nil {
t.Error(err)
return
}
defer f.Close()
decoder, err := NewSeekCloserDecoder(f)
if err != nil {
t.Error(err)
return
}
defer decoder.Close()
target, err := os.CreateTemp("/tmp", "encode_test_*.vorbis")
if err != nil {
t.Error(err)
return
}
defer func() {
name := target.Name()
target.Close()
os.Remove(name)
}()
encoder, err := NewEncoderCBR(target, decoder.Information().Channels, int(decoder.Information().Rate), -1, 128*1000, -1)
defer encoder.Close()
if err != nil {
t.Error(err)
return
}
for {
buf, _, err := decoder.ReadFloat()
if err != nil {
if err == io.EOF {
break
}
t.Error(err)
return
}
if err = encoder.WriteFloat(buf); err != nil {
t.Error(err)
return
}
}
encoder.Flush()
}
func TestEncoderVBR(t *testing.T) {
t.Parallel()
f, err := os.Open("test.vorbis")
if err != nil {
t.Error(err)
return
}
defer f.Close()
decoder, err := NewSeekCloserDecoder(f)
if err != nil {
t.Error(err)
return
}
defer decoder.Close()
target, err := os.CreateTemp("/tmp", "encode_test_*.vorbis")
if err != nil {
t.Error(err)
return
}
defer func() {
name := target.Name()
target.Close()
os.Remove(name)
}()
encoder, err := NewEncoderVBR(target, decoder.Information().Channels, int(decoder.Information().Rate), 0.5)
defer encoder.Close()
if err != nil {
t.Error(err)
return
}
for {
buf, _, err := decoder.ReadFloat()
if err != nil {
if err == io.EOF {
break
}
t.Error(err)
return
}
if err = encoder.WriteFloat(buf); err != nil {
t.Error(err)
return
}
}
encoder.Flush()
}