132 lines
5.1 KiB
Go
132 lines
5.1 KiB
Go
package tape
|
|
|
|
// import "fmt"
|
|
import "slices"
|
|
// import "errors"
|
|
import "testing"
|
|
import "math/rand"
|
|
|
|
func TestI8Array(test *testing.T) {
|
|
var buffer [64]byte
|
|
_, err := EncodeI8Array[uint8](buffer[:], []uint8 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int8: wrong buffer length") { test.Fatal(err) }
|
|
_, err = EncodeI8Array[uint8](buffer[:0], []uint8 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int8: wrong buffer length") { test.Fatal(err) }
|
|
_, _, err = DecodeI8Array[uint8](buffer[:])
|
|
if err != nil { test.Fatal(err) }
|
|
_, _, err = DecodeI8Array[uint8](buffer[:0])
|
|
if err != nil { test.Fatal(err) }
|
|
|
|
for _ = range largeNumberNTestRounds {
|
|
array := randInts[uint8](rand.Intn(16))
|
|
length, _ := I8ArraySize(array)
|
|
if length != len(array) { test.Fatalf("%d != %d", length, len(array)) }
|
|
_, err := EncodeI8Array[uint8](buffer[:length], array)
|
|
if err != nil { test.Fatal(err) }
|
|
decoded, _, err := DecodeI8Array[uint8](buffer[:length])
|
|
if err != nil { test.Fatal(err) }
|
|
if !slices.Equal(decoded, array) {
|
|
test.Fatalf("%v != %v", decoded, array)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestI16Array(test *testing.T) {
|
|
var buffer [128]byte
|
|
_, err := EncodeI16Array[uint16](buffer[:], []uint16 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int16: wrong buffer length") { test.Fatal(err) }
|
|
_, err = EncodeI16Array[uint16](buffer[:0], []uint16 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int16: wrong buffer length") { test.Fatal(err) }
|
|
_, _, err = DecodeI16Array[uint16](buffer[:])
|
|
if err != nil { test.Fatal(err) }
|
|
_, _, err = DecodeI16Array[uint16](buffer[:0])
|
|
if err != nil { test.Fatal(err) }
|
|
|
|
for _ = range largeNumberNTestRounds {
|
|
array := randInts[uint16](rand.Intn(16))
|
|
length, _ := I16ArraySize(array)
|
|
if length != 2 * len(array) { test.Fatalf("%d != %d", length, 2 * len(array)) }
|
|
_, err := EncodeI16Array[uint16](buffer[:length], array)
|
|
if err != nil { test.Fatal(err) }
|
|
decoded, _, err := DecodeI16Array[uint16](buffer[:length])
|
|
if err != nil { test.Fatal(err) }
|
|
if !slices.Equal(decoded, array) {
|
|
test.Fatalf("%v != %v", decoded, array)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestI32Array(test *testing.T) {
|
|
var buffer [256]byte
|
|
_, err := EncodeI32Array[uint32](buffer[:], []uint32 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int32: wrong buffer length") { test.Fatal(err) }
|
|
_, err = EncodeI32Array[uint32](buffer[:0], []uint32 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int32: wrong buffer length") { test.Fatal(err) }
|
|
_, _, err = DecodeI32Array[uint32](buffer[:])
|
|
if err != nil { test.Fatal(err) }
|
|
_, _, err = DecodeI32Array[uint32](buffer[:0])
|
|
if err != nil { test.Fatal(err) }
|
|
|
|
for _ = range largeNumberNTestRounds {
|
|
array := randInts[uint32](rand.Intn(16))
|
|
length, _ := I32ArraySize(array)
|
|
if length != 4 * len(array) { test.Fatalf("%d != %d", length, 4 * len(array)) }
|
|
_, err := EncodeI32Array[uint32](buffer[:length], array)
|
|
if err != nil { test.Fatal(err) }
|
|
decoded, _, err := DecodeI32Array[uint32](buffer[:length])
|
|
if err != nil { test.Fatal(err) }
|
|
if !slices.Equal(decoded, array) {
|
|
test.Fatalf("%v != %v", decoded, array)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestI64Array(test *testing.T) {
|
|
var buffer [512]byte
|
|
_, err := EncodeI64Array[uint64](buffer[:], []uint64 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int64: wrong buffer length") { test.Fatal(err) }
|
|
_, err = EncodeI64Array[uint64](buffer[:0], []uint64 { 0, 4, 50, 19 })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []int64: wrong buffer length") { test.Fatal(err) }
|
|
_, _, err = DecodeI64Array[uint64](buffer[:])
|
|
if err != nil { test.Fatal(err) }
|
|
_, _, err = DecodeI64Array[uint64](buffer[:0])
|
|
if err != nil { test.Fatal(err) }
|
|
|
|
for _ = range largeNumberNTestRounds {
|
|
array := randInts[uint64](rand.Intn(16))
|
|
length, _ := I64ArraySize(array)
|
|
if length != 8 * len(array) { test.Fatalf("%d != %d", length, 8 * len(array)) }
|
|
_, err := EncodeI64Array[uint64](buffer[:length], array)
|
|
if err != nil { test.Fatal(err) }
|
|
decoded, _, err := DecodeI64Array[uint64](buffer[:length])
|
|
if err != nil { test.Fatal(err) }
|
|
if !slices.Equal(decoded, array) {
|
|
test.Fatalf("%v != %v", decoded, array)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestStringArray(test *testing.T) {
|
|
var buffer [8192]byte
|
|
_, err := EncodeStringArray[string](buffer[:], []string { "0", "4", "50", "19" })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []string: wrong buffer length") { test.Fatal(err) }
|
|
_, err = EncodeStringArray[string](buffer[:0], []string { "0", "4", "50", "19" })
|
|
if !errIs(err, ErrWrongBufferLength, "encoding []string: wrong buffer length") { test.Fatal(err) }
|
|
_, _, err = DecodeStringArray[string](buffer[:0])
|
|
if err != nil { test.Fatal(err) }
|
|
|
|
for _ = range largeNumberNTestRounds {
|
|
array := randStrings[string](rand.Intn(16), 16)
|
|
length, _ := StringArraySize(array)
|
|
// TODO test length
|
|
_, err := EncodeStringArray[string](buffer[:length], array)
|
|
if err != nil { test.Fatal(err) }
|
|
decoded, _, err := DecodeStringArray[string](buffer[:length])
|
|
if err != nil { test.Fatal(err) }
|
|
if !slices.Equal(decoded, array) {
|
|
test.Fatalf("%v != %v", decoded, array)
|
|
}
|
|
}
|
|
}
|
|
|