github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/common/bytes_test.go (about)

     1  
     2  //此源码被清华学神尹成大魔王专业翻译分析并修改
     3  //尹成QQ77025077
     4  //尹成微信18510341407
     5  //尹成所在QQ群721929980
     6  //尹成邮箱 yinc13@mails.tsinghua.edu.cn
     7  //尹成毕业于清华大学,微软区块链领域全球最有价值专家
     8  //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
     9  //版权所有2014 Go Ethereum作者
    10  //此文件是Go以太坊库的一部分。
    11  //
    12  //Go-Ethereum库是免费软件:您可以重新分发它和/或修改
    13  //根据GNU发布的较低通用公共许可证的条款
    14  //自由软件基金会,或者许可证的第3版,或者
    15  //(由您选择)任何更高版本。
    16  //
    17  //Go以太坊图书馆的发行目的是希望它会有用,
    18  //但没有任何保证;甚至没有
    19  //适销性或特定用途的适用性。见
    20  //GNU较低的通用公共许可证,了解更多详细信息。
    21  //
    22  //你应该收到一份GNU较低级别的公共许可证副本
    23  //以及Go以太坊图书馆。如果没有,请参见<http://www.gnu.org/licenses/>。
    24  
    25  package common
    26  
    27  import (
    28  	"bytes"
    29  	"testing"
    30  
    31  	checker "gopkg.in/check.v1"
    32  )
    33  
    34  type BytesSuite struct{}
    35  
    36  var _ = checker.Suite(&BytesSuite{})
    37  
    38  func (s *BytesSuite) TestCopyBytes(c *checker.C) {
    39  	data1 := []byte{1, 2, 3, 4}
    40  	exp1 := []byte{1, 2, 3, 4}
    41  	res1 := CopyBytes(data1)
    42  	c.Assert(res1, checker.DeepEquals, exp1)
    43  }
    44  
    45  func (s *BytesSuite) TestLeftPadBytes(c *checker.C) {
    46  	val1 := []byte{1, 2, 3, 4}
    47  	exp1 := []byte{0, 0, 0, 0, 1, 2, 3, 4}
    48  
    49  	res1 := LeftPadBytes(val1, 8)
    50  	res2 := LeftPadBytes(val1, 2)
    51  
    52  	c.Assert(res1, checker.DeepEquals, exp1)
    53  	c.Assert(res2, checker.DeepEquals, val1)
    54  }
    55  
    56  func (s *BytesSuite) TestRightPadBytes(c *checker.C) {
    57  	val := []byte{1, 2, 3, 4}
    58  	exp := []byte{1, 2, 3, 4, 0, 0, 0, 0}
    59  
    60  	resstd := RightPadBytes(val, 8)
    61  	resshrt := RightPadBytes(val, 2)
    62  
    63  	c.Assert(resstd, checker.DeepEquals, exp)
    64  	c.Assert(resshrt, checker.DeepEquals, val)
    65  }
    66  
    67  func TestFromHex(t *testing.T) {
    68  	input := "0x01"
    69  	expected := []byte{1}
    70  	result := FromHex(input)
    71  	if !bytes.Equal(expected, result) {
    72  		t.Errorf("Expected %x got %x", expected, result)
    73  	}
    74  }
    75  
    76  func TestIsHex(t *testing.T) {
    77  	tests := []struct {
    78  		input string
    79  		ok    bool
    80  	}{
    81  		{"", true},
    82  		{"0", false},
    83  		{"00", true},
    84  		{"a9e67e", true},
    85  		{"A9E67E", true},
    86  		{"0xa9e67e", false},
    87  		{"a9e67e001", false},
    88  		{"0xHELLO_MY_NAME_IS_STEVEN_@#$^&*", false},
    89  	}
    90  	for _, test := range tests {
    91  		if ok := isHex(test.input); ok != test.ok {
    92  			t.Errorf("isHex(%q) = %v, want %v", test.input, ok, test.ok)
    93  		}
    94  	}
    95  }
    96  
    97  func TestFromHexOddLength(t *testing.T) {
    98  	input := "0x1"
    99  	expected := []byte{1}
   100  	result := FromHex(input)
   101  	if !bytes.Equal(expected, result) {
   102  		t.Errorf("Expected %x got %x", expected, result)
   103  	}
   104  }
   105  
   106  func TestNoPrefixShortHexOddLength(t *testing.T) {
   107  	input := "1"
   108  	expected := []byte{1}
   109  	result := FromHex(input)
   110  	if !bytes.Equal(expected, result) {
   111  		t.Errorf("Expected %x got %x", expected, result)
   112  	}
   113  }