Move to here from test-fprintf-posix.out.
[gnulib.git] / tests / test-vasprintf-posix.c
index 40798ea..ca9dbab 100644 (file)
@@ -818,7 +818,67 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
-  { /* FLAG_ZERO.  */
+  { /* Width.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%10f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "  1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_LEFT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%-10f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "1.750000   33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_SHOWSIGN.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%+f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "+1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_SPACE.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "% f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, " 1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ALT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%#f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ALT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%#.f %d", 1.75, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "2. 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ZERO with finite number.  */
     char *result;
     int retval =
       my_asprintf (&result, "%015f %d", 1234.0, 33, 44, 55);
@@ -839,6 +899,16 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
+  { /* FLAG_ZERO with NaN.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%015f %d", NaN (), 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "            nan 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
   { /* Precision.  */
     char *result;
     int retval =
@@ -932,7 +1002,67 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
-  { /* FLAG_ZERO.  */
+  { /* Width.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%10Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "  1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_LEFT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%-10Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "1.750000   33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_SHOWSIGN.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%+Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "+1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_SPACE.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "% Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, " 1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ALT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%#Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "1.750000 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ALT.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%#.Lf %d", 1.75L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "2. 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
+  { /* FLAG_ZERO with finite number.  */
     char *result;
     int retval =
       my_asprintf (&result, "%015Lf %d", 1234.0L, 33, 44, 55);
@@ -953,6 +1083,17 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
+  { /* FLAG_ZERO with NaN.  */
+    static long double zero = 0.0L;
+    char *result;
+    int retval =
+      my_asprintf (&result, "%015Lf %d", zero / zero, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "            nan 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
   { /* Precision.  */
     char *result;
     int retval =
@@ -1217,6 +1358,18 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     ASSERT (retval == strlen (result));
     free (result);
   }
+
+  /* Test the support of the grouping flag.  */
+
+  {
+    char *result;
+    int retval =
+      my_asprintf (&result, "%'d %d", 1234567, 99);
+    ASSERT (result != NULL);
+    ASSERT (result[strlen (result) - 1] == '9');
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
 }
 
 static int