X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-math-c%2B%2B.cc;h=8fee84320309bba890179ac48691a7bf88c9c5f4;hb=4e647944bd613bb7b419779881b5f3cb053f2869;hp=95be24f605eea8fbcdc60c8d025b6cb8aa5f0a91;hpb=624e3c286e69a92e1610b28020c966c84f61b531;p=gnulib.git diff --git a/tests/test-math-c++.cc b/tests/test-math-c++.cc index 95be24f60..8fee84320 100644 --- a/tests/test-math-c++.cc +++ b/tests/test-math-c++.cc @@ -23,6 +23,18 @@ #include "signature.h" +/* Signature check for a function that takes a real-floating argument. + Check that each overloaded function with the specified signature exists. */ +#define REAL_FLOATING_CHECK(func,\ + rettype1, parameters1,\ + rettype2, parameters2,\ + rettype3, parameters3) \ + OVERLOADED_CHECK (func, rettype1, parameters1, _1); \ + OVERLOADED_CHECK (func, rettype2, parameters2, _2); \ + OVERLOADED_CHECK (func, rettype3, parameters3, _3) +#define OVERLOADED_CHECK(func, rettype, parameters, suffix) \ + static rettype (* _GL_UNUSED signature_check_ ## func ## suffix) parameters \ + = static_cast(func) #if GNULIB_TEST_ACOSF SIGNATURE_CHECK (GNULIB_NAMESPACE::acosf, float, (float)); @@ -76,6 +88,24 @@ SIGNATURE_CHECK (GNULIB_NAMESPACE::frexpf, float, (float, int *)); SIGNATURE_CHECK (GNULIB_NAMESPACE::frexp, double, (double, int *)); #endif //SIGNATURE_CHECK (GNULIB_NAMESPACE::hypot, double, (double, double)); +#if GNULIB_TEST_ISFINITE +# ifdef isfinite +# error "isfinite should not be a macro in C++" +# endif +REAL_FLOATING_CHECK (isfinite, int, (float), int, (double), int, (long double)); +#endif +#if GNULIB_TEST_ISINF +# ifdef isinf +# error "isinf should not be a macro in C++" +# endif +REAL_FLOATING_CHECK (isinf, int, (float), int, (double), int, (long double)); +#endif +#if GNULIB_TEST_ISNAN +# ifdef isnan +# error "isnan should not be a macro in C++" +# endif +REAL_FLOATING_CHECK (isnan, int, (float), int, (double), int, (long double)); +#endif //SIGNATURE_CHECK (GNULIB_NAMESPACE::j0, double, (double)); //SIGNATURE_CHECK (GNULIB_NAMESPACE::j1, double, (double)); //SIGNATURE_CHECK (GNULIB_NAMESPACE::jn, double, (int, double)); @@ -104,6 +134,9 @@ SIGNATURE_CHECK (GNULIB_NAMESPACE::powf, float, (float, float)); #endif //SIGNATURE_CHECK (GNULIB_NAMESPACE::pow, double, (double, double)); //SIGNATURE_CHECK (GNULIB_NAMESPACE::remainder, double, (double, double)); +#if GNULIB_TEST_RINTF +SIGNATURE_CHECK (GNULIB_NAMESPACE::rintf, float, (float)); +#endif #if GNULIB_TEST_RINT SIGNATURE_CHECK (GNULIB_NAMESPACE::rint, double, (double)); #endif @@ -192,6 +225,10 @@ SIGNATURE_CHECK (GNULIB_NAMESPACE::ldexpl, long double, (long double, int)); SIGNATURE_CHECK (GNULIB_NAMESPACE::logl, long double, (long double)); #endif +#if GNULIB_TEST_RINTL +SIGNATURE_CHECK (GNULIB_NAMESPACE::rintl, long double, (long double)); +#endif + #if GNULIB_TEST_ROUNDF SIGNATURE_CHECK (GNULIB_NAMESPACE::roundf, float, (float)); #endif @@ -204,6 +241,13 @@ SIGNATURE_CHECK (GNULIB_NAMESPACE::round, double, (double)); SIGNATURE_CHECK (GNULIB_NAMESPACE::roundl, long double, (long double)); #endif +#if GNULIB_TEST_SIGNBIT +# ifdef signbit +# error "signbit should not be a macro in C++" +# endif +REAL_FLOATING_CHECK (signbit, int, (float), int, (double), int, (long double)); +#endif + #if GNULIB_TEST_SINL SIGNATURE_CHECK (GNULIB_NAMESPACE::sinl, long double, (long double)); #endif