summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/lunixbochs/struc/field_test.go
diff options
context:
space:
mode:
authorRastislav Szabo <raszabo@cisco.com>2017-05-04 11:09:03 +0200
committerRastislav Szabo <raszabo@cisco.com>2017-05-04 11:12:35 +0200
commita101d966133a70b8a76526be25070436d14fcf9f (patch)
tree75e2dbf20de615e58252b780b2ba5baae8fdcf82 /vendor/github.com/lunixbochs/struc/field_test.go
parenta968ead74525125dff9ae90b1c9a9102e4327900 (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.go77
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)
+ }
+}