diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
commit | 514d1553cc1f49dd008e6e432664359124af60a9 (patch) | |
tree | e71b01386ad11f2e0c99bab2eab606f5c7360807 /contrib/sendmail/libsm/t-float.c | |
parent | c2a47cdbe88de50d484d2cdb605874e1168626dc (diff) | |
parent | 8449595fe97f4474b9b9a7e4edee1ef35dcff393 (diff) | |
download | FreeBSD-src-514d1553cc1f49dd008e6e432664359124af60a9.zip FreeBSD-src-514d1553cc1f49dd008e6e432664359124af60a9.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r90792,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/sendmail/libsm/t-float.c')
-rw-r--r-- | contrib/sendmail/libsm/t-float.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/contrib/sendmail/libsm/t-float.c b/contrib/sendmail/libsm/t-float.c new file mode 100644 index 0000000..f3f059b --- /dev/null +++ b/contrib/sendmail/libsm/t-float.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set + * forth in the LICENSE file which can be found at the top level of + * the sendmail distribution. + */ + +#include <sm/gen.h> +SM_IDSTR(id, "@(#)$Id: t-float.c,v 1.18 2001/09/11 04:04:49 gshapiro Exp $") + +#include <sm/limits.h> +#include <sm/io.h> +#include <sm/string.h> +#include <sm/test.h> +#include <sm/types.h> + +int +main(argc, argv) + int argc; + char **argv; +{ + double d, d2; + double ld; + char buf[128]; + char *r; + + /* + ** Sendmail uses printf and scanf with doubles, + ** so make sure that this works. + */ + + sm_test_begin(argc, argv, "test floating point stuff"); + + d = 1.125; + sm_snprintf(buf, sizeof(buf), "%d %.3f %d", 0, d, 1); + r = "0 1.125 1"; + if (!SM_TEST(strcmp(buf, r) == 0)) + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "got %s instead\n", buf); + + d = 1.125; + sm_snprintf(buf, sizeof(buf), "%.3f", d); + r = "1.125"; + if (!SM_TEST(strcmp(buf, r) == 0)) + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "got %s instead\n", buf); + d2 = 0.0; + sm_io_sscanf(buf, "%lf", &d2); +#if SM_CONF_BROKEN_STRTOD + if (d != d2) + { + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "wanted %f, got %f\n", d, d2); + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "error ignored since SM_CONF_BROKEN_STRTOD is set for this OS\n"); + } +#else /* SM_CONF_BROKEN_STRTOD */ + if (!SM_TEST(d == d2)) + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "wanted %f, got %f\n", d, d2); +#endif /* SM_CONF_BROKEN_STRTOD */ + + ld = 2.5; + sm_snprintf(buf, sizeof(buf), "%.3f %.1f", d, ld); + r = "1.125 2.5"; + if (!SM_TEST(strcmp(buf, r) == 0)) + (void) sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "got %s instead\n", buf); + return sm_test_end(); +} |