From: Christian Herdtweck Date: Wed, 1 Jun 2016 08:00:42 +0000 (+0200) Subject: extended unittest to double-version of nice_unit_format X-Git-Tag: v2.9~22 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=d435d6003c0fa74781ce90528f371ec95498a236;p=libi2ncommon extended unittest to double-version of nice_unit_format --- diff --git a/test/stringfunc.cpp b/test/stringfunc.cpp index 62c9eb3..8ced76b 100644 --- a/test/stringfunc.cpp +++ b/test/stringfunc.cpp @@ -24,11 +24,13 @@ on this file might be covered by the GNU General Public License. // #include #include +#include // #include // #include #define BOOST_TEST_DYN_LINK #include +#include #include #include @@ -146,6 +148,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format2) output = nice_unit_format(two_kilobytes); BOOST_CHECK_EQUAL(string("2.0 KB"), output); + output = nice_unit_format(boost::numeric_cast(two_kilobytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.00 KBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_kilobytes)); + BOOST_CHECK_EQUAL(string("2.0 KB"), output); + const int64_t two_and_half_kilobytes = 2500; output = nice_unit_format(two_and_half_kilobytes, LongUnitFormat, UnitBase1000); @@ -153,6 +161,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format2) output = nice_unit_format(two_and_half_kilobytes); BOOST_CHECK_EQUAL(string("2.4 KB"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_kilobytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.50 KBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_kilobytes)); + BOOST_CHECK_EQUAL(string("2.4 KB"), output); } BOOST_AUTO_TEST_CASE(nice_unit_format3) @@ -165,6 +179,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format3) output = nice_unit_format(two_megabytes); BOOST_CHECK_EQUAL(string("1.9 MB"), output); + output = nice_unit_format(boost::numeric_cast(two_megabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.00 MBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_megabytes)); + BOOST_CHECK_EQUAL(string("1.9 MB"), output); + const int64_t two_and_half_megabytes = 2500000; output = nice_unit_format(two_and_half_megabytes, LongUnitFormat, UnitBase1000); @@ -173,6 +193,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format3) output = nice_unit_format(two_and_half_megabytes); BOOST_CHECK_EQUAL(string("2.4 MB"), output); + output = nice_unit_format(boost::numeric_cast(two_and_half_megabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.50 MBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_megabytes)); + BOOST_CHECK_EQUAL(string("2.4 MB"), output); + } BOOST_AUTO_TEST_CASE(nice_unit_format4) @@ -185,6 +211,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format4) output = nice_unit_format(two_gigabytes); BOOST_CHECK_EQUAL(string("1.9 GB"), output); + output = nice_unit_format(boost::numeric_cast(two_gigabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.00 GBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_gigabytes)); + BOOST_CHECK_EQUAL(string("1.9 GB"), output); + const int64_t two_and_half_gigabytes = 2500000000LL; output = nice_unit_format(two_and_half_gigabytes, LongUnitFormat, UnitBase1000); @@ -192,6 +224,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format4) output = nice_unit_format(two_and_half_gigabytes); BOOST_CHECK_EQUAL(string("2.3 GB"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_gigabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.50 GBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_gigabytes)); + BOOST_CHECK_EQUAL(string("2.3 GB"), output); } BOOST_AUTO_TEST_CASE(nice_unit_format5) @@ -204,6 +242,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format5) output = nice_unit_format(two_terabytes); BOOST_CHECK_EQUAL(string("1.8 TB"), output); + output = nice_unit_format(boost::numeric_cast(two_terabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.00 TBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_terabytes)); + BOOST_CHECK_EQUAL(string("1.8 TB"), output); + const int64_t two_and_half_terabytes = 2500000000000LL; output = nice_unit_format(two_and_half_terabytes, LongUnitFormat, UnitBase1000); @@ -211,6 +255,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format5) output = nice_unit_format(two_and_half_terabytes); BOOST_CHECK_EQUAL(string("2.3 TB"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_terabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.50 TBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_terabytes)); + BOOST_CHECK_EQUAL(string("2.3 TB"), output); } BOOST_AUTO_TEST_CASE(nice_unit_format6) @@ -223,6 +273,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format6) output = nice_unit_format(two_petabytes); BOOST_CHECK_EQUAL(string("1.8 PB"), output); + output = nice_unit_format(boost::numeric_cast(two_petabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.00 PBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_petabytes)); + BOOST_CHECK_EQUAL(string("1.8 PB"), output); + const int64_t two_and_half_petabytes = 2500000000000000LL; output = nice_unit_format(two_and_half_petabytes, LongUnitFormat, UnitBase1000); @@ -230,6 +286,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format6) output = nice_unit_format(two_and_half_petabytes); BOOST_CHECK_EQUAL(string("2.2 PB"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_petabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2.50 PBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_petabytes)); + BOOST_CHECK_EQUAL(string("2.2 PB"), output); } BOOST_AUTO_TEST_CASE(nice_unit_format7) @@ -242,6 +304,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format7) output = nice_unit_format(two_exabytes); BOOST_CHECK_EQUAL(string("1776.4 PB"), output); + output = nice_unit_format(boost::numeric_cast(two_exabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2000.00 PBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_exabytes)); + BOOST_CHECK_EQUAL(string("1776.4 PB"), output); + const int64_t two_and_half_exabytes = 2500000000000000000LL; output = nice_unit_format(two_and_half_exabytes, LongUnitFormat, UnitBase1000); @@ -249,6 +317,12 @@ BOOST_AUTO_TEST_CASE(nice_unit_format7) output = nice_unit_format(two_and_half_exabytes); BOOST_CHECK_EQUAL(string("2220.4 PB"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_exabytes), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("2500.00 PBytes"), output); + + output = nice_unit_format(boost::numeric_cast(two_and_half_exabytes)); + BOOST_CHECK_EQUAL(string("2220.4 PB"), output); } BOOST_AUTO_TEST_CASE(nice_unit_format8) @@ -260,6 +334,20 @@ BOOST_AUTO_TEST_CASE(nice_unit_format8) output = nice_unit_format(max_representable_64bits_number); BOOST_CHECK_EQUAL(string("8192.0 PB"), output); + + /* + double val = boost::numeric_cast(max_representable_64bits_number); + BOOST_MESSAGE("val as int64 is " << max_representable_64bits_number << " and as double is " << val); + BOOST_MESSAGE("val rounded is " << round(val)); + BOOST_CHECK_EQUAL(val, round(val)); + BOOST_MESSAGE("half as int64 is " << boost::numeric_cast(round(val/2))); // ok + BOOST_MESSAGE("cast back is " << boost::numeric_cast(round(val))); // throws a positive overflow + output = nice_unit_format(boost::numeric_cast(max_representable_64bits_number), LongUnitFormat, UnitBase1000); + BOOST_CHECK_EQUAL(string("9223.40 PBytes"), output); + + output = nice_unit_format(boost::numeric_cast(max_representable_64bits_number)); + BOOST_CHECK_EQUAL(string("8192.0 PB"), output); + */ } BOOST_AUTO_TEST_CASE(TestTrim)