Fix a warning in last patch.
[gnulib.git] / tests / test-printf-posix.h
index 04d3e55..1b2da47 100644 (file)
 
 /* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
 
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0.  */
+#ifdef __DECC
+static double
+NaN ()
+{
+  static double zero = 0.0;
+  return zero / zero;
+}
+#else
+# define NaN() (0.0 / 0.0)
+#endif
+
 static void
 test_function (int (*my_printf) (const char *, ...))
 {
@@ -47,13 +59,121 @@ test_function (int (*my_printf) (const char *, ...))
   my_printf ("%a %d\n", -1.0 / 0.0, 33, 44, 55);
 
   /* NaN.  */
-  my_printf ("%a %d\n", 0.0 / 0.0, 33, 44, 55);
+  my_printf ("%a %d\n", NaN (), 33, 44, 55);
 
   /* FLAG_ZERO with infinite number.  */
+  /* "0000000inf 33" is not a valid result; see
+     <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
   my_printf ("%010a %d\n", 1.0 / 0.0, 33, 44, 55);
 
   /* FLAG_ZERO with NaN.  */
-  my_printf ("%010a %d\n", 0.0 / 0.0, 33, 44, 55);
+  /* "0000000nan 33" is not a valid result; see
+     <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+  my_printf ("%010a %d\n", NaN (), 33, 44, 55);
+
+  /* Test the support of the %f format directive.  */
+
+  /* A positive number.  */
+  my_printf ("%f %d\n", 12.75, 33, 44, 55);
+
+  /* A larger positive number.  */
+  my_printf ("%f %d\n", 1234567.0, 33, 44, 55);
+
+  /* A negative number.  */
+  my_printf ("%f %d\n", -0.03125, 33, 44, 55);
+
+  /* Positive zero.  */
+  my_printf ("%f %d\n", 0.0, 33, 44, 55);
+
+  /* Negative zero.  */
+  my_printf ("%f %d\n", -0.0, 33, 44, 55);
+
+  /* NaN.  */
+  my_printf ("%f %d\n", NaN (), 33, 44, 55);
+
+  /* FLAG_ZERO.  */
+  my_printf ("%015f %d\n", 1234.0, 33, 44, 55);
+
+  /* Precision.  */
+  my_printf ("%.f %d\n", 1234.0, 33, 44, 55);
+
+  /* A positive number.  */
+  my_printf ("%Lf %d\n", 12.75L, 33, 44, 55);
+
+  /* A larger positive number.  */
+  my_printf ("%Lf %d\n", 1234567.0L, 33, 44, 55);
+
+  /* A negative number.  */
+  my_printf ("%Lf %d\n", -0.03125L, 33, 44, 55);
+
+  /* Positive zero.  */
+  my_printf ("%Lf %d\n", 0.0L, 33, 44, 55);
+
+  /* Negative zero.  */
+  my_printf ("%Lf %d\n", -0.0L, 33, 44, 55);
+
+  { /* NaN.  */
+    static long double zero = 0.0L;
+    my_printf ("%Lf %d\n", zero / zero, 33, 44, 55);
+  }
+
+  /* FLAG_ZERO.  */
+  my_printf ("%015Lf %d\n", 1234.0L, 33, 44, 55);
+
+  /* Precision.  */
+  my_printf ("%.Lf %d\n", 1234.0L, 33, 44, 55);
+
+  /* Test the support of the %F format directive.  */
+
+  /* A positive number.  */
+  my_printf ("%F %d\n", 12.75, 33, 44, 55);
+
+  /* A larger positive number.  */
+  my_printf ("%F %d\n", 1234567.0, 33, 44, 55);
+
+  /* A negative number.  */
+  my_printf ("%F %d\n", -0.03125, 33, 44, 55);
+
+  /* Positive zero.  */
+  my_printf ("%F %d\n", 0.0, 33, 44, 55);
+
+  /* Negative zero.  */
+  my_printf ("%F %d\n", -0.0, 33, 44, 55);
+
+  /* NaN.  */
+  my_printf ("%F %d\n", NaN (), 33, 44, 55);
+
+  /* FLAG_ZERO.  */
+  my_printf ("%015F %d\n", 1234.0, 33, 44, 55);
+
+  /* Precision.  */
+  my_printf ("%.F %d\n", 1234.0, 33, 44, 55);
+
+  /* A positive number.  */
+  my_printf ("%LF %d\n", 12.75L, 33, 44, 55);
+
+  /* A larger positive number.  */
+  my_printf ("%LF %d\n", 1234567.0L, 33, 44, 55);
+
+  /* A negative number.  */
+  my_printf ("%LF %d\n", -0.03125L, 33, 44, 55);
+
+  /* Positive zero.  */
+  my_printf ("%LF %d\n", 0.0L, 33, 44, 55);
+
+  /* Negative zero.  */
+  my_printf ("%LF %d\n", -0.0L, 33, 44, 55);
+
+  { /* NaN.  */
+    static long double zero = 0.0L;
+    my_printf ("%LF %d\n", zero / zero, 33, 44, 55);
+  }
+
+  /* FLAG_ZERO.  */
+  my_printf ("%015LF %d\n", 1234.0L, 33, 44, 55);
+
+  /* Precision.  */
+  my_printf ("%.LF %d\n", 1234.0L, 33, 44, 55);
 
   /* Test the support of the POSIX/XSI format strings with positions.  */