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 }