fix unit-tests
This commit is contained in:
@@ -55,49 +55,49 @@ namespace
|
||||
|
||||
// try with blocks ~ 1GB. Passing 2 GB will break on 32 bit systems
|
||||
|
||||
TEST_F(fee, 10xmr)
|
||||
TEST_F(fee, 10SAL)
|
||||
{
|
||||
// CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 and lower are clamped
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), clamp_fee(2000000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), clamp_fee(2000000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), clamp_fee(2000000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, 1, 3), 2000000000);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), clamp_fee(32));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), clamp_fee(32));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), clamp_fee(32));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, 1, 3), 32);
|
||||
|
||||
// higher is inverse proportional
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), clamp_fee(2000000000 / 2));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), clamp_fee(2000000000 / 10));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), clamp_fee(2000000000 / 1000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(10000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), clamp_fee(2000000000 / 20000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), 32);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), 8);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), 0);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), 0);
|
||||
}
|
||||
|
||||
TEST_F(fee, 1xmr)
|
||||
TEST_F(fee, 1SAL)
|
||||
{
|
||||
// CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 and lower are clamped
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), clamp_fee(200000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), clamp_fee(200000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), clamp_fee(200000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, 1, 3), 200000000);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), 3);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), 3);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), 3);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, 1, 3), 3);
|
||||
|
||||
// higher is inverse proportional
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), clamp_fee(200000000 / 2));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), clamp_fee(200000000 / 10));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), clamp_fee(200000000 / 1000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(1000000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), clamp_fee(200000000 / 20000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), 3);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), 0);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), 0);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(100000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), 0);
|
||||
}
|
||||
|
||||
TEST_F(fee, dot3xmr)
|
||||
TEST_F(fee, dot3SAL)
|
||||
{
|
||||
// CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 and lower are clamped
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), clamp_fee(60000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), clamp_fee(60000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), clamp_fee(60000000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, 1, 3), 60000000);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2, 3), 1);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 2, 3), 1);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 / 100, 3), 1);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, 1, 3), 1);
|
||||
|
||||
// higher is inverse proportional
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), clamp_fee(60000000 / 2));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), clamp_fee(60000000 / 10));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), clamp_fee(60000000 / 1000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(300000000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), clamp_fee(60000000 / 20000));
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 2, 3), 1);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 10, 3), 0);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 1000, 3), 0);
|
||||
ASSERT_EQ(Blockchain::get_dynamic_base_fee(30000000, CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2 * 20000ull, 3), 0);
|
||||
}
|
||||
|
||||
static bool is_more_or_less(double x, double y)
|
||||
@@ -110,11 +110,11 @@ namespace
|
||||
TEST_F(fee, double_at_full)
|
||||
{
|
||||
static const uint64_t block_rewards[] = {
|
||||
20000000000000ull, // 20 monero
|
||||
13000000000000ull,
|
||||
1000000000000ull,
|
||||
600000000000ull, // .6 monero, minimum reward per block at 2min
|
||||
300000000000ull, // .3 monero, minimum reward per block at 1min
|
||||
2000000000ull, // 20 SAL
|
||||
1300000000ull,
|
||||
100000000ull,
|
||||
60000000ull, // .6 SAL, minimum reward per block at 2min
|
||||
30000000ull, // .3 SAL, minimum reward per block at 1min
|
||||
};
|
||||
static const uint64_t median_block_weights[] = {
|
||||
CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V2,
|
||||
@@ -129,7 +129,9 @@ namespace
|
||||
{
|
||||
for (uint64_t median_block_weight: median_block_weights)
|
||||
{
|
||||
ASSERT_TRUE(is_more_or_less(Blockchain::get_dynamic_base_fee(block_reward, median_block_weight, 3) * (median_block_weight / 1024.) * MAX_MULTIPLIER / (double)block_reward, 1.992 * 1000 / 1024));
|
||||
const auto first_param = Blockchain::get_dynamic_base_fee(block_reward, median_block_weight, 3) * (median_block_weight / 1024.) * MAX_MULTIPLIER / (double)block_reward;
|
||||
const auto second_param = (0.00031374028 * 1000) / 1024;
|
||||
ASSERT_TRUE(is_more_or_less(first_param, second_param));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user