Mercurial > hg > octave-lyh > gnulib-hg
changeset 16561:82c859774444
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.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 03 Mar 2012 16:14:14 +0100 |
parents | f56ad1ce5e9e |
children | 3f4104450577 |
files | ChangeLog modules/fabs-tests modules/fabsf-tests modules/fabsl-tests tests/test-fabs.c tests/test-fabs.h tests/test-fabsf.c tests/test-fabsl.c |
diffstat | 8 files changed, 96 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2012-03-03 Bruno Haible <bruno@clisp.org> + + 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 <bruno@clisp.org> ldexp* tests: More tests.
--- 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@
--- 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@
--- 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@
--- a/tests/test-fabs.c +++ b/tests/test-fabs.c @@ -28,9 +28,12 @@ #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 @@ 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; }
new file mode 100644 --- /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 <http://www.gnu.org/licenses/>. */ + +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;
--- a/tests/test-fabsf.c +++ b/tests/test-fabsf.c @@ -28,9 +28,12 @@ #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 @@ 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; }
--- a/tests/test-fabsl.c +++ b/tests/test-fabsl.c @@ -28,9 +28,12 @@ #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 @@ 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; }