OSDN Git Service

Hulk did something
[bytom/vapor.git] / protocol / vm / types_test.go
1 package vm
2
3 import (
4         "bytes"
5         "testing"
6 )
7
8 func TestBoolBytes(t *testing.T) {
9         got := BoolBytes(true)
10         want := []byte{1}
11         if !bytes.Equal(got, want) {
12                 t.Errorf("BoolBytes(t) = %x want %x", got, want)
13         }
14
15         got = BoolBytes(false)
16         want = []byte{}
17         if !bytes.Equal(got, want) {
18                 t.Errorf("BoolBytes(f) = %x want %x", got, want)
19         }
20 }
21
22 func TestAsBool(t *testing.T) {
23         cases := []struct {
24                 data []byte
25                 want bool
26         }{
27                 {[]byte{0, 0, 0, 0}, false},
28                 {[]byte{0}, false},
29                 {[]byte{}, false},
30                 {[]byte{1}, true},
31                 {[]byte{1, 1, 1, 1}, true},
32                 {[]byte{0, 0, 0, 1}, true},
33                 {[]byte{1, 0, 0, 0}, true},
34                 {[]byte{2}, true},
35         }
36
37         for _, c := range cases {
38                 got := AsBool(c.data)
39
40                 if got != c.want {
41                         t.Errorf("AsBool(%x) = %v want %v", c.data, got, c.want)
42                 }
43         }
44 }
45
46 func TestInt64(t *testing.T) {
47         cases := []struct {
48                 num  int64
49                 data []byte
50         }{
51                 {0, []byte{}},
52                 {1, []byte{0x01}},
53                 {255, []byte{0xff}},
54                 {256, []byte{0x00, 0x01}},
55                 {1 << 16, []byte{0x00, 0x00, 0x01}},
56                 {-1, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
57                 {-2, []byte{0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
58         }
59
60         for _, c := range cases {
61                 gotData := Int64Bytes(c.num)
62
63                 if !bytes.Equal(gotData, c.data) {
64                         t.Errorf("Int64Bytes(%d) = %x want %x", c.num, gotData, c.data)
65                 }
66
67                 gotNum, _ := AsInt64(c.data)
68
69                 if gotNum != c.num {
70                         t.Errorf("AsInt64(%x) = %d want %d", c.data, gotNum, c.num)
71                 }
72         }
73
74         data := []byte{1, 1, 1, 1, 1, 1, 1, 1, 1}
75         _, err := AsInt64(data)
76         want := ErrBadValue
77         if err != want {
78                 t.Errorf("AsInt64(%x) = %v want %v", data, err, want)
79         }
80 }