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  }