From: Bruno Haible Date: Sat, 3 Mar 2012 15:14:14 +0000 (+0100) Subject: fabs* tests: More tests. X-Git-Tag: v0.1~965 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=ff53c39e3f416e4b8b5dd03e303986edbf20f56c;p=gnulib.git fabs* tests: More tests. * tests/test-fabs.h: New file, partially extracted from tests/test-fabsl.c. * tests/test-fabs.c (RANDOM): New macro. * tests/test-fabsf.c (RANDOM): New macro. * tests/test-fabsl.c (RANDOM): New macro. * modules/fabs-tests (Files): Add tests/randomd.c. (Makefile.am): Add randomd.c to test_fabs_SOURCES. * modules/fabsf-tests (Files): Add tests/randomf.c. (Makefile.am): Add randomf.c to test_fabsf_SOURCES. * modules/fabsl-tests (Files): Add tests/randoml.c. (Makefile.am): Add randoml.c to test_fabsl_SOURCES. --- diff --git a/ChangeLog b/ChangeLog index 3f8a77c674..0bb13a333e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2012-03-03 Bruno Haible + + fabs* tests: More tests. + * tests/test-fabs.h: New file, partially extracted from + tests/test-fabsl.c. + * tests/test-fabs.c (RANDOM): New macro. + * tests/test-fabsf.c (RANDOM): New macro. + * tests/test-fabsl.c (RANDOM): New macro. + * modules/fabs-tests (Files): Add tests/randomd.c. + (Makefile.am): Add randomd.c to test_fabs_SOURCES. + * modules/fabsf-tests (Files): Add tests/randomf.c. + (Makefile.am): Add randomf.c to test_fabsf_SOURCES. + * modules/fabsl-tests (Files): Add tests/randoml.c. + (Makefile.am): Add randoml.c to test_fabsl_SOURCES. + 2012-03-03 Bruno Haible ldexp* tests: More tests. diff --git a/modules/fabs-tests b/modules/fabs-tests index 3d879bf61f..3468c3494a 100644 --- a/modules/fabs-tests +++ b/modules/fabs-tests @@ -1,14 +1,18 @@ Files: tests/test-fabs.c +tests/test-fabs.h tests/signature.h tests/minus-zero.h tests/macros.h +tests/randomd.c Depends-on: +signbit configure.ac: Makefile.am: TESTS += test-fabs check_PROGRAMS += test-fabs +test_fabs_SOURCES = test-fabs.c randomd.c test_fabs_LDADD = $(LDADD) @FABS_LIBM@ diff --git a/modules/fabsf-tests b/modules/fabsf-tests index 74ba72311a..6a66922c56 100644 --- a/modules/fabsf-tests +++ b/modules/fabsf-tests @@ -1,14 +1,18 @@ Files: tests/test-fabsf.c +tests/test-fabs.h tests/signature.h tests/minus-zero.h tests/macros.h +tests/randomf.c Depends-on: +signbit configure.ac: Makefile.am: TESTS += test-fabsf check_PROGRAMS += test-fabsf +test_fabsf_SOURCES = test-fabsf.c randomf.c test_fabsf_LDADD = $(LDADD) @FABSF_LIBM@ diff --git a/modules/fabsl-tests b/modules/fabsl-tests index e32c745c4e..2db3a17776 100644 --- a/modules/fabsl-tests +++ b/modules/fabsl-tests @@ -1,14 +1,18 @@ Files: tests/test-fabsl.c +tests/test-fabs.h tests/signature.h tests/minus-zero.h tests/macros.h +tests/randoml.c Depends-on: +signbit configure.ac: Makefile.am: TESTS += test-fabsl check_PROGRAMS += test-fabsl +test_fabsl_SOURCES = test-fabsl.c randoml.c test_fabsl_LDADD = $(LDADD) @FABSL_LIBM@ diff --git a/tests/test-fabs.c b/tests/test-fabs.c index 4533441f59..c5566cfcb0 100644 --- a/tests/test-fabs.c +++ b/tests/test-fabs.c @@ -28,9 +28,12 @@ SIGNATURE_CHECK (fabs, double, (double)); #include "macros.h" #include "minus-zero.h" -volatile double x; -double y; -double zero = 0.0; +#define DOUBLE double +#define L_(literal) literal +#define MINUS_ZERO minus_zerod +#define FABS fabs +#define RANDOM randomd +#include "test-fabs.h" int main () @@ -45,16 +48,7 @@ main () y = fabs (x); ASSERT (y == 0.6); - /* Signed zero. */ - x = 0.0; - y = fabs (x); - ASSERT (y == 0.0); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); - - x = minus_zerod; - y = fabs (x); - ASSERT (y == 0.0); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); + test_function (); return 0; } diff --git a/tests/test-fabs.h b/tests/test-fabs.h new file mode 100644 index 0000000000..a25eaf70c1 --- /dev/null +++ b/tests/test-fabs.h @@ -0,0 +1,48 @@ +/* Test of fabs*() function family. + Copyright (C) 2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +static void +test_function (void) +{ + volatile DOUBLE x; + DOUBLE y; + + /* Signed zero. */ + x = L_(0.0); + y = FABS (x); + ASSERT (y == L_(0.0)); + ASSERT (!signbit (y)); + + x = MINUS_ZERO; + y = FABS (x); + ASSERT (y == L_(0.0)); + ASSERT (!signbit (y)); + + /* Randomized tests. */ + { + int i; + + for (i = 0; i < SIZEOF (RANDOM); i++) + { + x = L_(10.0) * RANDOM[i]; /* 0.0 <= x <= 10.0 */ + ASSERT (FABS (x) == x); + ASSERT (FABS (- x) == x); + } + } +} + +volatile DOUBLE x; +DOUBLE y; diff --git a/tests/test-fabsf.c b/tests/test-fabsf.c index b78b801cff..ec28d5aaf7 100644 --- a/tests/test-fabsf.c +++ b/tests/test-fabsf.c @@ -28,9 +28,12 @@ SIGNATURE_CHECK (fabsf, float, (float)); #include "macros.h" #include "minus-zero.h" -volatile float x; -float y; -float zero = 0.0f; +#define DOUBLE float +#define L_(literal) literal##f +#define MINUS_ZERO minus_zerof +#define FABS fabsf +#define RANDOM randomf +#include "test-fabs.h" int main () @@ -45,16 +48,7 @@ main () y = fabsf (x); ASSERT (y == 0.6f); - /* Signed zero. */ - x = 0.0f; - y = fabsf (x); - ASSERT (y == 0.0f); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); - - x = minus_zerof; - y = fabsf (x); - ASSERT (y == 0.0f); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); + test_function (); return 0; } diff --git a/tests/test-fabsl.c b/tests/test-fabsl.c index 0270a91729..5e392754bc 100644 --- a/tests/test-fabsl.c +++ b/tests/test-fabsl.c @@ -28,9 +28,12 @@ SIGNATURE_CHECK (fabsl, long double, (long double)); #include "macros.h" #include "minus-zero.h" -volatile long double x; -long double y; -long double zero = 0.0L; +#define DOUBLE long double +#define L_(literal) literal##L +#define MINUS_ZERO minus_zerol +#define FABS fabsl +#define RANDOM randoml +#include "test-fabs.h" int main () @@ -45,16 +48,7 @@ main () y = fabsl (x); ASSERT (y == 0.6L); - /* Signed zero. */ - x = 0.0L; - y = fabsl (x); - ASSERT (y == 0.0L); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); - - x = minus_zerol; - y = fabsl (x); - ASSERT (y == 0.0L); - ASSERT (memcmp (&y, &zero, sizeof y) == 0); + test_function (); return 0; }