go-alac/encoder_test.go

65 lines
1.1 KiB
Go

package go_alac
import (
"fmt"
"io/ioutil"
"os"
"testing"
)
func TestEncode(t *testing.T) {
t.Parallel()
f, err := os.Open("sample/test_s16.raw")
if err != nil {
t.Error(err)
return
}
defer f.Close()
data, err := ioutil.ReadAll(f)
if err != nil {
t.Error(err)
return
}
o, err := os.Create("sample/test_s16_output.alac")
if err != nil {
t.Error(err)
return
}
defer o.Close()
writeTestCase := func(n int, cookie []byte, data []byte) {
out, err := os.Create(fmt.Sprintf("/home/shoghicp/radio/alac_afl/test/packets_%d.alac", n))
if err != nil {
t.Error(err)
return
}
defer out.Close()
out.Write(cookie)
out.Write(data)
}
encoder := NewFrameEncoder(44100, 2, 16, false)
o.Write(encoder.GetMagicCookie())
packetSize := encoder.GetInputSize()
packets := 0
for len(data) > packetSize {
resultPacket := encoder.WritePacket(data[:packetSize])
o.Write(resultPacket)
data = data[packetSize:]
writeTestCase(packets, encoder.GetMagicCookie(), resultPacket)
packets++
}
return
if len(data) > 0 {
resultPacket := encoder.WritePacket(data)
o.Write(resultPacket)
}
o.Sync()
o.Close()
}