initial commit
[govpp.git] / vendor / github.com / lunixbochs / struc / parse_test.go
1 package struc
2
3 import (
4         "bytes"
5         "reflect"
6         "testing"
7 )
8
9 func parseTest(data interface{}) error {
10         _, err := parseFields(reflect.ValueOf(data))
11         return err
12 }
13
14 type empty struct{}
15
16 func TestEmptyStruc(t *testing.T) {
17         if err := parseTest(&empty{}); err == nil {
18                 t.Fatal("failed to error on empty struct")
19         }
20 }
21
22 type chanStruct struct {
23         Test chan int
24 }
25
26 func TestChanError(t *testing.T) {
27         if err := parseTest(&chanStruct{}); err == nil {
28                 // TODO: should probably ignore channel fields
29                 t.Fatal("failed to error on struct containing channel")
30         }
31 }
32
33 type badSizeof struct {
34         Size int `struc:"sizeof=Bad"`
35 }
36
37 func TestBadSizeof(t *testing.T) {
38         if err := parseTest(&badSizeof{}); err == nil {
39                 t.Fatal("failed to error on missing Sizeof target")
40         }
41 }
42
43 type missingSize struct {
44         Test []byte
45 }
46
47 func TestMissingSize(t *testing.T) {
48         if err := parseTest(&missingSize{}); err == nil {
49                 t.Fatal("failed to error on missing field size")
50         }
51 }
52
53 type badNested struct {
54         Empty empty
55 }
56
57 func TestNestedParseError(t *testing.T) {
58         var buf bytes.Buffer
59         if err := Pack(&buf, &badNested{}); err == nil {
60                 t.Fatal("failed to error on bad nested struct")
61         }
62 }