OSDN Git Service

feat: add processIssuing (#152)
[bytom/vapor.git] / vendor / github.com / bytom / protocol / vm / types_test.go
diff --git a/vendor/github.com/bytom/protocol/vm/types_test.go b/vendor/github.com/bytom/protocol/vm/types_test.go
new file mode 100644 (file)
index 0000000..70031bc
--- /dev/null
@@ -0,0 +1,80 @@
+package vm
+
+import (
+       "bytes"
+       "testing"
+)
+
+func TestBoolBytes(t *testing.T) {
+       got := BoolBytes(true)
+       want := []byte{1}
+       if !bytes.Equal(got, want) {
+               t.Errorf("BoolBytes(t) = %x want %x", got, want)
+       }
+
+       got = BoolBytes(false)
+       want = []byte{}
+       if !bytes.Equal(got, want) {
+               t.Errorf("BoolBytes(f) = %x want %x", got, want)
+       }
+}
+
+func TestAsBool(t *testing.T) {
+       cases := []struct {
+               data []byte
+               want bool
+       }{
+               {[]byte{0, 0, 0, 0}, false},
+               {[]byte{0}, false},
+               {[]byte{}, false},
+               {[]byte{1}, true},
+               {[]byte{1, 1, 1, 1}, true},
+               {[]byte{0, 0, 0, 1}, true},
+               {[]byte{1, 0, 0, 0}, true},
+               {[]byte{2}, true},
+       }
+
+       for _, c := range cases {
+               got := AsBool(c.data)
+
+               if got != c.want {
+                       t.Errorf("AsBool(%x) = %v want %v", c.data, got, c.want)
+               }
+       }
+}
+
+func TestInt64(t *testing.T) {
+       cases := []struct {
+               num  int64
+               data []byte
+       }{
+               {0, []byte{}},
+               {1, []byte{0x01}},
+               {255, []byte{0xff}},
+               {256, []byte{0x00, 0x01}},
+               {1 << 16, []byte{0x00, 0x00, 0x01}},
+               {-1, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
+               {-2, []byte{0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
+       }
+
+       for _, c := range cases {
+               gotData := Int64Bytes(c.num)
+
+               if !bytes.Equal(gotData, c.data) {
+                       t.Errorf("Int64Bytes(%d) = %x want %x", c.num, gotData, c.data)
+               }
+
+               gotNum, _ := AsInt64(c.data)
+
+               if gotNum != c.num {
+                       t.Errorf("AsInt64(%x) = %d want %d", c.data, gotNum, c.num)
+               }
+       }
+
+       data := []byte{1, 1, 1, 1, 1, 1, 1, 1, 1}
+       _, err := AsInt64(data)
+       want := ErrBadValue
+       if err != want {
+               t.Errorf("AsInt64(%x) = %v want %v", data, err, want)
+       }
+}