summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorthevenyp <thevenyp@280ebfd0-de03-0410-8827-d642c229c3f4>2009-03-13 17:17:42 +0000
committerthevenyp <thevenyp@280ebfd0-de03-0410-8827-d642c229c3f4>2009-03-13 17:17:42 +0000
commit03b464199a76b788ac4b245a5e5dfc7d112d01d2 (patch)
treee5ff1ce7da68b1b182fb2904e5bbc76076e14eb9 /tests
parent6539f42d89b2473914aa710cffafb2545c9914fc (diff)
downloadmpfr-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.c13
-rw-r--r--tests/tsprintf.c56
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;