value_test.go 1.63 KB
Newer Older
obscuren's avatar
obscuren committed
1
package common
obscuren's avatar
obscuren committed
2 3

import (
obscuren's avatar
obscuren committed
4
	"math/big"
5 6

	checker "gopkg.in/check.v1"
obscuren's avatar
obscuren committed
7 8
)

9 10 11 12 13
type ValueSuite struct{}

var _ = checker.Suite(&ValueSuite{})

func (s *ValueSuite) TestValueCmp(c *checker.C) {
obscuren's avatar
obscuren committed
14 15
	val1 := NewValue("hello")
	val2 := NewValue("world")
16
	c.Assert(val1.Cmp(val2), checker.Equals, false)
obscuren's avatar
obscuren committed
17 18 19

	val3 := NewValue("hello")
	val4 := NewValue("hello")
20
	c.Assert(val3.Cmp(val4), checker.Equals, true)
obscuren's avatar
obscuren committed
21 22
}

23
func (s *ValueSuite) TestValueTypes(c *checker.C) {
obscuren's avatar
obscuren committed
24 25 26
	str := NewValue("str")
	num := NewValue(1)
	inter := NewValue([]interface{}{1})
obscuren's avatar
obscuren committed
27 28
	byt := NewValue([]byte{1, 2, 3, 4})
	bigInt := NewValue(big.NewInt(10))
obscuren's avatar
obscuren committed
29

30 31
	strExp := "str"
	numExp := uint64(1)
obscuren's avatar
obscuren committed
32 33 34
	interExp := []interface{}{1}
	bytExp := []byte{1, 2, 3, 4}
	bigExp := big.NewInt(10)
35 36 37

	c.Assert(str.Str(), checker.Equals, strExp)
	c.Assert(num.Uint(), checker.Equals, numExp)
38
	c.Assert(NewValue(inter.Val).Cmp(NewValue(interExp)), checker.Equals, true)
39 40
	c.Assert(byt.Bytes(), checker.DeepEquals, bytExp)
	c.Assert(bigInt.BigInt(), checker.DeepEquals, bigExp)
obscuren's avatar
obscuren committed
41
}
42

43
func (s *ValueSuite) TestIterator(c *checker.C) {
44
	value := NewValue([]interface{}{1, 2, 3})
45
	iter := value.NewIterator()
46 47
	values := []uint64{1, 2, 3}
	i := 0
48 49
	for iter.Next() {
		c.Assert(values[i], checker.Equals, iter.Value().Uint())
50 51 52
		i++
	}
}
obscuren's avatar
obscuren committed
53

54 55 56 57 58 59 60
func (s *ValueSuite) TestMath(c *checker.C) {
	data1 := NewValue(1)
	data1.Add(1).Add(1)
	exp1 := NewValue(3)
	data2 := NewValue(2)
	data2.Sub(1).Sub(1)
	exp2 := NewValue(0)
obscuren's avatar
obscuren committed
61

62 63
	c.Assert(data1.DeepCmp(exp1), checker.Equals, true)
	c.Assert(data2.DeepCmp(exp2), checker.Equals, true)
obscuren's avatar
obscuren committed
64
}
obscuren's avatar
obscuren committed
65

66 67 68 69
func (s *ValueSuite) TestString(c *checker.C) {
	data := "10"
	exp := int64(10)
	c.Assert(NewValue(data).Int(), checker.DeepEquals, exp)
obscuren's avatar
obscuren committed
70
}