1
0
Fork 0
forked from lthn/blockchain

unit tests: added a test for print_money_brief

This commit is contained in:
sowle 2024-07-07 20:35:03 +02:00
parent e2998acc9d
commit cdb9dd2f1f
No known key found for this signature in database
GPG key ID: C07A24B2D89D49FC

View file

@ -308,3 +308,143 @@ TEST(decompose_amount_randomly, 1)
foo(1000000000000, 2, 3);
}
}
TEST(print_money_brief, 1)
{
// decimal point 12 (default)
ASSERT_EQ(print_money_brief( 0), "0.0");
ASSERT_EQ(print_money_brief( 1), "0.000000000001");
ASSERT_EQ(print_money_brief( 1000000000000), "1.0");
ASSERT_EQ(print_money_brief( 1900000000000), "1.9");
ASSERT_EQ(print_money_brief( 1000000100000), "1.0000001");
ASSERT_EQ(print_money_brief( 1000000000001), "1.000000000001");
ASSERT_EQ(print_money_brief( 9999999999999), "9.999999999999");
ASSERT_EQ(print_money_brief( 90009990009900), "90.0099900099");
ASSERT_EQ(print_money_brief(10109010000000000000), "10109010.0");
ASSERT_EQ(print_money_brief(10109010010000000000), "10109010.01");
ASSERT_EQ(print_money_brief(18446744073709551610), "18446744.07370955161");
ASSERT_EQ(print_money_brief(18446744073709551614), "18446744.073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615), "18446744.073709551615");
// decimal point 0
ASSERT_EQ(print_money_brief( 0, 0), "0");
ASSERT_EQ(print_money_brief( 1, 0), "1");
ASSERT_EQ(print_money_brief( 1000000000000, 0), "1000000000000");
ASSERT_EQ(print_money_brief( 1900000000000, 0), "1900000000000");
ASSERT_EQ(print_money_brief( 1000000100000, 0), "1000000100000");
ASSERT_EQ(print_money_brief( 1000000000001, 0), "1000000000001");
ASSERT_EQ(print_money_brief( 9999999999999, 0), "9999999999999");
ASSERT_EQ(print_money_brief( 90009990009900, 0), "90009990009900");
ASSERT_EQ(print_money_brief(10109010000000000000, 0), "10109010000000000000");
ASSERT_EQ(print_money_brief(10109010010000000000, 0), "10109010010000000000");
ASSERT_EQ(print_money_brief(18446744073709551610, 0), "18446744073709551610");
ASSERT_EQ(print_money_brief(18446744073709551614, 0), "18446744073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615, 0), "18446744073709551615");
// decimal point 1
ASSERT_EQ(print_money_brief( 0, 1), "0.0");
ASSERT_EQ(print_money_brief( 1, 1), "0.1");
ASSERT_EQ(print_money_brief( 1000000000000, 1), "100000000000.0");
ASSERT_EQ(print_money_brief( 1900000000000, 1), "190000000000.0");
ASSERT_EQ(print_money_brief( 1000000100000, 1), "100000010000.0");
ASSERT_EQ(print_money_brief( 1000000000001, 1), "100000000000.1");
ASSERT_EQ(print_money_brief( 9999999999999, 1), "999999999999.9");
ASSERT_EQ(print_money_brief( 90009990009900, 1), "9000999000990.0");
ASSERT_EQ(print_money_brief(10109010000000000000, 1), "1010901000000000000.0");
ASSERT_EQ(print_money_brief(10109010010000000000, 1), "1010901001000000000.0");
ASSERT_EQ(print_money_brief(18446744073709551610, 1), "1844674407370955161.0");
ASSERT_EQ(print_money_brief(18446744073709551614, 1), "1844674407370955161.4");
ASSERT_EQ(print_money_brief(18446744073709551615, 1), "1844674407370955161.5");
// decimal point 2
ASSERT_EQ(print_money_brief( 0, 2), "0.0");
ASSERT_EQ(print_money_brief( 1, 2), "0.01");
ASSERT_EQ(print_money_brief( 1000000000000, 2), "10000000000.0");
ASSERT_EQ(print_money_brief( 1900000000000, 2), "19000000000.0");
ASSERT_EQ(print_money_brief( 1000000100000, 2), "10000001000.0");
ASSERT_EQ(print_money_brief( 1000000000001, 2), "10000000000.01");
ASSERT_EQ(print_money_brief( 9999999999999, 2), "99999999999.99");
ASSERT_EQ(print_money_brief( 90009990009900, 2), "900099900099.0");
ASSERT_EQ(print_money_brief(10109010000000000000, 2), "101090100000000000.0");
ASSERT_EQ(print_money_brief(10109010010000000000, 2), "101090100100000000.0");
ASSERT_EQ(print_money_brief(18446744073709551610, 2), "184467440737095516.1");
ASSERT_EQ(print_money_brief(18446744073709551614, 2), "184467440737095516.14");
ASSERT_EQ(print_money_brief(18446744073709551615, 2), "184467440737095516.15");
// decimal point 3
ASSERT_EQ(print_money_brief( 0, 3), "0.0");
ASSERT_EQ(print_money_brief( 1, 3), "0.001");
ASSERT_EQ(print_money_brief( 1000000000000, 3), "1000000000.0");
ASSERT_EQ(print_money_brief( 1900000000000, 3), "1900000000.0");
ASSERT_EQ(print_money_brief( 1000000100000, 3), "1000000100.0");
ASSERT_EQ(print_money_brief( 1000000000001, 3), "1000000000.001");
ASSERT_EQ(print_money_brief( 9999999999999, 3), "9999999999.999");
ASSERT_EQ(print_money_brief( 90009990009900, 3), "90009990009.9");
ASSERT_EQ(print_money_brief(10109010000000000000, 3), "10109010000000000.0");
ASSERT_EQ(print_money_brief(10109010010000000000, 3), "10109010010000000.0");
ASSERT_EQ(print_money_brief(18446744073709551610, 3), "18446744073709551.61");
ASSERT_EQ(print_money_brief(18446744073709551614, 3), "18446744073709551.614");
ASSERT_EQ(print_money_brief(18446744073709551615, 3), "18446744073709551.615");
// decimal point 18
ASSERT_EQ(print_money_brief( 0, 18), "0.0");
ASSERT_EQ(print_money_brief( 1, 18), "0.000000000000000001");
ASSERT_EQ(print_money_brief( 1000000000000, 18), "0.000001");
ASSERT_EQ(print_money_brief( 1900000000000, 18), "0.0000019");
ASSERT_EQ(print_money_brief( 1000000100000, 18), "0.0000010000001");
ASSERT_EQ(print_money_brief( 1000000000001, 18), "0.000001000000000001");
ASSERT_EQ(print_money_brief( 9999999999999, 18), "0.000009999999999999");
ASSERT_EQ(print_money_brief( 90009990009900, 18), "0.0000900099900099");
ASSERT_EQ(print_money_brief(10109010000000000000, 18), "10.10901");
ASSERT_EQ(print_money_brief(10109010010000000000, 18), "10.10901001");
ASSERT_EQ(print_money_brief(18446744073709551610, 18), "18.44674407370955161");
ASSERT_EQ(print_money_brief(18446744073709551614, 18), "18.446744073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615, 18), "18.446744073709551615");
// decimal point 19
ASSERT_EQ(print_money_brief( 0, 19), "0.0");
ASSERT_EQ(print_money_brief( 1, 19), "0.0000000000000000001");
ASSERT_EQ(print_money_brief( 1000000000000, 19), "0.0000001");
ASSERT_EQ(print_money_brief( 1900000000000, 19), "0.00000019");
ASSERT_EQ(print_money_brief( 1000000100000, 19), "0.00000010000001");
ASSERT_EQ(print_money_brief( 1000000000001, 19), "0.0000001000000000001");
ASSERT_EQ(print_money_brief( 9999999999999, 19), "0.0000009999999999999");
ASSERT_EQ(print_money_brief( 90009990009900, 19), "0.00000900099900099");
ASSERT_EQ(print_money_brief(10109010000000000000, 19), "1.010901");
ASSERT_EQ(print_money_brief(10109010010000000000, 19), "1.010901001");
ASSERT_EQ(print_money_brief(18446744073709551610, 19), "1.844674407370955161");
ASSERT_EQ(print_money_brief(18446744073709551614, 19), "1.8446744073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615, 19), "1.8446744073709551615");
// TODO: remove it after setting reasonable limit of 18
// decimal point 20
ASSERT_EQ(print_money_brief( 0, 20), "0.0");
ASSERT_EQ(print_money_brief( 1, 20), "0.00000000000000000001");
ASSERT_EQ(print_money_brief( 1000000000000, 20), "0.00000001");
ASSERT_EQ(print_money_brief( 1900000000000, 20), "0.000000019");
ASSERT_EQ(print_money_brief( 1000000100000, 20), "0.000000010000001");
ASSERT_EQ(print_money_brief( 1000000000001, 20), "0.00000001000000000001");
ASSERT_EQ(print_money_brief( 9999999999999, 20), "0.00000009999999999999");
ASSERT_EQ(print_money_brief( 90009990009900, 20), "0.000000900099900099");
ASSERT_EQ(print_money_brief(10109010000000000000, 20), "0.1010901");
ASSERT_EQ(print_money_brief(10109010010000000000, 20), "0.1010901001");
ASSERT_EQ(print_money_brief(18446744073709551610, 20), "0.1844674407370955161");
ASSERT_EQ(print_money_brief(18446744073709551614, 20), "0.18446744073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615, 20), "0.18446744073709551615");
// TODO: remove it after setting reasonable limit of 18
// decimal point 21
ASSERT_EQ(print_money_brief( 0, 21), "0.0");
ASSERT_EQ(print_money_brief( 1, 21), "0.000000000000000000001");
ASSERT_EQ(print_money_brief( 1000000000000, 21), "0.000000001");
ASSERT_EQ(print_money_brief( 1900000000000, 21), "0.0000000019");
ASSERT_EQ(print_money_brief( 1000000100000, 21), "0.0000000010000001");
ASSERT_EQ(print_money_brief( 1000000000001, 21), "0.000000001000000000001");
ASSERT_EQ(print_money_brief( 9999999999999, 21), "0.000000009999999999999");
ASSERT_EQ(print_money_brief( 90009990009900, 21), "0.0000000900099900099");
ASSERT_EQ(print_money_brief(10109010000000000000, 21), "0.01010901");
ASSERT_EQ(print_money_brief(10109010010000000000, 21), "0.01010901001");
ASSERT_EQ(print_money_brief(18446744073709551610, 21), "0.01844674407370955161");
ASSERT_EQ(print_money_brief(18446744073709551614, 21), "0.018446744073709551614");
ASSERT_EQ(print_money_brief(18446744073709551615, 21), "0.018446744073709551615");
}