github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/ethutil/value_test.go (about) 1 package ethutil 2 3 import ( 4 "math/big" 5 6 checker "gopkg.in/check.v1" 7 ) 8 9 type ValueSuite struct{} 10 11 var _ = checker.Suite(&ValueSuite{}) 12 13 func (s *ValueSuite) TestValueCmp(c *checker.C) { 14 val1 := NewValue("hello") 15 val2 := NewValue("world") 16 c.Assert(val1.Cmp(val2), checker.Equals, false) 17 18 val3 := NewValue("hello") 19 val4 := NewValue("hello") 20 c.Assert(val3.Cmp(val4), checker.Equals, true) 21 } 22 23 func (s *ValueSuite) TestValueTypes(c *checker.C) { 24 str := NewValue("str") 25 num := NewValue(1) 26 inter := NewValue([]interface{}{1}) 27 byt := NewValue([]byte{1, 2, 3, 4}) 28 bigInt := NewValue(big.NewInt(10)) 29 30 strExp := "str" 31 numExp := uint64(1) 32 interExp := []interface{}{1} 33 bytExp := []byte{1, 2, 3, 4} 34 bigExp := big.NewInt(10) 35 36 c.Assert(str.Str(), checker.Equals, strExp) 37 c.Assert(num.Uint(), checker.Equals, numExp) 38 c.Assert(NewValue(inter.Interface()).Cmp(NewValue(interExp)), checker.Equals, true) 39 c.Assert(byt.Bytes(), checker.DeepEquals, bytExp) 40 c.Assert(bigInt.BigInt(), checker.DeepEquals, bigExp) 41 } 42 43 func (s *ValueSuite) TestIterator(c *checker.C) { 44 value := NewValue([]interface{}{1, 2, 3}) 45 iter := value.NewIterator() 46 values := []uint64{1, 2, 3} 47 i := 0 48 for iter.Next() { 49 c.Assert(values[i], checker.Equals, iter.Value().Uint()) 50 i++ 51 } 52 } 53 54 func (s *ValueSuite) TestMath(c *checker.C) { 55 data1 := NewValue(1) 56 data1.Add(1).Add(1) 57 exp1 := NewValue(3) 58 data2 := NewValue(2) 59 data2.Sub(1).Sub(1) 60 exp2 := NewValue(0) 61 62 c.Assert(data1.DeepCmp(exp1), checker.Equals, true) 63 c.Assert(data2.DeepCmp(exp2), checker.Equals, true) 64 } 65 66 func (s *ValueSuite) TestString(c *checker.C) { 67 data := "10" 68 exp := int64(10) 69 c.Assert(NewValue(data).Int(), checker.DeepEquals, exp) 70 }