|
|
|
package v2
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/Unbewohnte/id3ed/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
var TESTDATAPATH string = filepath.Join("..", "testData")
|
|
|
|
|
|
|
|
func TestReadHeader(t *testing.T) {
|
|
|
|
f, err := os.Open(filepath.Join(TESTDATAPATH, "testreadv2.mp3"))
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("%s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
header, err := readHeader(f)
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("GetHeader failed: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if header.Flags().HasExtendedHeader != false {
|
|
|
|
t.Errorf("GetHeader failed: expected flag %v; got %v", false, header.Flags().HasExtendedHeader)
|
|
|
|
}
|
|
|
|
|
|
|
|
if header.Flags().Unsynchronised != false {
|
|
|
|
t.Errorf("GetHeader failed: expected flag %v; got %v", false, header.Flags().Unsynchronised)
|
|
|
|
}
|
|
|
|
|
|
|
|
if header.Size() != 1138 {
|
|
|
|
t.Errorf("GetHeader failed: expected size %v; got %v", 1138, header.Size())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHeaderFlagsToByte(t *testing.T) {
|
|
|
|
hf := HeaderFlags{
|
|
|
|
Experimental: true,
|
|
|
|
FooterPresent: true,
|
|
|
|
}
|
|
|
|
var correctFlagsByte byte = 0
|
|
|
|
correctFlagsByte = util.SetBit(correctFlagsByte, 5)
|
|
|
|
correctFlagsByte = util.SetBit(correctFlagsByte, 6)
|
|
|
|
|
|
|
|
gotByte := headerFlagsToByte(hf, V2_4)
|
|
|
|
|
|
|
|
if gotByte != correctFlagsByte {
|
|
|
|
t.Errorf("headerFlagsToByte failed: expected to get %d; got %d", correctFlagsByte, gotByte)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHeaderToBytes(t *testing.T) {
|
|
|
|
testHeader := Header{
|
|
|
|
version: V2_4,
|
|
|
|
flags: HeaderFlags{}, // all false
|
|
|
|
size: 12345,
|
|
|
|
extendedHeader: ExtendedHeader{},
|
|
|
|
}
|
|
|
|
|
|
|
|
hBytes := testHeader.toBytes()
|
|
|
|
|
|
|
|
// t.Errorf("%v", hBytes)
|
|
|
|
// 73 68 51 4 0 0 0 0 96 57
|
|
|
|
// 73 68 51 - identifier
|
|
|
|
// 4 0 - version
|
|
|
|
// 0 - flags
|
|
|
|
// 0 0 96 57 - size
|
|
|
|
|
|
|
|
if string(hBytes[0:3]) != HEADERIDENTIFIER {
|
|
|
|
t.Errorf("expected to get %s, got %s", HEADERIDENTIFIER, string(hBytes[0:3]))
|
|
|
|
}
|
|
|
|
|
|
|
|
if util.BytesToIntSynchsafe(hBytes[6:10]) != testHeader.Size() {
|
|
|
|
t.Errorf("toBytes failed: expected size to be %d; got %d",
|
|
|
|
testHeader.Size(), util.BytesToIntSynchsafe(hBytes[7:10]))
|
|
|
|
}
|
|
|
|
}
|