138 lines
2.8 KiB
Go
138 lines
2.8 KiB
Go
package tape
|
|
|
|
import "bytes"
|
|
import "testing"
|
|
|
|
func TestSkimInteger(test *testing.T) {
|
|
data := []byte {
|
|
0x12, 0x45, 0x23, 0xF9,
|
|
}
|
|
mainDataLen := len(data)
|
|
// extra junk
|
|
data = append(data, 0x00, 0x01, 0x02, 0x03,)
|
|
|
|
n, err := Skim(NewDecoder(bytes.NewBuffer(data)), LI.WithCN(3))
|
|
if err != nil {
|
|
test.Fatal(err)
|
|
}
|
|
if got, correct := n, mainDataLen; got != correct {
|
|
test.Fatalf("n not equal: %d != %d", got, correct)
|
|
}
|
|
}
|
|
|
|
func TestSkimArray(test *testing.T) {
|
|
data := []byte {
|
|
2, byte(LI.WithCN(1)),
|
|
0xBE, 0xE5, 0x77, 0x77,
|
|
}
|
|
mainDataLen := len(data)
|
|
// extra junk
|
|
data = append(data, 0x00, 0x01, 0x02, 0x03,)
|
|
|
|
n, err := Skim(NewDecoder(bytes.NewBuffer(data)), OTA.WithCN(0))
|
|
if err != nil {
|
|
test.Fatal(err)
|
|
}
|
|
if got, correct := n, mainDataLen; got != correct {
|
|
test.Fatalf("n not equal: %d != %d", got, correct)
|
|
}
|
|
}
|
|
|
|
func TestSkimNestedArray(test *testing.T) {
|
|
data := []byte {
|
|
2, byte(OTA.WithCN(0)),
|
|
1, byte(LSI.WithCN(1)),
|
|
0, 0x5,
|
|
2, byte(LSI.WithCN(1)),
|
|
0, 0x17,
|
|
0xF5, 0x56,
|
|
}
|
|
mainDataLen := len(data)
|
|
// extra junk
|
|
data = append(data, 0x00, 0x01, 0x02, 0x03,)
|
|
|
|
n, err := Skim(NewDecoder(bytes.NewBuffer(data)), OTA.WithCN(0))
|
|
if err != nil {
|
|
test.Fatal(err)
|
|
}
|
|
if got, correct := n, mainDataLen; got != correct {
|
|
test.Fatalf("n not equal: %d != %d", got, correct)
|
|
}
|
|
}
|
|
|
|
func TestSkimTable(test *testing.T) {
|
|
data := []byte {
|
|
2,
|
|
0xF3, 0xB9,
|
|
byte(LSI.WithCN(3)),
|
|
0, 0, 0, 1,
|
|
|
|
0x01, 0x02,
|
|
byte(LSI.WithCN(3)),
|
|
0, 0, 0, 2,
|
|
}
|
|
mainDataLen := len(data)
|
|
// extra junk
|
|
data = append(data, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03)
|
|
|
|
n, err := Skim(NewDecoder(bytes.NewBuffer(data)), KTV.WithCN(0))
|
|
if got, correct := n, mainDataLen; got != correct {
|
|
test.Fatalf("n not equal: %d != %d ... (%d)", got, correct, len(data))
|
|
}
|
|
if err != nil {
|
|
test.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestSkimTableComplex(test *testing.T) {
|
|
data := []byte {
|
|
7,
|
|
0xF3, 0xB9,
|
|
byte(LSI.WithCN(3)),
|
|
0, 0, 0, 1,
|
|
|
|
0x01, 0x02,
|
|
byte(LSI.WithCN(3)),
|
|
0, 0, 0, 2,
|
|
|
|
0, 0,
|
|
byte(SBA.WithCN(3)),
|
|
'h', 'i', '!',
|
|
|
|
0xFF, 0xFF,
|
|
byte(OTA.WithCN(0)), 2, byte(LI.WithCN(1)),
|
|
0xBE, 0xE5, 0x77, 0x77,
|
|
|
|
0x12, 0x34,
|
|
byte(OTA.WithCN(0)), 2, byte(OTA.WithCN(0)),
|
|
1, byte(LI.WithCN(1)),
|
|
0, 0x5,
|
|
2, byte(LI.WithCN(1)),
|
|
0, 0x17,
|
|
0xAA, 0xAA,
|
|
|
|
0x23, 0x45,
|
|
byte(OTA.WithCN(0)), 2, byte(OTA.WithCN(0)),
|
|
1, byte(LSI.WithCN(1)),
|
|
0, 0x5,
|
|
2, byte(LSI.WithCN(1)),
|
|
0, 0x17,
|
|
0xF5, 0x56,
|
|
|
|
0x34, 0x56,
|
|
byte(LSI.WithCN(1)),
|
|
0x39, 0x21,
|
|
}
|
|
mainDataLen := len(data)
|
|
// extra junk
|
|
data = append(data, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03)
|
|
|
|
n, err := Skim(NewDecoder(bytes.NewBuffer(data)), KTV.WithCN(0))
|
|
if got, correct := n, mainDataLen; got != correct {
|
|
test.Fatalf("n not equal: %d != %d ... (%d)", got, correct, len(data))
|
|
}
|
|
if err != nil {
|
|
test.Fatal(err)
|
|
}
|
|
}
|