[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] odd/width-of-inf df8f6b0 3/6: Augment unit tests
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] odd/width-of-inf df8f6b0 3/6: Augment unit tests |
Date: |
Wed, 21 Mar 2018 19:20:23 -0400 (EDT) |
branch: odd/width-of-inf
commit df8f6b0091dd1b6439e5eedd934c85cc566038ac
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Augment unit tests
---
miscellany_test.cpp | 47 +++++++++++++++++++++++++++++++++++++++++------
1 file changed, 41 insertions(+), 6 deletions(-)
diff --git a/miscellany_test.cpp b/miscellany_test.cpp
index 1e4686a..0180e25 100644
--- a/miscellany_test.cpp
+++ b/miscellany_test.cpp
@@ -312,9 +312,11 @@ void test_scale_power()
BOOST_TEST_EQUAL( 0, scale_power( 9, -99'999'999.0,
0.0));
BOOST_TEST_EQUAL( 0, scale_power( 9, 999'999'999.0,
999'999'999.0));
+ // Test values for which rounding toward infinity crosses a threshold.
+
// 999,999,999.0 rounds to 999,999,999
BOOST_TEST_EQUAL( 0, scale_power( 9, -99'999'999.0,
999'999'999.0));
-
+ // However:
// 999,999.999.9 may round to 1,000,000,000; and
// -99,999,999.9 may round to -100,000,000
// which is equally wide if widths are reckoned as [,]:0 and [-0-9]:1
@@ -324,10 +326,32 @@ void test_scale_power()
BOOST_TEST_EQUAL( 3, scale_power( 9, -999'999.9,
999'999'999.9));
BOOST_TEST_EQUAL( 3, scale_power( 9, -99'999'999.9,
999'999'999.9));
- BOOST_TEST_EQUAL( 3, scale_power( 9, -999'999'999.0,
1'999'999'999.0));
+ // Test values of like sign in threshold neighborhood.
+
+ // both positive, below threshold
+ BOOST_TEST_EQUAL( 6, scale_power( 6, 0.1,
999'999'999'999.0));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, 123'456'789.0,
999'999'999'999.0));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, 999'999'999'999.0,
999'999'999'999.0));
+
+ // both positive, threshold
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 0.1,
999'999'999'999.1));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 123'456'789.0,
999'999'999'999.1));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 999'999'999'999.0,
999'999'999'999.1));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 999'999'999'999.1,
999'999'999'999.1));
- // Test threshold values for the scale_power=9 setting that is
- // still hardcoded in lmi as this is written in 2018-03.
+ // both negative, below threshold
+ BOOST_TEST_EQUAL( 6, scale_power( 6, -99'999'999'999.0,
-0.1));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, -99'999'999'999.0,
-123'456'789.0));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, -99'999'999'999.0,
-99'999'999'999.0));
+
+ // both negative, threshold
+ BOOST_TEST_EQUAL( 9, scale_power( 6, -99'999'999'999.1,
-0.1));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, -99'999'999'999.1,
-123'456'789.0));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, -99'999'999'999.1,
-99'999'999'999.0));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, -99'999'999'999.1,
-99'999'999'999.1));
+
+ // Test threshold neighborhood for the scale_power=9 setting that
+ // is still hardcoded in lmi as this is written in 2018-03.
BOOST_TEST_EQUAL( 0, scale_power( 9, 0.0,
999'999'999.0));
BOOST_TEST_EQUAL( 3, scale_power( 9, 0.0,
999'999'999.1));
@@ -375,7 +399,7 @@ void test_scale_power()
// BOOST_TEST_EQUAL( 9, scale_power( 9, 0.0,
999'999'999'999'999.1));
// but wouldn't have "worked" with the value 999'999'999'999'999.01
- // Test threshold values for scale_power=8.
+ // Test threshold neighborhood for scale_power=8.
BOOST_TEST_EQUAL( 0, scale_power( 8, 0.0,
99'999'999.0));
BOOST_TEST_EQUAL( 3, scale_power( 8, 0.0,
99'999'999.1));
@@ -384,7 +408,7 @@ void test_scale_power()
BOOST_TEST_EQUAL( 6, scale_power( 8, 0.0,
99'999'999'999'999.0));
BOOST_TEST_EQUAL( 9, scale_power( 8, 0.0,
99'999'999'999'999.1));
- // Test threshold values for scale_power=7.
+ // Test threshold neighborhood for scale_power=7.
BOOST_TEST_EQUAL( 0, scale_power( 7, 0.0,
9'999'999.0));
BOOST_TEST_EQUAL( 3, scale_power( 7, 0.0,
9'999'999.1));
@@ -392,6 +416,17 @@ void test_scale_power()
BOOST_TEST_EQUAL( 6, scale_power( 7, 0.0,
9'999'999'999.1));
BOOST_TEST_EQUAL( 6, scale_power( 7, 0.0,
9'999'999'999'999.0));
BOOST_TEST_EQUAL( 9, scale_power( 7, 0.0,
9'999'999'999'999.1));
+
+ // Test threshold neighborhood for scale_power=6.
+
+ BOOST_TEST_EQUAL( 0, scale_power( 6, 0.0,
999'999.0));
+ BOOST_TEST_EQUAL( 3, scale_power( 6, 0.0,
999'999.1));
+ BOOST_TEST_EQUAL( 3, scale_power( 6, 0.0,
999'999'999.0));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, 0.0,
999'999'999.1));
+ BOOST_TEST_EQUAL( 6, scale_power( 6, 0.0,
999'999'999'999.0));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 0.0,
999'999'999'999.1));
+ BOOST_TEST_EQUAL( 9, scale_power( 6, 0.0,
999'999'999'999'999.0));
+ BOOST_TEST_EQUAL(12, scale_power( 6, 0.0,
999'999'999'999'999.1));
}
void test_trimming()
- [lmi-commits] [lmi] branch odd/width-of-inf created (now b7b4812), Greg Chicares, 2018/03/21
- [lmi-commits] [lmi] odd/width-of-inf b7b4812 6/6: Sketch and compare a different algorithm, Greg Chicares, 2018/03/21
- [lmi-commits] [lmi] odd/width-of-inf df8f6b0 3/6: Augment unit tests,
Greg Chicares <=
- [lmi-commits] [lmi] odd/width-of-inf d3cb41e 2/6: Explicitly qualify std::strtof(), Greg Chicares, 2018/03/21
- [lmi-commits] [lmi] odd/width-of-inf 3eff232 5/6: Add failing test: scale by 10^2147483640 to print "inf", Greg Chicares, 2018/03/21
- [lmi-commits] [lmi] odd/width-of-inf b487178 4/6: Augment unit tests, Greg Chicares, 2018/03/21
- [lmi-commits] [lmi] odd/width-of-inf 2589cea 1/6: Add digressionary-branch spells to the grimoire, Greg Chicares, 2018/03/21