diff options
author | 2017-05-04 11:09:03 +0200 | |
---|---|---|
committer | 2017-05-04 11:12:35 +0200 | |
commit | a101d966133a70b8a76526be25070436d14fcf9f (patch) | |
tree | 75e2dbf20de615e58252b780b2ba5baae8fdcf82 /vendor/github.com/lunixbochs/struc/field_test.go | |
parent | a968ead74525125dff9ae90b1c9a9102e4327900 (diff) |
initial commit
Signed-off-by: Rastislav Szabo <raszabo@cisco.com>
Diffstat (limited to 'vendor/github.com/lunixbochs/struc/field_test.go')
-rw-r--r-- | vendor/github.com/lunixbochs/struc/field_test.go | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/github.com/lunixbochs/struc/field_test.go b/vendor/github.com/lunixbochs/struc/field_test.go new file mode 100644 index 0000000..45a07b2 --- /dev/null +++ b/vendor/github.com/lunixbochs/struc/field_test.go @@ -0,0 +1,77 @@ +package struc + +import ( + "bytes" + "testing" +) + +type badFloat struct { + BadFloat int `struc:"float64"` +} + +func TestBadFloatField(t *testing.T) { + buf := bytes.NewReader([]byte("00000000")) + err := Unpack(buf, &badFloat{}) + if err == nil { + t.Fatal("failed to error on bad float unpack") + } +} + +type emptyLengthField struct { + Strlen int `struc:"sizeof=Str"` + Str []byte +} + +func TestEmptyLengthField(t *testing.T) { + var buf bytes.Buffer + s := &emptyLengthField{0, []byte("test")} + o := &emptyLengthField{} + if err := Pack(&buf, s); err != nil { + t.Fatal(err) + } + if err := Unpack(&buf, o); err != nil { + t.Fatal(err) + } + if !bytes.Equal(s.Str, o.Str) { + t.Fatal("empty length field encode failed") + } +} + +type fixedSlicePad struct { + Field []byte `struc:"[4]byte"` +} + +func TestFixedSlicePad(t *testing.T) { + var buf bytes.Buffer + ref := []byte{0, 0, 0, 0} + s := &fixedSlicePad{} + if err := Pack(&buf, s); err != nil { + t.Fatal(err) + } + if !bytes.Equal(buf.Bytes(), ref) { + t.Fatal("implicit fixed slice pack failed") + } + if err := Unpack(&buf, s); err != nil { + t.Fatal(err) + } + if !bytes.Equal(s.Field, ref) { + t.Fatal("implicit fixed slice unpack failed") + } +} + +type sliceCap struct { + Len int `struc:"sizeof=Field"` + Field []byte +} + +func TestSliceCap(t *testing.T) { + var buf bytes.Buffer + tmp := &sliceCap{0, []byte("1234")} + if err := Pack(&buf, tmp); err != nil { + t.Fatal(err) + } + tmp.Field = make([]byte, 0, 4) + if err := Unpack(&buf, tmp); err != nil { + t.Fatal(err) + } +} |