| 10 | BOOST_AUTO_TEST_SUITE(feefrac_tests) |
| 11 | |
| 12 | BOOST_AUTO_TEST_CASE(feefrac_operators) |
| 13 | { |
| 14 | FeeFrac p1{1000, 100}, p2{500, 300}; |
| 15 | FeeFrac sum{1500, 400}; |
| 16 | FeeFrac diff{500, -200}; |
| 17 | FeeFrac empty{0, 0}; |
| 18 | FeeFrac zero_fee{0, 1}; // zero-fee allowed |
| 19 | |
| 20 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeDown(0), 0); |
| 21 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeDown(1), 0); |
| 22 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeDown(1000000), 0); |
| 23 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeDown(0x7fffffff), 0); |
| 24 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeUp(0), 0); |
| 25 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeUp(1), 0); |
| 26 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeUp(1000000), 0); |
| 27 | BOOST_CHECK_EQUAL(zero_fee.EvaluateFeeUp(0x7fffffff), 0); |
| 28 | |
| 29 | BOOST_CHECK_EQUAL(p1.EvaluateFeeDown(0), 0); |
| 30 | BOOST_CHECK_EQUAL(p1.EvaluateFeeDown(1), 10); |
| 31 | BOOST_CHECK_EQUAL(p1.EvaluateFeeDown(100000000), 1000000000); |
| 32 | BOOST_CHECK_EQUAL(p1.EvaluateFeeDown(0x7fffffff), int64_t(0x7fffffff) * 10); |
| 33 | BOOST_CHECK_EQUAL(p1.EvaluateFeeUp(0), 0); |
| 34 | BOOST_CHECK_EQUAL(p1.EvaluateFeeUp(1), 10); |
| 35 | BOOST_CHECK_EQUAL(p1.EvaluateFeeUp(100000000), 1000000000); |
| 36 | BOOST_CHECK_EQUAL(p1.EvaluateFeeUp(0x7fffffff), int64_t(0x7fffffff) * 10); |
| 37 | |
| 38 | FeeFrac neg{-1001, 100}; |
| 39 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(0), 0); |
| 40 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(1), -11); |
| 41 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(2), -21); |
| 42 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(3), -31); |
| 43 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(100), -1001); |
| 44 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(101), -1012); |
| 45 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(100000000), -1001000000); |
| 46 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(100000001), -1001000011); |
| 47 | BOOST_CHECK_EQUAL(neg.EvaluateFeeDown(0x7fffffff), -21496311307); |
| 48 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(0), 0); |
| 49 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(1), -10); |
| 50 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(2), -20); |
| 51 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(3), -30); |
| 52 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(100), -1001); |
| 53 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(101), -1011); |
| 54 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(100000000), -1001000000); |
| 55 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(100000001), -1001000010); |
| 56 | BOOST_CHECK_EQUAL(neg.EvaluateFeeUp(0x7fffffff), -21496311306); |
| 57 | |
| 58 | BOOST_CHECK(empty == FeeFrac{}); // same as no-args |
| 59 | |
| 60 | BOOST_CHECK(p1 == p1); |
| 61 | BOOST_CHECK(p1 + p2 == sum); |
| 62 | BOOST_CHECK(p1 - p2 == diff); |
| 63 | |
| 64 | FeeFrac p3{2000, 200}; |
| 65 | BOOST_CHECK(p1 != p3); // feefracs only equal if both fee and size are same |
| 66 | BOOST_CHECK(p2 != p3); |
| 67 | |
| 68 | FeeFrac p4{3000, 300}; |
| 69 | BOOST_CHECK(p1 == p4-p3); |
nothing calls this directly
no test coverage detected