diff options
author | thevenyp <thevenyp@280ebfd0-de03-0410-8827-d642c229c3f4> | 2009-03-13 17:17:42 +0000 |
---|---|---|
committer | thevenyp <thevenyp@280ebfd0-de03-0410-8827-d642c229c3f4> | 2009-03-13 17:17:42 +0000 |
commit | 03b464199a76b788ac4b245a5e5dfc7d112d01d2 (patch) | |
tree | e5ff1ce7da68b1b182fb2904e5bbc76076e14eb9 /tests | |
parent | 6539f42d89b2473914aa710cffafb2545c9914fc (diff) | |
download | mpfr-03b464199a76b788ac4b245a5e5dfc7d112d01d2.tar.gz |
mpfr.texi: Do cosmetic changes and add some details on printf behavior when the precision field is empty.
tests/tsprintf.c: improve code coverage.
tests/tprintf.c: improve code coverage, check the behavior describe in mpfr.texi.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@6095 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tprintf.c | 13 | ||||
-rw-r--r-- | tests/tsprintf.c | 56 |
2 files changed, 50 insertions, 19 deletions
diff --git a/tests/tprintf.c b/tests/tprintf.c index 2da11edfa..03d24af28 100644 --- a/tests/tprintf.c +++ b/tests/tprintf.c @@ -140,6 +140,7 @@ check_invalid_format (void) check_vprintf_failure ("%N (missing conversion specifier)"); check_vprintf_failure ("%Z (missing conversion specifier)"); check_vprintf_failure ("%R (missing conversion specifier)"); + check_vprintf_failure ("%R"); check_vprintf_failure ("%P (missing conversion specifier)"); /* conversion specifier with wrong length specifier */ @@ -281,8 +282,8 @@ check_mixed (void) check_vprintf ("a. %Re, b. %llx%Qn", mpfr, ullo, &mpq); check_length_with_cmp (11, mpq, 16, mpq_cmp_ui (mpq, 16, 1), Qu); - check_vprintf ("a. %lli, b. %Rf%Fn", llo, mpfr, &mpf); - check_length_with_cmp (12, mpf, 12, mpf_cmp_ui (mpf, 12), Fg); + check_vprintf ("a. %lli, b. %Rf%lln", llo, mpfr, &ullo); + check_length (12, ullo, 12, llu); } #endif @@ -291,10 +292,10 @@ check_mixed (void) intmax_t im = -1; uintmax_t uim = 1; - check_vprintf ("a. %*RA, b. %ji%Qn", 10, mpfr, im, &mpq); - check_length_with_cmp (31, mpq, 20, mpq_cmp_ui (mpq, 20, 1), Qu); - check_vprintf ("a. %.*Re, b. %jx%Fn", 10, mpfr, uim, &mpf); - check_length_with_cmp (32, mpf, 25, mpf_cmp_ui (mpf, 25), Fg); + check_vprintf ("a. %*RA, b. %ji%Fn", 10, mpfr, im, &mpf); + check_length_with_cmp (31, mpf, 20, mpf_cmp_ui (mpf, 20), Fg); + check_vprintf ("a. %.*Re, b. %jx%jn", 10, mpfr, uim, &im); + check_length (32, im, 25, ji); } #endif diff --git a/tests/tsprintf.c b/tests/tsprintf.c index 0fdbb9ef8..8809c5343 100644 --- a/tests/tsprintf.c +++ b/tests/tsprintf.c @@ -207,6 +207,9 @@ native_types (void) sprintf (buf, "%s", s); check_vsprintf (buf, "%s", s); + sprintf (buf, "--%s++", ""); + check_sprintf (buf, "--%s++", ""); + sprintf (buf, "%u", ui); check_vsprintf (buf, "%u", ui); @@ -225,6 +228,7 @@ decimal (void) /* specifier 'P' for precision */ check_vsprintf ("128", "%Pu", p); + check_vsprintf ("00128", "%.5Pu", p); /* special numbers */ mpfr_set_inf (x, 1); @@ -316,19 +320,40 @@ decimal (void) /* neighborhood of 1 */ - mpfr_set_str (x, "0.9999", 10, MPFR_RNDN); - check_sprintf ("1E+00 ", "%-10.0RE", x); - check_sprintf ("1.0E+00 ", "%-10.1RE", x); - check_sprintf ("9.9990E-01", "%-10.4RE", x); - check_sprintf ("1.0 ", "%-10.1RF", x); - check_sprintf ("0.9999 ", "%-10.4RF", x); - check_sprintf ("1 ", "%-10.0RG", x); - check_sprintf ("1 ", "%-10.1RG", x); - check_sprintf ("0.9999 ", "%-10.4RG", x); - check_sprintf ("1. ", "%-#10.0RG", x); - check_sprintf ("1. ", "%-#10.1RG", x); - check_sprintf ("1.0 ", "%-#10.2RG", x); - check_sprintf ("0.9999 ", "%-#10.4RG", x); + mpfr_set_str (x, "0.99993896484375", 10, MPFR_RNDN); + check_sprintf ("9.9993896484375E-01 ", "%-20RE", x); + check_sprintf ("9.9993896484375E-01 ", "%-20.RE", x); + check_sprintf ("1E+00 ", "%-20.0RE", x); + check_sprintf ("1.0E+00 ", "%-20.1RE", x); + check_sprintf ("1.00E+00 ", "%-20.2RE", x); + check_sprintf ("9.999E-01 ", "%-20.3RE", x); + check_sprintf ("9.9994E-01 ", "%-20.4RE", x); + check_sprintf ("0.99993896484375 ", "%-20RF", x); + check_sprintf ("0.99993896484375 ", "%-20.RF", x); + check_sprintf ("1 ", "%-20.0RF", x); + check_sprintf ("1.0 ", "%-20.1RF", x); + check_sprintf ("1.00 ", "%-20.2RF", x); + check_sprintf ("1.000 ", "%-20.3RF", x); + check_sprintf ("0.9999 ", "%-20.4RF", x); + check_sprintf ("0.99993896484375 ", "%-#20RF", x); + check_sprintf ("0.99993896484375 ", "%-#20.RF", x); + check_sprintf ("1. ", "%-#20.0RF", x); + check_sprintf ("1.0 ", "%-#20.1RF", x); + check_sprintf ("1.00 ", "%-#20.2RF", x); + check_sprintf ("1.000 ", "%-#20.3RF", x); + check_sprintf ("0.9999 ", "%-#20.4RF", x); + check_sprintf ("1 ", "%-20.0RG", x); + check_sprintf ("1 ", "%-20.1RG", x); + check_sprintf ("1 ", "%-20.2RG", x); + check_sprintf ("1 ", "%-20.3RG", x); + check_sprintf ("0.9999 ", "%-20.4RG", x); + check_sprintf ("0.999939 ", "%-#20RG", x); + check_sprintf ("0.999939 ", "%-#20.RG", x); + check_sprintf ("1. ", "%-#20.0RG", x); + check_sprintf ("1. ", "%-#20.1RG", x); + check_sprintf ("1.0 ", "%-#20.2RG", x); + check_sprintf ("1.00 ", "%-#20.3RG", x); + check_sprintf ("0.9999 ", "%-#20.4RG", x); /* multiple of 10 */ mpfr_set_str (x, "1e17", 10, MPFR_RNDN); @@ -466,6 +491,11 @@ hexadecimal (void) check_sprintf ("-0xap-1", "%.0RNa", x); /* trailing zeros in fractional part */ check_sprintf ("-0X4.C0000000000000000000P+0", "%.20RNA", x); + /* rounding bit is one and the first non zero bit is far away */ + mpfr_set_prec (x, 1024); + mpfr_set_ui_2exp (x, 29, -1, MPFR_RNDN); + mpfr_nextabove (x); + check_sprintf ("0XFP+0", "%.0RNA", x); mpfr_clears (x, z, (mpfr_ptr) 0); return 0; |