check: Make the level unit test succeed on Solaris 10
authorJan Schmidt <jan.schmidt@sun.com>
Thu, 8 Oct 2009 23:14:07 +0000 (00:14 +0100)
committerJan Schmidt <jan.schmidt@sun.com>
Thu, 8 Oct 2009 23:14:07 +0000 (00:14 +0100)
Add a configure check for functional isinf() and fpclass(), and
use fpclass() where possible when isinf() is not available.

configure.ac
tests/check/elements/level.c

index e764914..3137875 100644 (file)
@@ -175,9 +175,17 @@ dnl *** checks for library functions ***
 
 LIBS_SAVE=$LIBS
 LIBS="$LIBS $LIBM"
-AC_CHECK_FUNCS(rint sinh cosh asinh)
+AC_CHECK_FUNCS(rint sinh cosh asinh fpclass)
 LIBS=$LIBS_SAVE
 
+dnl Check whether isinf() is defined by math.h
+AC_CACHE_CHECK([for isinf], ac_cv_have_isinf,
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; int i=isinf(f)]])],[ac_cv_have_isinf="yes"],[ac_cv_have_isinf="no"]))
+if test "$ac_cv_have_isinf" = "yes"
+then
+    AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have the `isinf' function.])
+fi
+
 dnl Check for mmap (needed by electricfence plugin)
 AC_FUNC_MMAP
 AM_CONDITIONAL(GST_HAVE_MMAP, test "x$ac_cv_func_mmap_fixed_mapped" == "xyes")
index 558a1c6..e37c022 100644 (file)
@@ -256,7 +256,11 @@ GST_START_TEST (test_int16_panned)
     value = gst_value_list_get_value (list, 0);
     dB = g_value_get_double (value);
     GST_DEBUG ("%s[0] is %lf", fields[j], dB);
-    fail_if (!isinf (dB));
+#ifdef HAVE_ISINF
+    fail_unless (isinf (dB));
+#elif HAVE_FPCLASS
+    fail_unless (fpclass (dB) == FP_NINF);
+#endif
   }
   /* block wave of half amplitude has -5.94 dB for rms, peak and decay */
   for (j = 0; j < 3; ++j) {