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) } } }