lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master d838ad1f 06/11: Make number of decimals a duf


From: Greg Chicares
Subject: [lmi-commits] [lmi] master d838ad1f 06/11: Make number of decimals a duff_fmt() argument
Date: Fri, 29 Apr 2022 11:59:33 -0400 (EDT)

branch: master
commit d838ad1fe4ca3e9a976aa166fa4aff86875cc80f
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Make number of decimals a duff_fmt() argument
---
 duff_fmt.hpp      |  28 +++++--
 duff_fmt_test.cpp | 246 ++++++++++++++++++++++++++++++++++++------------------
 2 files changed, 183 insertions(+), 91 deletions(-)

diff --git a/duff_fmt.hpp b/duff_fmt.hpp
index 4e9c04b1..3606a9ee 100644
--- a/duff_fmt.hpp
+++ b/duff_fmt.hpp
@@ -38,13 +38,11 @@
 /// Format a double using thousands separators. Reference:
 ///   https://groups.google.com/groups?selm=38C9B681.B8A036DF%40flash.net
 
-inline std::string duff_fmt(double value)
+inline std::string duff_fmt(double value, int decimals)
 {
-    constexpr int decimals {2}; // This will become an argument.
-
     if(value < 0.0)
         {
-        return '-' + duff_fmt(-value);
+        return '-' + duff_fmt(-value, decimals);
         }
 
     constexpr int buffer_size {1000};
@@ -79,11 +77,23 @@ inline std::string duff_fmt(double value)
                 while(*p);
         }
 
-// Obviously this won't do for 2 <> decimals:
-LMI_ASSERT('.' == *p);
-    *q++ = *p++; // decimal point
-    *q++ = *p++; // tenths
-    *q++ = *p++; // hundredths
+    // The next character must be the decimal point.
+    LMI_ASSERT('.' == *p);
+    // If the next character after the decimal point is the
+    // terminating null, then zero decimals must be wanted,
+    // and the decimal point should be suppressed.
+    if('\0' == *(1 + p))
+        {
+        LMI_ASSERT(0 == decimals);
+        }
+    else
+        {
+                do
+                    {
+                    *q++ = *p++;
+                    }
+                while(*p);
+        }
 
     *q = '\0';
     return out_buf;
diff --git a/duff_fmt_test.cpp b/duff_fmt_test.cpp
index b5dbcb31..07fe737b 100644
--- a/duff_fmt_test.cpp
+++ b/duff_fmt_test.cpp
@@ -33,90 +33,172 @@
 
 int test_main(int, char*[])
 {
-    LMI_TEST_EQUAL( "1,234,567,890.14", duff_fmt( 1234567890.14159));
-    LMI_TEST_EQUAL(   "234,567,890.14", duff_fmt(  234567890.14159));
-    LMI_TEST_EQUAL(    "34,567,890.14", duff_fmt(   34567890.14159));
-    LMI_TEST_EQUAL(     "4,567,890.14", duff_fmt(    4567890.14159));
-    LMI_TEST_EQUAL(       "567,890.14", duff_fmt(     567890.14159));
-    LMI_TEST_EQUAL(        "67,890.14", duff_fmt(      67890.14159));
-    LMI_TEST_EQUAL(         "7,890.14", duff_fmt(       7890.14159));
-    LMI_TEST_EQUAL(           "890.14", duff_fmt(        890.14159));
-    LMI_TEST_EQUAL(            "90.14", duff_fmt(         90.14159));
-    LMI_TEST_EQUAL(             "0.14", duff_fmt(          0.14159));
-    LMI_TEST_EQUAL( "1,234,567,890.00", duff_fmt( 1234567890.0    ));
-    LMI_TEST_EQUAL(   "234,567,890.00", duff_fmt(  234567890.0    ));
-    LMI_TEST_EQUAL(    "34,567,890.00", duff_fmt(   34567890.0    ));
-    LMI_TEST_EQUAL(     "4,567,890.00", duff_fmt(    4567890.0    ));
-    LMI_TEST_EQUAL(       "567,890.00", duff_fmt(     567890.0    ));
-    LMI_TEST_EQUAL(        "67,890.00", duff_fmt(      67890.0    ));
-    LMI_TEST_EQUAL(         "7,890.00", duff_fmt(       7890.0    ));
-    LMI_TEST_EQUAL(           "890.00", duff_fmt(        890.0    ));
-    LMI_TEST_EQUAL(            "90.00", duff_fmt(         90.0    ));
-    LMI_TEST_EQUAL(             "1.00", duff_fmt(          1.0    ));
-    LMI_TEST_EQUAL( "1,000,000,000.00", duff_fmt( 1000000000.0    ));
-    LMI_TEST_EQUAL(   "100,000,000.00", duff_fmt(  100000000.0    ));
-    LMI_TEST_EQUAL(    "10,000,000.00", duff_fmt(   10000000.0    ));
-    LMI_TEST_EQUAL(     "1,000,000.00", duff_fmt(    1000000.0    ));
-    LMI_TEST_EQUAL(       "100,000.00", duff_fmt(     100000.0    ));
-    LMI_TEST_EQUAL(        "10,000.00", duff_fmt(      10000.0    ));
-    LMI_TEST_EQUAL(         "1,000.00", duff_fmt(       1000.0    ));
-    LMI_TEST_EQUAL(           "100.00", duff_fmt(        100.0    ));
-    LMI_TEST_EQUAL(            "10.00", duff_fmt(         10.0    ));
-    LMI_TEST_EQUAL(             "1.00", duff_fmt(          1.0    ));
-    LMI_TEST_EQUAL(             "0.10", duff_fmt(          0.1    ));
-    LMI_TEST_EQUAL(             "0.01", duff_fmt(          0.01   ));
-    LMI_TEST_EQUAL( "2,147,483,647.00", duff_fmt( 2147483647.0    ));
-    LMI_TEST_EQUAL(         "2,000.00", duff_fmt(       1999.999  ));
-    LMI_TEST_EQUAL(         "2,000.00", duff_fmt(       1999.99501));
-    LMI_TEST_EQUAL(         "1,999.99", duff_fmt(       1999.99499));
-    LMI_TEST_EQUAL(         "1,900.00", duff_fmt(       1899.999  ));
-    LMI_TEST_EQUAL(    "10,000,000.00", duff_fmt(    9999999.999  ));
+    // Format positive numbers, with two decimals.
+    LMI_TEST_EQUAL( "1,234,567,890.14", duff_fmt( 1234567890.14159, 2));
+    LMI_TEST_EQUAL(   "234,567,890.14", duff_fmt(  234567890.14159, 2));
+    LMI_TEST_EQUAL(    "34,567,890.14", duff_fmt(   34567890.14159, 2));
+    LMI_TEST_EQUAL(     "4,567,890.14", duff_fmt(    4567890.14159, 2));
+    LMI_TEST_EQUAL(       "567,890.14", duff_fmt(     567890.14159, 2));
+    LMI_TEST_EQUAL(        "67,890.14", duff_fmt(      67890.14159, 2));
+    LMI_TEST_EQUAL(         "7,890.14", duff_fmt(       7890.14159, 2));
+    LMI_TEST_EQUAL(           "890.14", duff_fmt(        890.14159, 2));
+    LMI_TEST_EQUAL(            "90.14", duff_fmt(         90.14159, 2));
+    LMI_TEST_EQUAL(             "0.14", duff_fmt(          0.14159, 2));
+    LMI_TEST_EQUAL( "1,234,567,890.00", duff_fmt( 1234567890.0    , 2));
+    LMI_TEST_EQUAL(   "234,567,890.00", duff_fmt(  234567890.0    , 2));
+    LMI_TEST_EQUAL(    "34,567,890.00", duff_fmt(   34567890.0    , 2));
+    LMI_TEST_EQUAL(     "4,567,890.00", duff_fmt(    4567890.0    , 2));
+    LMI_TEST_EQUAL(       "567,890.00", duff_fmt(     567890.0    , 2));
+    LMI_TEST_EQUAL(        "67,890.00", duff_fmt(      67890.0    , 2));
+    LMI_TEST_EQUAL(         "7,890.00", duff_fmt(       7890.0    , 2));
+    LMI_TEST_EQUAL(           "890.00", duff_fmt(        890.0    , 2));
+    LMI_TEST_EQUAL(            "90.00", duff_fmt(         90.0    , 2));
+    LMI_TEST_EQUAL(             "1.00", duff_fmt(          1.0    , 2));
+    LMI_TEST_EQUAL( "1,000,000,000.00", duff_fmt( 1000000000.0    , 2));
+    LMI_TEST_EQUAL(   "100,000,000.00", duff_fmt(  100000000.0    , 2));
+    LMI_TEST_EQUAL(    "10,000,000.00", duff_fmt(   10000000.0    , 2));
+    LMI_TEST_EQUAL(     "1,000,000.00", duff_fmt(    1000000.0    , 2));
+    LMI_TEST_EQUAL(       "100,000.00", duff_fmt(     100000.0    , 2));
+    LMI_TEST_EQUAL(        "10,000.00", duff_fmt(      10000.0    , 2));
+    LMI_TEST_EQUAL(         "1,000.00", duff_fmt(       1000.0    , 2));
+    LMI_TEST_EQUAL(           "100.00", duff_fmt(        100.0    , 2));
+    LMI_TEST_EQUAL(            "10.00", duff_fmt(         10.0    , 2));
+    LMI_TEST_EQUAL(             "1.00", duff_fmt(          1.0    , 2));
+    LMI_TEST_EQUAL(             "0.10", duff_fmt(          0.1    , 2));
+    LMI_TEST_EQUAL(             "0.01", duff_fmt(          0.01   , 2));
+    LMI_TEST_EQUAL( "2,147,483,647.00", duff_fmt( 2147483647.0    , 2));
+    LMI_TEST_EQUAL(         "2,000.00", duff_fmt(       1999.999  , 2));
+    LMI_TEST_EQUAL(         "2,000.00", duff_fmt(       1999.99501, 2));
+    LMI_TEST_EQUAL(         "1,999.99", duff_fmt(       1999.99499, 2));
+    LMI_TEST_EQUAL(         "1,900.00", duff_fmt(       1899.999  , 2));
+    LMI_TEST_EQUAL(    "10,000,000.00", duff_fmt(    9999999.999  , 2));
 
     // Repeat with negatives.
-    LMI_TEST_EQUAL("-1,234,567,890.14", duff_fmt(-1234567890.14159));
-    LMI_TEST_EQUAL(  "-234,567,890.14", duff_fmt( -234567890.14159));
-    LMI_TEST_EQUAL(   "-34,567,890.14", duff_fmt(  -34567890.14159));
-    LMI_TEST_EQUAL(    "-4,567,890.14", duff_fmt(   -4567890.14159));
-    LMI_TEST_EQUAL(      "-567,890.14", duff_fmt(    -567890.14159));
-    LMI_TEST_EQUAL(       "-67,890.14", duff_fmt(     -67890.14159));
-    LMI_TEST_EQUAL(        "-7,890.14", duff_fmt(      -7890.14159));
-    LMI_TEST_EQUAL(          "-890.14", duff_fmt(       -890.14159));
-    LMI_TEST_EQUAL(           "-90.14", duff_fmt(        -90.14159));
-    LMI_TEST_EQUAL(            "-0.14", duff_fmt(         -0.14159));
-    LMI_TEST_EQUAL("-1,234,567,890.00", duff_fmt(-1234567890.0    ));
-    LMI_TEST_EQUAL(  "-234,567,890.00", duff_fmt( -234567890.0    ));
-    LMI_TEST_EQUAL(   "-34,567,890.00", duff_fmt(  -34567890.0    ));
-    LMI_TEST_EQUAL(    "-4,567,890.00", duff_fmt(   -4567890.0    ));
-    LMI_TEST_EQUAL(      "-567,890.00", duff_fmt(    -567890.0    ));
-    LMI_TEST_EQUAL(       "-67,890.00", duff_fmt(     -67890.0    ));
-    LMI_TEST_EQUAL(        "-7,890.00", duff_fmt(      -7890.0    ));
-    LMI_TEST_EQUAL(          "-890.00", duff_fmt(       -890.0    ));
-    LMI_TEST_EQUAL(           "-90.00", duff_fmt(        -90.0    ));
-    LMI_TEST_EQUAL(            "-1.00", duff_fmt(         -1.0    ));
-    LMI_TEST_EQUAL("-1,000,000,000.00", duff_fmt(-1000000000.0    ));
-    LMI_TEST_EQUAL(  "-100,000,000.00", duff_fmt( -100000000.0    ));
-    LMI_TEST_EQUAL(   "-10,000,000.00", duff_fmt(  -10000000.0    ));
-    LMI_TEST_EQUAL(    "-1,000,000.00", duff_fmt(   -1000000.0    ));
-    LMI_TEST_EQUAL(      "-100,000.00", duff_fmt(    -100000.0    ));
-    LMI_TEST_EQUAL(       "-10,000.00", duff_fmt(     -10000.0    ));
-    LMI_TEST_EQUAL(        "-1,000.00", duff_fmt(      -1000.0    ));
-    LMI_TEST_EQUAL(          "-100.00", duff_fmt(       -100.0    ));
-    LMI_TEST_EQUAL(           "-10.00", duff_fmt(        -10.0    ));
-    LMI_TEST_EQUAL(            "-1.00", duff_fmt(         -1.0    ));
-    LMI_TEST_EQUAL(            "-0.10", duff_fmt(         -0.1    ));
-    LMI_TEST_EQUAL(            "-0.01", duff_fmt(         -0.01   ));
-    LMI_TEST_EQUAL("-2,147,483,647.00", duff_fmt(-2147483647.0    ));
-    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.999  ));
-    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.999  ));
-    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.99501));
-    LMI_TEST_EQUAL(        "-1,999.99", duff_fmt(      -1999.99499));
-    LMI_TEST_EQUAL(        "-1,900.00", duff_fmt(      -1899.999  ));
-    LMI_TEST_EQUAL(   "-10,000,000.00", duff_fmt(   -9999999.999  ));
+    LMI_TEST_EQUAL("-1,234,567,890.14", duff_fmt(-1234567890.14159, 2));
+    LMI_TEST_EQUAL(  "-234,567,890.14", duff_fmt( -234567890.14159, 2));
+    LMI_TEST_EQUAL(   "-34,567,890.14", duff_fmt(  -34567890.14159, 2));
+    LMI_TEST_EQUAL(    "-4,567,890.14", duff_fmt(   -4567890.14159, 2));
+    LMI_TEST_EQUAL(      "-567,890.14", duff_fmt(    -567890.14159, 2));
+    LMI_TEST_EQUAL(       "-67,890.14", duff_fmt(     -67890.14159, 2));
+    LMI_TEST_EQUAL(        "-7,890.14", duff_fmt(      -7890.14159, 2));
+    LMI_TEST_EQUAL(          "-890.14", duff_fmt(       -890.14159, 2));
+    LMI_TEST_EQUAL(           "-90.14", duff_fmt(        -90.14159, 2));
+    LMI_TEST_EQUAL(            "-0.14", duff_fmt(         -0.14159, 2));
+    LMI_TEST_EQUAL("-1,234,567,890.00", duff_fmt(-1234567890.0    , 2));
+    LMI_TEST_EQUAL(  "-234,567,890.00", duff_fmt( -234567890.0    , 2));
+    LMI_TEST_EQUAL(   "-34,567,890.00", duff_fmt(  -34567890.0    , 2));
+    LMI_TEST_EQUAL(    "-4,567,890.00", duff_fmt(   -4567890.0    , 2));
+    LMI_TEST_EQUAL(      "-567,890.00", duff_fmt(    -567890.0    , 2));
+    LMI_TEST_EQUAL(       "-67,890.00", duff_fmt(     -67890.0    , 2));
+    LMI_TEST_EQUAL(        "-7,890.00", duff_fmt(      -7890.0    , 2));
+    LMI_TEST_EQUAL(          "-890.00", duff_fmt(       -890.0    , 2));
+    LMI_TEST_EQUAL(           "-90.00", duff_fmt(        -90.0    , 2));
+    LMI_TEST_EQUAL(            "-1.00", duff_fmt(         -1.0    , 2));
+    LMI_TEST_EQUAL("-1,000,000,000.00", duff_fmt(-1000000000.0    , 2));
+    LMI_TEST_EQUAL(  "-100,000,000.00", duff_fmt( -100000000.0    , 2));
+    LMI_TEST_EQUAL(   "-10,000,000.00", duff_fmt(  -10000000.0    , 2));
+    LMI_TEST_EQUAL(    "-1,000,000.00", duff_fmt(   -1000000.0    , 2));
+    LMI_TEST_EQUAL(      "-100,000.00", duff_fmt(    -100000.0    , 2));
+    LMI_TEST_EQUAL(       "-10,000.00", duff_fmt(     -10000.0    , 2));
+    LMI_TEST_EQUAL(        "-1,000.00", duff_fmt(      -1000.0    , 2));
+    LMI_TEST_EQUAL(          "-100.00", duff_fmt(       -100.0    , 2));
+    LMI_TEST_EQUAL(           "-10.00", duff_fmt(        -10.0    , 2));
+    LMI_TEST_EQUAL(            "-1.00", duff_fmt(         -1.0    , 2));
+    LMI_TEST_EQUAL(            "-0.10", duff_fmt(         -0.1    , 2));
+    LMI_TEST_EQUAL(            "-0.01", duff_fmt(         -0.01   , 2));
+    LMI_TEST_EQUAL("-2,147,483,647.00", duff_fmt(-2147483647.0    , 2));
+    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.999  , 2));
+    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.999  , 2));
+    LMI_TEST_EQUAL(        "-2,000.00", duff_fmt(      -1999.99501, 2));
+    LMI_TEST_EQUAL(        "-1,999.99", duff_fmt(      -1999.99499, 2));
+    LMI_TEST_EQUAL(        "-1,900.00", duff_fmt(      -1899.999  , 2));
+    LMI_TEST_EQUAL(   "-10,000,000.00", duff_fmt(   -9999999.999  , 2));
+
+    // Same as above, with zero decimals.
+    LMI_TEST_EQUAL( "1,234,567,890", duff_fmt( 1234567890.14159, 0));
+    LMI_TEST_EQUAL(   "234,567,890", duff_fmt(  234567890.14159, 0));
+    LMI_TEST_EQUAL(    "34,567,890", duff_fmt(   34567890.14159, 0));
+    LMI_TEST_EQUAL(     "4,567,890", duff_fmt(    4567890.14159, 0));
+    LMI_TEST_EQUAL(       "567,890", duff_fmt(     567890.14159, 0));
+    LMI_TEST_EQUAL(        "67,890", duff_fmt(      67890.14159, 0));
+    LMI_TEST_EQUAL(         "7,890", duff_fmt(       7890.14159, 0));
+    LMI_TEST_EQUAL(           "890", duff_fmt(        890.14159, 0));
+    LMI_TEST_EQUAL(            "90", duff_fmt(         90.14159, 0));
+    LMI_TEST_EQUAL(             "0", duff_fmt(          0.14159, 0));
+    LMI_TEST_EQUAL( "1,234,567,890", duff_fmt( 1234567890.0    , 0));
+    LMI_TEST_EQUAL(   "234,567,890", duff_fmt(  234567890.0    , 0));
+    LMI_TEST_EQUAL(    "34,567,890", duff_fmt(   34567890.0    , 0));
+    LMI_TEST_EQUAL(     "4,567,890", duff_fmt(    4567890.0    , 0));
+    LMI_TEST_EQUAL(       "567,890", duff_fmt(     567890.0    , 0));
+    LMI_TEST_EQUAL(        "67,890", duff_fmt(      67890.0    , 0));
+    LMI_TEST_EQUAL(         "7,890", duff_fmt(       7890.0    , 0));
+    LMI_TEST_EQUAL(           "890", duff_fmt(        890.0    , 0));
+    LMI_TEST_EQUAL(            "90", duff_fmt(         90.0    , 0));
+    LMI_TEST_EQUAL(             "1", duff_fmt(          1.0    , 0));
+    LMI_TEST_EQUAL( "1,000,000,000", duff_fmt( 1000000000.0    , 0));
+    LMI_TEST_EQUAL(   "100,000,000", duff_fmt(  100000000.0    , 0));
+    LMI_TEST_EQUAL(    "10,000,000", duff_fmt(   10000000.0    , 0));
+    LMI_TEST_EQUAL(     "1,000,000", duff_fmt(    1000000.0    , 0));
+    LMI_TEST_EQUAL(       "100,000", duff_fmt(     100000.0    , 0));
+    LMI_TEST_EQUAL(        "10,000", duff_fmt(      10000.0    , 0));
+    LMI_TEST_EQUAL(         "1,000", duff_fmt(       1000.0    , 0));
+    LMI_TEST_EQUAL(           "100", duff_fmt(        100.0    , 0));
+    LMI_TEST_EQUAL(            "10", duff_fmt(         10.0    , 0));
+    LMI_TEST_EQUAL(             "1", duff_fmt(          1.0    , 0));
+    LMI_TEST_EQUAL(             "0", duff_fmt(          0.1    , 0));
+    LMI_TEST_EQUAL(             "0", duff_fmt(          0.01   , 0));
+    LMI_TEST_EQUAL( "2,147,483,647", duff_fmt( 2147483647.0    , 0));
+    LMI_TEST_EQUAL(         "2,000", duff_fmt(       1999.999  , 0));
+    LMI_TEST_EQUAL(         "2,000", duff_fmt(       1999.99501, 0));
+    LMI_TEST_EQUAL(         "2,000", duff_fmt(       1999.99499, 0));
+    LMI_TEST_EQUAL(         "1,900", duff_fmt(       1899.999  , 0));
+    LMI_TEST_EQUAL(    "10,000,000", duff_fmt(    9999999.999  , 0));
+
+    // Repeat with negatives.
+    LMI_TEST_EQUAL("-1,234,567,890", duff_fmt(-1234567890.14159, 0));
+    LMI_TEST_EQUAL(  "-234,567,890", duff_fmt( -234567890.14159, 0));
+    LMI_TEST_EQUAL(   "-34,567,890", duff_fmt(  -34567890.14159, 0));
+    LMI_TEST_EQUAL(    "-4,567,890", duff_fmt(   -4567890.14159, 0));
+    LMI_TEST_EQUAL(      "-567,890", duff_fmt(    -567890.14159, 0));
+    LMI_TEST_EQUAL(       "-67,890", duff_fmt(     -67890.14159, 0));
+    LMI_TEST_EQUAL(        "-7,890", duff_fmt(      -7890.14159, 0));
+    LMI_TEST_EQUAL(          "-890", duff_fmt(       -890.14159, 0));
+    LMI_TEST_EQUAL(           "-90", duff_fmt(        -90.14159, 0));
+    LMI_TEST_EQUAL(            "-0", duff_fmt(         -0.14159, 0));
+    LMI_TEST_EQUAL("-1,234,567,890", duff_fmt(-1234567890.0    , 0));
+    LMI_TEST_EQUAL(  "-234,567,890", duff_fmt( -234567890.0    , 0));
+    LMI_TEST_EQUAL(   "-34,567,890", duff_fmt(  -34567890.0    , 0));
+    LMI_TEST_EQUAL(    "-4,567,890", duff_fmt(   -4567890.0    , 0));
+    LMI_TEST_EQUAL(      "-567,890", duff_fmt(    -567890.0    , 0));
+    LMI_TEST_EQUAL(       "-67,890", duff_fmt(     -67890.0    , 0));
+    LMI_TEST_EQUAL(        "-7,890", duff_fmt(      -7890.0    , 0));
+    LMI_TEST_EQUAL(          "-890", duff_fmt(       -890.0    , 0));
+    LMI_TEST_EQUAL(           "-90", duff_fmt(        -90.0    , 0));
+    LMI_TEST_EQUAL(            "-1", duff_fmt(         -1.0    , 0));
+    LMI_TEST_EQUAL("-1,000,000,000", duff_fmt(-1000000000.0    , 0));
+    LMI_TEST_EQUAL(  "-100,000,000", duff_fmt( -100000000.0    , 0));
+    LMI_TEST_EQUAL(   "-10,000,000", duff_fmt(  -10000000.0    , 0));
+    LMI_TEST_EQUAL(    "-1,000,000", duff_fmt(   -1000000.0    , 0));
+    LMI_TEST_EQUAL(      "-100,000", duff_fmt(    -100000.0    , 0));
+    LMI_TEST_EQUAL(       "-10,000", duff_fmt(     -10000.0    , 0));
+    LMI_TEST_EQUAL(        "-1,000", duff_fmt(      -1000.0    , 0));
+    LMI_TEST_EQUAL(          "-100", duff_fmt(       -100.0    , 0));
+    LMI_TEST_EQUAL(           "-10", duff_fmt(        -10.0    , 0));
+    LMI_TEST_EQUAL(            "-1", duff_fmt(         -1.0    , 0));
+    LMI_TEST_EQUAL(            "-0", duff_fmt(         -0.1    , 0));
+    LMI_TEST_EQUAL(            "-0", duff_fmt(         -0.01   , 0));
+    LMI_TEST_EQUAL("-2,147,483,647", duff_fmt(-2147483647.0    , 0));
+    LMI_TEST_EQUAL(        "-2,000", duff_fmt(      -1999.999  , 0));
+    LMI_TEST_EQUAL(        "-2,000", duff_fmt(      -1999.999  , 0));
+    LMI_TEST_EQUAL(        "-2,000", duff_fmt(      -1999.99501, 0));
+    LMI_TEST_EQUAL(        "-2,000", duff_fmt(      -1999.99499, 0));
+    LMI_TEST_EQUAL(        "-1,900", duff_fmt(      -1899.999  , 0));
+    LMI_TEST_EQUAL(   "-10,000,000", duff_fmt(   -9999999.999  , 0));
 
     // Implementation-defined value [2.13.3/1].
     LMI_TEST
-        (               "1,999.99" == duff_fmt(      1999.995   )
-        ||              "2,000.00" == duff_fmt(      1999.995   )
+        (               "1,999.99" == duff_fmt(      1999.995     , 2)
+        ||              "2,000.00" == duff_fmt(      1999.995     , 2)
         );
 
     // Infinities and NaNs. Apparently the C89/90 standard referenced
@@ -134,12 +216,12 @@ int test_main(int, char*[])
 #endif // defined __BORLANDC__
 
     double volatile d = 0.0;
-    duff_fmt( 1.0 / d  );
-    duff_fmt(-1.0 / d  );
+    duff_fmt( 1.0 / d, 2);
+    duff_fmt(-1.0 / d, 2);
 
     if(std::numeric_limits<double>::has_quiet_NaN)
         {
-        duff_fmt(std::numeric_limits<double>::quiet_NaN());
+        duff_fmt(std::numeric_limits<double>::quiet_NaN(), 2);
         }
 
     return 0;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]