106 lines
2.4 KiB
Go
106 lines
2.4 KiB
Go
//go:build ignore
|
|
// +build ignore
|
|
|
|
package flac_test
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"testing"
|
|
|
|
"git.gammaspectra.live/S.O.N.G/flacgo"
|
|
"git.gammaspectra.live/S.O.N.G/flacgo/meta"
|
|
)
|
|
|
|
func TestEncode(t *testing.T) {
|
|
paths := []string{
|
|
"meta/testdata/input-SCPAP.flac",
|
|
"meta/testdata/input-SCVA.flac",
|
|
"meta/testdata/input-SCVPAP.flac",
|
|
"meta/testdata/input-VA.flac",
|
|
"meta/testdata/silence.flac",
|
|
"testdata/19875.flac",
|
|
"testdata/44127.flac",
|
|
"testdata/59996.flac",
|
|
"testdata/80574.flac",
|
|
"testdata/172960.flac",
|
|
"testdata/189983.flac",
|
|
"testdata/191885.flac",
|
|
"testdata/212768.flac",
|
|
"testdata/220014.flac",
|
|
"testdata/243749.flac",
|
|
"testdata/256529.flac",
|
|
"testdata/257344.flac",
|
|
"testdata/8297-275156-0011.flac",
|
|
"testdata/love.flac",
|
|
}
|
|
for _, path := range paths {
|
|
// Decode source file.
|
|
stream, err := flac.ParseFile(path)
|
|
if err != nil {
|
|
t.Errorf("%q: unable to parse FLAC file; %v", path, err)
|
|
continue
|
|
}
|
|
defer stream.Close()
|
|
|
|
// Encode FLAC stream.
|
|
out := new(bytes.Buffer)
|
|
if err := flac.Encode(out, stream); err != nil {
|
|
t.Errorf("%q: unable to encode FLAC stream; %v", path, err)
|
|
continue
|
|
}
|
|
|
|
// Compare source and destination FLAC streams.
|
|
want, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
t.Errorf("%q: unable to read file; %v", path, err)
|
|
continue
|
|
}
|
|
got := out.Bytes()
|
|
if !bytes.Equal(got, want) {
|
|
t.Errorf("%q: content mismatch; expected % X, got % X", path, want, got)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEncodeComment(t *testing.T) {
|
|
// Decode FLAC file.
|
|
src, err := flac.ParseFile("testdata/love.flac")
|
|
if err != nil {
|
|
t.Fatalf("unable to parse input FLAC file; %v", err)
|
|
}
|
|
defer src.Close()
|
|
|
|
// Add custom vorbis comment.
|
|
const want = "FLAC encoding test case"
|
|
for _, block := range src.Blocks {
|
|
if comment, ok := block.Body.(*meta.VorbisComment); ok {
|
|
comment.Vendor = want
|
|
}
|
|
}
|
|
|
|
// Encode FLAC file.
|
|
out := new(bytes.Buffer)
|
|
if err := flac.Encode(out, src); err != nil {
|
|
t.Fatalf("unable to encode FLAC file; %v", err)
|
|
}
|
|
|
|
stream, err := flac.Parse(out)
|
|
if err != nil {
|
|
t.Fatalf("unable to parse output FLAC file; %v", err)
|
|
}
|
|
defer stream.Close()
|
|
|
|
// Add custom vorbis comment.
|
|
for _, block := range stream.Blocks {
|
|
if comment, ok := block.Body.(*meta.VorbisComment); ok {
|
|
got := comment.Vendor
|
|
if got != want {
|
|
t.Errorf("Vorbis comment mismatch; expected %q, got %q", want, got)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|