kind_test.go raw
1 package kind
2
3 import (
4 "testing"
5
6 "next.orly.dev/pkg/lol/chk"
7
8 "lukechampine.com/frand"
9 )
10
11 func TestMarshalUnmarshal(t *testing.T) {
12 var err error
13 k := make([]*K, 1000000)
14 for i := range k {
15 k[i] = New(uint16(frand.Intn(65535)))
16 }
17 mk := make([][]byte, len(k))
18 for i := range mk {
19 mk[i] = make([]byte, 0, 5) // 16 bits max 65535 = 5 characters
20 }
21 for i := range k {
22 mk[i] = k[i].Marshal(mk[i])
23 }
24 k2 := make([]*K, len(k))
25 for i := range k2 {
26 k2[i] = New(0)
27 }
28 for i := range k2 {
29 var r []byte
30 if r, err = k2[i].Unmarshal(mk[i]); chk.E(err) {
31 t.Fatal(err)
32 }
33 if len(r) != 0 {
34 t.Fatalf("remainder after unmarshal: '%s'", r)
35 }
36 }
37 }
38