initial commit
[govpp.git] / vendor / github.com / lunixbochs / struc / fields_test.go
1 package struc
2
3 import (
4         "bytes"
5         "reflect"
6         "testing"
7 )
8
9 var refVal = reflect.ValueOf(reference)
10
11 func TestFieldsParse(t *testing.T) {
12         if _, err := parseFields(refVal); err != nil {
13                 t.Fatal(err)
14         }
15 }
16
17 func TestFieldsString(t *testing.T) {
18         fields, _ := parseFields(refVal)
19         fields.String()
20 }
21
22 type sizefromStruct struct {
23         Size1 uint `struc:"sizeof=Var1"`
24         Var1  []byte
25         Size2 int `struc:"sizeof=Var2"`
26         Var2  []byte
27 }
28
29 func TestFieldsSizefrom(t *testing.T) {
30         var test = sizefromStruct{
31                 Var1: []byte{1, 2, 3},
32                 Var2: []byte{4, 5, 6},
33         }
34         var buf bytes.Buffer
35         err := Pack(&buf, &test)
36         if err != nil {
37                 t.Fatal(err)
38         }
39         err = Unpack(&buf, &test)
40         if err != nil {
41                 t.Fatal(err)
42         }
43 }
44
45 type sizefromStructBad struct {
46         Size1 string `struc:"sizeof=Var1"`
47         Var1  []byte
48 }
49
50 func TestFieldsSizefromBad(t *testing.T) {
51         var test = &sizefromStructBad{Var1: []byte{1, 2, 3}}
52         var buf bytes.Buffer
53         defer func() {
54                 if err := recover(); err == nil {
55                         t.Fatal("failed to panic on bad sizeof type")
56                 }
57         }()
58         Pack(&buf, &test)
59 }