@@ -17,6 +17,27 @@ BOOST_AUTO_TEST_CASE(feefrac_operators)
1717 FeeFrac empty{0 , 0 };
1818 FeeFrac zero_fee{0 , 1 }; // zero-fee allowed
1919
20+ BOOST_CHECK_EQUAL (zero_fee.Evaluate (0 ), 0 );
21+ BOOST_CHECK_EQUAL (zero_fee.Evaluate (1 ), 0 );
22+ BOOST_CHECK_EQUAL (zero_fee.Evaluate (1000000 ), 0 );
23+ BOOST_CHECK_EQUAL (zero_fee.Evaluate (0x7fffffff ), 0 );
24+
25+ BOOST_CHECK_EQUAL (p1.Evaluate (0 ), 0 );
26+ BOOST_CHECK_EQUAL (p1.Evaluate (1 ), 10 );
27+ BOOST_CHECK_EQUAL (p1.Evaluate (100000000 ), 1000000000 );
28+ BOOST_CHECK_EQUAL (p1.Evaluate (0x7fffffff ), int64_t (0x7fffffff ) * 10 );
29+
30+ FeeFrac neg{-1001 , 100 };
31+ BOOST_CHECK_EQUAL (neg.Evaluate (0 ), 0 );
32+ BOOST_CHECK_EQUAL (neg.Evaluate (1 ), -11 );
33+ BOOST_CHECK_EQUAL (neg.Evaluate (2 ), -21 );
34+ BOOST_CHECK_EQUAL (neg.Evaluate (3 ), -31 );
35+ BOOST_CHECK_EQUAL (neg.Evaluate (100 ), -1001 );
36+ BOOST_CHECK_EQUAL (neg.Evaluate (101 ), -1012 );
37+ BOOST_CHECK_EQUAL (neg.Evaluate (100000000 ), -1001000000 );
38+ BOOST_CHECK_EQUAL (neg.Evaluate (100000001 ), -1001000011 );
39+ BOOST_CHECK_EQUAL (neg.Evaluate (0x7fffffff ), -21496311307 );
40+
2041 BOOST_CHECK (empty == FeeFrac{}); // same as no-args
2142
2243 BOOST_CHECK (p1 == p1);
@@ -67,6 +88,11 @@ BOOST_AUTO_TEST_CASE(feefrac_operators)
6788 BOOST_CHECK (oversized_1 << oversized_2);
6889 BOOST_CHECK (oversized_1 != oversized_2);
6990
91+ BOOST_CHECK_EQUAL (oversized_1.Evaluate (0 ), 0 );
92+ BOOST_CHECK_EQUAL (oversized_1.Evaluate (1 ), 1152921 );
93+ BOOST_CHECK_EQUAL (oversized_1.Evaluate (2 ), 2305843 );
94+ BOOST_CHECK_EQUAL (oversized_1.Evaluate (1548031267 ), 1784758530396540 );
95+
7096 // Tests paths that use double arithmetic
7197 FeeFrac busted{(static_cast <int64_t >(INT32_MAX)) + 1 , INT32_MAX};
7298 BOOST_CHECK (!(busted < busted));
@@ -77,6 +103,13 @@ BOOST_AUTO_TEST_CASE(feefrac_operators)
77103 BOOST_CHECK (max_fee <= max_fee);
78104 BOOST_CHECK (max_fee >= max_fee);
79105
106+ BOOST_CHECK_EQUAL (max_fee.Evaluate (0 ), 0 );
107+ BOOST_CHECK_EQUAL (max_fee.Evaluate (1 ), 977888 );
108+ BOOST_CHECK_EQUAL (max_fee.Evaluate (2 ), 1955777 );
109+ BOOST_CHECK_EQUAL (max_fee.Evaluate (3 ), 2933666 );
110+ BOOST_CHECK_EQUAL (max_fee.Evaluate (1256796054 ), 1229006664189047 );
111+ BOOST_CHECK_EQUAL (max_fee.Evaluate (INT32_MAX), 2100000000000000 );
112+
80113 FeeFrac max_fee2{1 , 1 };
81114 BOOST_CHECK (max_fee >= max_fee2);
82115
0 commit comments