diff options
author | rsc <devnull@localhost> | 2006-05-22 14:56:13 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-05-22 14:56:13 +0000 |
commit | 4b65e43c54c2ca1394babed18cc02f4fffc22e16 (patch) | |
tree | 67a95b4e2d6861019fd9dd4e1253fb6a1e1ec20f /src/lib9/testfltfmt.c | |
parent | e17e1a71c2923717723f7038d6e123b6452e0b13 (diff) | |
download | plan9port-4b65e43c54c2ca1394babed18cc02f4fffc22e16.tar.gz plan9port-4b65e43c54c2ca1394babed18cc02f4fffc22e16.tar.bz2 plan9port-4b65e43c54c2ca1394babed18cc02f4fffc22e16.zip |
more tests
Diffstat (limited to 'src/lib9/testfltfmt.c')
-rw-r--r-- | src/lib9/testfltfmt.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/lib9/testfltfmt.c b/src/lib9/testfltfmt.c index 54050422..06ab5a60 100644 --- a/src/lib9/testfltfmt.c +++ b/src/lib9/testfltfmt.c @@ -58,8 +58,14 @@ static int numclose(char *num1, char *num2) { int ndig; + double d1, d2; enum { MAXDIG = 15 }; + d1 = fmtstrtod(num1, 0); + d2 = fmtstrtod(num2, 0); + if(d1 != d2) + return 0; + ndig = 0; while (*num1) { if (*num1 >= '0' && *num1 <= '9') { @@ -126,24 +132,35 @@ doit(int just, int plus, int alt, int zero, int width, int prec, int spec) *p = '\0'; for (i = 0; i < sizeof(fmtvals) / sizeof(fmtvals[0]); i++) { - char ref[256], buf[256]; - Rune rbuf[256]; + char ref[1024], buf[1024]; + Rune rbuf[1024]; + double d1, d2; sprintf(ref, format, fmtvals[i]); snprint(buf, sizeof(buf), format, fmtvals[i]); if (strcmp(ref, buf) != 0 && !numclose(ref, buf)) { - fprintf(stderr, "%s: ref='%s' fmt='%s'\n", format, ref, buf); - exit(1); + d1 = fmtstrtod(ref, 0); + d2 = fmtstrtod(buf, 0); + fprintf(stderr, "%s: ref='%s'%s fmt='%s'%s\n", + format, + ref, d1==fmtvals[i] ? "" : " (ref is inexact!)", + buf, d2==fmtvals[i] ? "" : " (fmt is inexact!)"); + // exits("oops"); } /* Check again with output to rune string */ - runesnprint(rbuf, 256, format, fmtvals[i]); + runesnprint(rbuf, 1024, format, fmtvals[i]); snprint(buf, sizeof(buf), "%S", rbuf); if (strcmp(ref, buf) != 0 && !numclose(ref, buf)) { - fprintf(stderr, "%s: rune ref='%s' fmt='%s'\n", format, ref, buf); - exits("oops"); + d1 = fmtstrtod(ref, 0); + d2 = fmtstrtod(buf, 0); + fprintf(stderr, "%s: ref='%s'%s fmt='%s'%s\n", + format, + ref, d1==fmtvals[i] ? "" : " (ref is inexact!)", + buf, d2==fmtvals[i] ? "" : " (fmt is inexact!)"); + // exits("oops"); } } } |