github.com/xfond/eth-implementation@v1.8.9-0.20180514135602-f6bc65fc6811/common/number/uint_test.go (about) 1 // Copyright 2015 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package number 18 19 import ( 20 "math/big" 21 "testing" 22 23 "github.com/ethereum/go-ethereum/common" 24 ) 25 26 func TestSet(t *testing.T) { 27 a := Uint(0) 28 b := Uint(10) 29 a.Set(b) 30 if a.num.Cmp(b.num) != 0 { 31 t.Error("didn't compare", a, b) 32 } 33 34 c := Uint(0).SetBytes(common.Hex2Bytes("0a")) 35 if c.num.Cmp(big.NewInt(10)) != 0 { 36 t.Error("c set bytes failed.") 37 } 38 } 39 40 func TestInitialiser(t *testing.T) { 41 check := false 42 init := NewInitialiser(func(x *Number) *Number { 43 check = true 44 return x 45 }) 46 a := init(0).Add(init(1), init(2)) 47 if a.Cmp(init(3)) != 0 { 48 t.Error("expected 3. got", a) 49 } 50 if !check { 51 t.Error("expected limiter to be called") 52 } 53 } 54 55 func TestGet(t *testing.T) { 56 a := Uint(10) 57 if a.Uint64() != 10 { 58 t.Error("expected to get 10. got", a.Uint64()) 59 } 60 61 a = Uint(10) 62 if a.Int64() != 10 { 63 t.Error("expected to get 10. got", a.Int64()) 64 } 65 } 66 67 func TestCmp(t *testing.T) { 68 a := Uint(10) 69 b := Uint(10) 70 c := Uint(11) 71 72 if a.Cmp(b) != 0 { 73 t.Error("a b == 0 failed", a, b) 74 } 75 76 if a.Cmp(c) >= 0 { 77 t.Error("a c < 0 failed", a, c) 78 } 79 80 if c.Cmp(b) <= 0 { 81 t.Error("c b > 0 failed", c, b) 82 } 83 } 84 85 func TestMaxArith(t *testing.T) { 86 a := Uint(0).Add(MaxUint256, One) 87 if a.Cmp(Zero) != 0 { 88 t.Error("expected max256 + 1 = 0 got", a) 89 } 90 91 a = Uint(0).Sub(Uint(0), One) 92 if a.Cmp(MaxUint256) != 0 { 93 t.Error("expected 0 - 1 = max256 got", a) 94 } 95 96 a = Int(0).Sub(Int(0), One) 97 if a.Cmp(MinOne) != 0 { 98 t.Error("expected 0 - 1 = -1 got", a) 99 } 100 } 101 102 func TestConversion(t *testing.T) { 103 a := Int(-1) 104 b := a.Uint256() 105 if b.Cmp(MaxUint256) != 0 { 106 t.Error("expected -1 => unsigned to return max. got", b) 107 } 108 }