Kirika/audio/packetizer/flac_test.go
DataHoarder bd069cdf05
Some checks failed
continuous-integration/drone/push Build is failing
General code inspection cleanup
2022-10-03 11:34:56 +02:00

113 lines
2.3 KiB
Go

//go:build !disable_format_flac
package packetizer
import (
"bytes"
"crypto/sha256"
"git.gammaspectra.live/S.O.N.G/Kirika/audio/format/flac"
"git.gammaspectra.live/S.O.N.G/Kirika/test"
"io"
"os"
"testing"
)
func TestPacketizeFLAC(t *testing.T) {
t.Parallel()
fp, err := os.Open(test.SingleSample24)
if err != nil {
t.Error(err)
return
}
defer fp.Close()
source, err := flac.NewFormat().Open(fp)
if err != nil {
t.Error(err)
return
}
reader, writer := io.Pipe()
shaHasher := sha256.New()
shaPacketHasher := sha256.New()
encodeReader := io.TeeReader(reader, shaHasher)
go func() {
defer writer.Close()
err = flac.NewFormat().Encode(source, writer, nil)
if err != nil {
t.Error(err)
return
}
}()
pipePacketizer := NewFLACPacketizer(encodeReader)
packetCount := 0
packetBytes := 0
for {
packet := pipePacketizer.GetPacket()
if packet == nil {
break
}
packetCount++
pData := packet.GetData()
packetBytes += len(pData)
shaPacketHasher.Write(pData)
}
if packetCount != 4231 {
t.Errorf("Wrong Packet Count %d != %d", packetCount, 4231)
}
if packetBytes < 50000000 {
t.Errorf("Wrong Packet Bytes %d < %d", packetBytes, 50000000)
}
if bytes.Compare(shaHasher.Sum([]byte{}), shaPacketHasher.Sum([]byte{})) != 0 {
t.Errorf("Mismatch on byte output %X != %X", shaPacketHasher.Sum([]byte{}), shaHasher.Sum([]byte{}))
}
}
func TestPacketizeFLACOffset(t *testing.T) {
t.Parallel()
fp, err := os.Open(test.SingleSample24)
if err != nil {
t.Error(err)
return
}
defer fp.Close()
source, err := flac.NewFormat().Open(fp)
if err != nil {
t.Error(err)
return
}
reader, writer := io.Pipe()
go func() {
defer writer.Close()
err = flac.NewFormat().Encode(source, writer, nil)
if err != nil {
t.Error(err)
return
}
}()
pipePacketizer := NewFLACPacketizer(reader)
packetCount := 0
packetBytes := 0
for {
packet := pipePacketizer.GetPacket()
if packet == nil {
break
}
packetCount++
if offsetablePacket, ok := packet.(OffsetablePacket); ok {
packetBytes += len(offsetablePacket.GetDataOffset(4096))
}
}
if packetCount != 4231 {
t.Errorf("Wrong Packet Count %d != %d", packetCount, 4231)
}
if packetBytes < 50000000 {
t.Errorf("Wrong Packet Bytes %d < %d", packetBytes, 50000000)
}
}