diff options
author | Bruno Haible <bruno@clisp.org> | 2007-05-19 10:22:11 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2007-05-19 10:22:11 +0000 |
commit | cf8538614458dcf303ea9bb2f03aacdb5ebe34ca (patch) | |
tree | 9331a70845a2e3575836e756313661723079f298 /tests/test-sprintf-posix.h | |
parent | ec3cec6e830425c42be718a29cfdb793657c0db5 (diff) | |
download | gnulib-cf8538614458dcf303ea9bb2f03aacdb5ebe34ca.tar.gz |
Accomodate for implementations that produce 3 exponent digits in %e and %g.
Diffstat (limited to 'tests/test-sprintf-posix.h')
-rw-r--r-- | tests/test-sprintf-posix.h | 77 |
1 files changed, 56 insertions, 21 deletions
diff --git a/tests/test-sprintf-posix.h b/tests/test-sprintf-posix.h index a61112b742..855f7aee63 100644 --- a/tests/test-sprintf-posix.h +++ b/tests/test-sprintf-posix.h @@ -1279,7 +1279,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e %d", 12.75, 33, 44, 55); - ASSERT (strcmp (result, "1.275000e+01 33") == 0); + ASSERT (strcmp (result, "1.275000e+01 33") == 0 + || strcmp (result, "1.275000e+001 33") == 0); ASSERT (retval == strlen (result)); } @@ -1287,7 +1288,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e %d", 1234567.0, 33, 44, 55); - ASSERT (strcmp (result, "1.234567e+06 33") == 0); + ASSERT (strcmp (result, "1.234567e+06 33") == 0 + || strcmp (result, "1.234567e+006 33") == 0); ASSERT (retval == strlen (result)); } @@ -1375,7 +1377,16 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e", data[k].value); - ASSERT (strmatch (data[k].string, result)); + const char *expected = data[k].string; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); ASSERT (retval == strlen (result)); } } @@ -1384,7 +1395,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e %d", -0.03125, 33, 44, 55); - ASSERT (strcmp (result, "-3.125000e-02 33") == 0); + ASSERT (strcmp (result, "-3.125000e-02 33") == 0 + || strcmp (result, "-3.125000e-002 33") == 0); ASSERT (retval == strlen (result)); } @@ -1392,7 +1404,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e %d", 0.0, 33, 44, 55); - ASSERT (strcmp (result, "0.000000e+00 33") == 0); + ASSERT (strcmp (result, "0.000000e+00 33") == 0 + || strcmp (result, "0.000000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1400,7 +1413,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%e %d", -0.0, 33, 44, 55); - ASSERT (strcmp (result, "-0.000000e+00 33") == 0); + ASSERT (strcmp (result, "-0.000000e+00 33") == 0 + || strcmp (result, "-0.000000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1434,7 +1448,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%15e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, " 1.750000e+00 33") == 0); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1442,7 +1457,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%-15e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, "1.750000e+00 33") == 0); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1450,7 +1466,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%+e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, "+1.750000e+00 33") == 0); + ASSERT (strcmp (result, "+1.750000e+00 33") == 0 + || strcmp (result, "+1.750000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1458,7 +1475,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "% e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, " 1.750000e+00 33") == 0); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1466,7 +1484,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%#e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, "1.750000e+00 33") == 0); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1474,7 +1493,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%#.e %d", 1.75, 33, 44, 55); - ASSERT (strcmp (result, "2.e+00 33") == 0); + ASSERT (strcmp (result, "2.e+00 33") == 0 + || strcmp (result, "2.e+000 33") == 0); ASSERT (retval == strlen (result)); } @@ -1482,7 +1502,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%#.e %d", 9.75, 33, 44, 55); - ASSERT (strcmp (result, "1.e+01 33") == 0); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); ASSERT (retval == strlen (result)); } @@ -1490,7 +1511,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%015e %d", 1234.0, 33, 44, 55); - ASSERT (strcmp (result, "0001.234000e+03 33") == 0); + ASSERT (strcmp (result, "0001.234000e+03 33") == 0 + || strcmp (result, "001.234000e+003 33") == 0); ASSERT (retval == strlen (result)); } @@ -1515,7 +1537,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%.e %d", 1234.0, 33, 44, 55); - ASSERT (strcmp (result, "1e+03 33") == 0); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); ASSERT (retval == strlen (result)); } @@ -1619,7 +1642,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%Le", data[k].value); - ASSERT (strmatch (data[k].string, result)); + ASSERT (strcmp (result, data[k].string) == 0); ASSERT (retval == strlen (result)); } } @@ -1779,7 +1802,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%g %d", 1234567.0, 33, 44, 55); - ASSERT (strcmp (result, "1.23457e+06 33") == 0); + ASSERT (strcmp (result, "1.23457e+06 33") == 0 + || strcmp (result, "1.23457e+006 33") == 0); ASSERT (retval == strlen (result)); } @@ -1867,7 +1891,16 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%g", data[k].value); - ASSERT (strmatch (data[k].string, result)); + const char *expected = data[k].string; + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (expected[strlen (expected) - 4] == 'e' + && strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); ASSERT (retval == strlen (result)); } } @@ -1974,7 +2007,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%#.g %d", 9.75, 33, 44, 55); - ASSERT (strcmp (result, "1.e+01 33") == 0); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); ASSERT (retval == strlen (result)); } @@ -2007,7 +2041,8 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%.g %d", 1234.0, 33, 44, 55); - ASSERT (strcmp (result, "1e+03 33") == 0); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); ASSERT (retval == strlen (result)); } @@ -2111,7 +2146,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) char result[1000]; int retval = my_sprintf (result, "%Lg", data[k].value); - ASSERT (strmatch (data[k].string, result)); + ASSERT (strcmp (result, data[k].string) == 0); ASSERT (retval == strlen (result)); } } |