github.com/karalabe/go-ethereum@v0.8.5/ethutil/bytes_test.go (about) 1 package ethutil 2 3 import ( 4 checker "gopkg.in/check.v1" 5 ) 6 7 type BytesSuite struct{} 8 9 var _ = checker.Suite(&BytesSuite{}) 10 11 func (s *BytesSuite) TestByteString(c *checker.C) { 12 var data Bytes 13 data = []byte{102, 111, 111} 14 exp := "foo" 15 res := data.String() 16 17 c.Assert(res, checker.Equals, exp) 18 } 19 20 /* 21 func (s *BytesSuite) TestDeleteFromByteSlice(c *checker.C) { 22 data := []byte{1, 2, 3, 4} 23 slice := []byte{1, 2, 3, 4} 24 exp := []byte{1, 4} 25 res := DeleteFromByteSlice(data, slice) 26 27 c.Assert(res, checker.DeepEquals, exp) 28 } 29 30 */ 31 func (s *BytesSuite) TestNumberToBytes(c *checker.C) { 32 // data1 := int(1) 33 // res1 := NumberToBytes(data1, 16) 34 // c.Check(res1, checker.Panics) 35 36 var data2 float64 = 3.141592653 37 exp2 := []byte{0xe9, 0x38} 38 res2 := NumberToBytes(data2, 16) 39 c.Assert(res2, checker.DeepEquals, exp2) 40 } 41 42 func (s *BytesSuite) TestBytesToNumber(c *checker.C) { 43 datasmall := []byte{0xe9, 0x38, 0xe9, 0x38} 44 datalarge := []byte{0xe9, 0x38, 0xe9, 0x38, 0xe9, 0x38, 0xe9, 0x38} 45 46 var expsmall uint64 = 0xe938e938 47 var explarge uint64 = 0x0 48 49 ressmall := BytesToNumber(datasmall) 50 reslarge := BytesToNumber(datalarge) 51 52 c.Assert(ressmall, checker.Equals, expsmall) 53 c.Assert(reslarge, checker.Equals, explarge) 54 55 } 56 57 func (s *BytesSuite) TestReadVarInt(c *checker.C) { 58 data8 := []byte{1, 2, 3, 4, 5, 6, 7, 8} 59 data4 := []byte{1, 2, 3, 4} 60 data2 := []byte{1, 2} 61 data1 := []byte{1} 62 63 exp8 := uint64(72623859790382856) 64 exp4 := uint64(16909060) 65 exp2 := uint64(258) 66 exp1 := uint64(1) 67 68 res8 := ReadVarInt(data8) 69 res4 := ReadVarInt(data4) 70 res2 := ReadVarInt(data2) 71 res1 := ReadVarInt(data1) 72 73 c.Assert(res8, checker.Equals, exp8) 74 c.Assert(res4, checker.Equals, exp4) 75 c.Assert(res2, checker.Equals, exp2) 76 c.Assert(res1, checker.Equals, exp1) 77 } 78 79 func (s *BytesSuite) TestBinaryLength(c *checker.C) { 80 data1 := 0 81 data2 := 920987656789 82 83 exp1 := 0 84 exp2 := 5 85 86 res1 := BinaryLength(data1) 87 res2 := BinaryLength(data2) 88 89 c.Assert(res1, checker.Equals, exp1) 90 c.Assert(res2, checker.Equals, exp2) 91 } 92 93 func (s *BytesSuite) TestCopyBytes(c *checker.C) { 94 data1 := []byte{1, 2, 3, 4} 95 exp1 := []byte{1, 2, 3, 4} 96 res1 := CopyBytes(data1) 97 c.Assert(res1, checker.DeepEquals, exp1) 98 } 99 100 func (s *BytesSuite) TestIsHex(c *checker.C) { 101 data1 := "a9e67e" 102 exp1 := false 103 res1 := IsHex(data1) 104 c.Assert(res1, checker.DeepEquals, exp1) 105 106 data2 := "0xa9e67e00" 107 exp2 := true 108 res2 := IsHex(data2) 109 c.Assert(res2, checker.DeepEquals, exp2) 110 111 } 112 113 func (s *BytesSuite) TestParseDataString(c *checker.C) { 114 res1 := ParseData("hello", "world", "0x0106") 115 data := "68656c6c6f000000000000000000000000000000000000000000000000000000776f726c640000000000000000000000000000000000000000000000000000000106000000000000000000000000000000000000000000000000000000000000" 116 exp1 := Hex2Bytes(data) 117 c.Assert(res1, checker.DeepEquals, exp1) 118 } 119 120 func (s *BytesSuite) TestParseDataBytes(c *checker.C) { 121 data1 := []byte{232, 212, 165, 16, 0} 122 exp1 := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 212, 165, 16, 0} 123 124 res1 := ParseData(data1) 125 c.Assert(res1, checker.DeepEquals, exp1) 126 127 } 128 129 func (s *BytesSuite) TestLeftPadBytes(c *checker.C) { 130 val1 := []byte{1, 2, 3, 4} 131 exp1 := []byte{0, 0, 0, 0, 1, 2, 3, 4} 132 133 res1 := LeftPadBytes(val1, 8) 134 res2 := LeftPadBytes(val1, 2) 135 136 c.Assert(res1, checker.DeepEquals, exp1) 137 c.Assert(res2, checker.DeepEquals, val1) 138 } 139 140 func (s *BytesSuite) TestFormatData(c *checker.C) { 141 data1 := "" 142 data2 := "0xa9e67e00" 143 data3 := "a9e67e" 144 data4 := "\"a9e67e00\"" 145 146 // exp1 := []byte{} 147 exp2 := []byte{00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0xa9, 0xe6, 0x7e, 00} 148 exp3 := []byte{00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00} 149 exp4 := []byte{0x61, 0x39, 0x65, 0x36, 0x37, 0x65, 0x30, 0x30, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00} 150 151 res1 := FormatData(data1) 152 res2 := FormatData(data2) 153 res3 := FormatData(data3) 154 res4 := FormatData(data4) 155 156 c.Assert(res1, checker.IsNil) 157 c.Assert(res2, checker.DeepEquals, exp2) 158 c.Assert(res3, checker.DeepEquals, exp3) 159 c.Assert(res4, checker.DeepEquals, exp4) 160 } 161 162 func (s *BytesSuite) TestRightPadBytes(c *checker.C) { 163 val := []byte{1, 2, 3, 4} 164 exp := []byte{1, 2, 3, 4, 0, 0, 0, 0} 165 166 resstd := RightPadBytes(val, 8) 167 resshrt := RightPadBytes(val, 2) 168 169 c.Assert(resstd, checker.DeepEquals, exp) 170 c.Assert(resshrt, checker.DeepEquals, val) 171 } 172 173 func (s *BytesSuite) TestLeftPadString(c *checker.C) { 174 val := "test" 175 exp := "\x30\x30\x30\x30" + val 176 177 resstd := LeftPadString(val, 8) 178 resshrt := LeftPadString(val, 2) 179 180 c.Assert(resstd, checker.Equals, exp) 181 c.Assert(resshrt, checker.Equals, val) 182 } 183 184 func (s *BytesSuite) TestRightPadString(c *checker.C) { 185 val := "test" 186 exp := val + "\x30\x30\x30\x30" 187 188 resstd := RightPadString(val, 8) 189 resshrt := RightPadString(val, 2) 190 191 c.Assert(resstd, checker.Equals, exp) 192 c.Assert(resshrt, checker.Equals, val) 193 }