kinds_test.go raw
1 package kind
2
3 import (
4 "testing"
5
6 "next.orly.dev/pkg/lol/chk"
7 "lukechampine.com/frand"
8 )
9
10 func TestUnmarshalKindsArray(t *testing.T) {
11 k := &S{make([]*K, 100)}
12 for i := range k.K {
13 k.K[i] = New(uint16(frand.Intn(65535)))
14 }
15 var dst []byte
16 var err error
17 if dst = k.Marshal(dst); chk.E(err) {
18 t.Fatal(err)
19 }
20 k2 := &S{}
21 var rem []byte
22 if rem, err = k2.Unmarshal(dst); chk.E(err) {
23 return
24 }
25 if len(rem) > 0 {
26 t.Fatalf("failed to unmarshal, remnant afterwards '%s'", rem)
27 }
28 for i := range k.K {
29 if *k.K[i] != *k2.K[i] {
30 t.Fatalf(
31 "failed to unmarshal at element %d; got %x, expected %x",
32 i, k.K[i], k2.K[i],
33 )
34 }
35 }
36 }
37