github.com/lino-network/lino@v0.6.11/x/reputation/repv2/int_test.go (about) 1 package repv2 2 3 import ( 4 "math/big" 5 "testing" 6 7 "github.com/stretchr/testify/suite" 8 ) 9 10 type IntTestSuite struct { 11 suite.Suite 12 } 13 14 func (suite *IntTestSuite) TestNewInt() { 15 suite.Equal(big.NewInt(334124), NewInt(334124).Int) 16 } 17 18 func (suite *IntTestSuite) TestClone() { 19 a := NewInt(333) 20 b := a.Clone() 21 b.Add(NewInt(123)) 22 suite.Equal(NewInt(456), b) 23 suite.Equal(NewInt(333), a) 24 } 25 26 func (suite *IntTestSuite) TestMisc() { 27 a := NewInt(33) 28 a.Add(NewInt(44)) 29 suite.Equal(NewInt(77), a) 30 31 b := NewInt(44) 32 b.Sub(NewInt(33)) 33 suite.Equal(NewInt(11), b) 34 35 c := NewInt(55) 36 c.Mul(NewInt(100)) 37 suite.Equal(NewInt(5500), c) 38 39 d := NewInt(55) 40 d.Div(NewInt(11)) 41 suite.Equal(NewInt(5), d) 42 43 suite.Equal(NewInt(444), IntMax(NewInt(333), NewInt(444))) 44 suite.Equal(NewInt(333), IntMin(NewInt(333), NewInt(444))) 45 suite.Equal(NewInt(777), IntAdd(NewInt(333), NewInt(444))) 46 suite.Equal(NewInt(-111), IntSub(NewInt(333), NewInt(444))) 47 suite.Equal(NewInt(8547), IntMul(NewInt(111), NewInt(77))) 48 suite.Equal(NewInt(3), IntDiv(NewInt(333), NewInt(111))) 49 suite.Equal(true, IntGreater(NewInt(444), NewInt(111))) 50 suite.Equal(false, IntGreater(NewInt(1), NewInt(111))) 51 suite.Equal(true, IntGTE(NewInt(333), NewInt(111))) 52 suite.Equal(true, IntGTE(NewInt(333), NewInt(333))) 53 suite.Equal(false, IntGTE(NewInt(111), NewInt(333))) 54 suite.Equal(true, IntLess(NewInt(111), NewInt(333))) 55 suite.Equal(false, IntLess(NewInt(444), NewInt(333))) 56 suite.Equal(NewInt(3), IntDiv(NewInt(333), NewInt(111))) 57 suite.Equal(NewInt(3), IntDiv(NewInt(333), NewInt(111))) 58 } 59 60 func (suite *IntTestSuite) TestIntDivFrac() { 61 suite.Panics(func() { IntDivFrac(NewInt(1000), 1, 0) }) 62 suite.Panics(func() { IntDivFrac(NewInt(1000), 0, 1) }) 63 suite.Panics(func() { IntDivFrac(NewInt(1000), 0, 0) }) 64 cases := []struct { 65 v Int 66 num int64 67 denum int64 68 expected Int 69 }{ 70 { 71 v: NewInt(80), 72 num: 8, 73 denum: 10, 74 expected: NewInt(100), 75 }, 76 { 77 v: NewInt(100), 78 num: 1, 79 denum: 3, 80 expected: NewInt(300), 81 }, 82 { 83 v: NewInt(77), 84 num: 11, 85 denum: 7, 86 expected: NewInt(49), 87 }, 88 } 89 90 for i, v := range cases { 91 suite.Equal(v.expected, IntDivFrac(v.v, v.num, v.denum), "case: %d", i) 92 } 93 } 94 95 func (suite *IntTestSuite) TestIntMulFrac() { 96 suite.Panics(func() { IntMulFrac(NewInt(1000), 1, 0) }) 97 cases := []struct { 98 v Int 99 num int64 100 denum int64 101 expected Int 102 }{ 103 { 104 v: NewInt(80), 105 num: 8, 106 denum: 10, 107 expected: NewInt(64), 108 }, 109 { 110 v: NewInt(100), 111 num: 1, 112 denum: 3, 113 expected: NewInt(33), 114 }, 115 { 116 v: NewInt(77), 117 num: 11, 118 denum: 7, 119 expected: NewInt(121), 120 }, 121 } 122 123 for i, v := range cases { 124 suite.Equal(v.expected, IntMulFrac(v.v, v.num, v.denum), "case: %d", i) 125 } 126 } 127 128 func TestIntTestSuite(t *testing.T) { 129 suite.Run(t, new(IntTestSuite)) 130 }