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