Test files for strfmon.
authorAndreas Jaeger <aj@suse.de>
Thu, 29 Jun 2000 08:46:04 +0000 (08:46 +0000)
committerAndreas Jaeger <aj@suse.de>
Thu, 29 Jun 2000 08:46:04 +0000 (08:46 +0000)
localedata/tests-mbwc/dat_strfmon.c [new file with mode: 0644]
localedata/tests-mbwc/tst_strfmon.c [new file with mode: 0644]

diff --git a/localedata/tests-mbwc/dat_strfmon.c b/localedata/tests-mbwc/dat_strfmon.c
new file mode 100644 (file)
index 0000000..1252ecf
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ *  TEST SUITE FOR MB/WC FUNCTIONS IN CLIBRARY
+ *
+ *      FILE:  dat_strfmon.c
+ *
+ *      STRFMON:  size_t strfmon (char *buf, size_t nbyte, char *fmt, ... );
+ */
+
+/*
+ *  NOTE:
+ *
+ *  The buffer size should be enough to contain a string including a
+ *  null char.
+ *  Returns the number of bytes of the string (NOT including a null char).
+ */
+
+TST_STRFMON tst_strfmon_loc [] = {
+  {
+    { Tstrfmon, TST_LOC_de },
+    {
+      {
+       /* #01 */
+       /*inp*/ { 23, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,0,1,22,                  "123,00 DM % 123,00 DEM"   },
+      },
+      {
+       /* #02 */
+       /*inp*/ { 23, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,0,1,22,                  "123,00 DM % 123,00 DEM"   },
+      },
+      {
+       /* #03 */
+       /*inp*/ { 22, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,E2BIG,1,-1,      ""                                 },
+      },
+      {
+       /* #04 */
+       /*inp*/ { 30, "%n|%i",       1234.561                           },
+       /*exp*/ { 1,0,1,24,                  "1.234,56 DM|1.234,56 DEM" },
+      },
+      {
+       /* #05 */
+       /*inp*/ { 32, "%n|%i",      -1234.561                           },
+       /*exp*/ { 1,0,1,26,                  "-1.234,56 DM|-1.234,56 DEM"},
+      },
+      {
+       /* #06 */
+       /*inp*/ { 32, "%12n|%12i",           1234.561                   },
+       /*exp*/ { 1,0,1,25,                  " 1.234,56 DM|1.234,56 DEM"},
+      },
+      {
+       /* #07 */
+       /*inp*/ { 32, "%12n|%12i",          -1234.561                   },
+       /*exp*/ { 1,0,1,26,                  "-1.234,56 DM|-1.234,56 DEM"},
+      },
+      {
+       /* #08 */
+       /*inp*/ { 32, "%#5n|%#5i",           1234.561                   },
+       /*exp*/ { 1,0,1,28,                  "  1.234,56 DM|  1.234,56 DEM"},
+      },
+      {
+       /* #09 */
+       /*inp*/ { 32, "%#5n|%#5i",          -1234.561                   },
+       /*exp*/ { 1,0,1,28,                  "- 1.234,56 DM|- 1.234,56 DEM"},
+      },
+      {
+       /* #10 */
+       /*inp*/ { 32, "%=*#5n|%=*#5i",   1234.561                       },
+       /*exp*/ { 1,0,1,28,                  " *1.234,56 DM| *1.234,56 DEM"},
+      },
+      {
+       /* #11 */
+       /*inp*/ { 32, "%=0#5n|%=0#5i",  -1234.561                       },
+       /*exp*/ { 1,0,1,28,                  "-01.234,56 DM|-01.234,56 DEM"},
+      },
+      {
+       /* #12 */
+       /*inp*/ { 32, "%^#5n|%^#5i",    -1234.561                       },
+       /*exp*/ { 1,0,1,26,                  "- 1234,56 DM|- 1234,56 DEM"},
+      },
+      {
+       /* #13 */
+       /*inp*/ { 32, "%#5.0n|%#5.0i",   1234.444                       },
+       /*exp*/ { 1,0,1,22,                  "  1.234 DM|  1.234 DEM"   },
+      },
+      {
+       /* #14 */
+       /*inp*/ { 32, "%#5.0n|%#5.4i",  -1234.555                       },
+       /*exp*/ { 1,0,1,27,                  "- 1.235 DM|- 1.234,5550 DEM"},
+      },
+      {
+       /* #15 */
+       /*inp*/ { 32, "%(#5n|%!(#5i",   -1234.561                       },
+       /*exp*/ { 1,0,1,26,                  "( 1.234,56 DM)|( 1.234,56)"},
+      },
+      { is_last: 1 }
+    }
+  },
+  {
+    { Tstrfmon, TST_LOC_enUS },
+    {
+      {
+       /* #01 */
+       /*inp*/ { 22, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,0,1,20,                  "$123.00 % USD 123.00"     },
+      },
+      {
+       /* #02 */
+       /*inp*/ { 21, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,0,1,20,                  "$123.00 % USD 123.00"     },
+      },
+      {
+       /* #03 */
+       /*inp*/ { 20, "%n %% %i",            123.00                     },
+       /*exp*/ { 1,E2BIG,1,-1,      ""                                 },
+      },
+      {
+       /* #04 */
+       /*inp*/ { 30, "%n|%i",       1234.561                           },
+       /*exp*/ { 1,0,1,22,                  "$1,234.56|USD 1,234.56"   },
+      },
+      {
+       /* #05 */
+       /*inp*/ { 32, "%n|%i",      -1234.561                           },
+       /*exp*/ { 1,0,1,24,                  "-$1,234.56|-USD 1,234.56" },
+      },
+      {
+       /* #06 */
+       /*inp*/ { 30, "%12n|%12i",           1234.561                   },
+       /*exp*/ { 1,0,1,25,                  "   $1,234.56|USD 1,234.56"},
+      },
+      {
+       /* #07 */
+       /*inp*/ { 32, "%12n|%12i",          -1234.561                   },
+       /*exp*/ { 1,0,1,26,                  "  -$1,234.56|-USD 1,234.56"},
+      },
+      {
+       /* #08 */
+       /*inp*/ { 32, "%#5n|%#5i",           1234.561                   },
+       /*exp*/ { 1,0,1,26,                  " $ 1,234.56| USD  1,234.56"},
+      },
+      {
+       /* #09 */
+       /*inp*/ { 32, "%#5n|%#5i",          -1234.561                   },
+       /*exp*/ { 1,0,1,26,                  "-$ 1,234.56|-USD  1,234.56"},
+      },
+      {
+       /* #10 */
+       /*inp*/ { 32, "%=*#5n|%=*#5i",   1234.561                       },
+       /*exp*/ { 1,0,1,26,                  " $*1,234.56| USD *1,234.56"},
+      },
+      {
+       /* #11 */
+       /*inp*/ { 32, "%=0#5n|%=0#5i",  -1234.561                       },
+       /*exp*/ { 1,0,1,26,                  "-$01,234.56|-USD 01,234.56"},
+      },
+      {
+       /* #12 */
+       /*inp*/ { 32, "%^#5n|%^#5i",    -1234.561                       },
+       /*exp*/ { 1,0,1,24,                  "-$ 1234.56|-USD  1234.56" },
+      },
+      {
+       /* #13 */
+       /*inp*/ { 32, "%#5.0n|%#5.0i",   1234.444                       },
+       /*exp*/ { 1,0,1,20,                  " $ 1,234| USD  1,234"     },
+      },
+      {
+       /* #14 */
+       /*inp*/ { 32, "%#5.0n|%#5.4i",  -1234.555                       },
+       /*exp*/ { 1,0,1,25,                  "-$ 1,235|-USD  1,234.5550"},
+      },
+      {
+       /* #15 */
+       /*inp*/ { 32, "%(#5n|%!(#5i",   -1234.561                       },
+       /*exp*/ { 1,0,1,24,                  "($ 1,234.56)|( 1,234.56)" },
+      },
+      { is_last: 1 }
+    }
+  },
+  {
+    { Tstrfmon, TST_LOC_eucJP },
+    {
+      {
+       /* #01 */
+       /*inp*/ { 17, "%n %% %i",        123.00                            },
+       /*exp*/ { 1,0,1,15,              "\241\357123 % JPY 123"           },
+      },
+      {
+       /* #02 */
+       /*inp*/ { 16, "%n %% %i",        123.00                            },
+       /*exp*/ { 1,0,1,15,              "\241\357123 % JPY 123"           },
+      },
+      {
+       /* #03 */
+       /*inp*/ { 15, "%n %% %i",        123.00                            },
+       /*exp*/ { 1,E2BIG,1,-1,          ""                                },
+      },
+      {
+       /* #04 */
+       /*inp*/ { 30, "%n|%i",           1234.561                          },
+       /*exp*/ { 1,0,1,17,              "\241\3571,235|JPY 1,235"         },
+      },
+      {
+       /* #05 */
+       /*inp*/ { 32, "%n|%i",          -1234.561                          },
+       /*exp*/ { 1,0,1,19,              "\241\357-1,235|JPY -1,235"       },
+      },
+      {
+       /* #06 */
+       /*inp*/ { 32, "%12n|%12i",       1234.561                          },
+       /*exp*/ { 1,0,1,25,              "     \241\3571,235|   JPY 1,235" },
+      },
+      {
+       /* #07 */
+       /*inp*/ { 32, "%12n|%12i",      -1234.561                          },
+       /*exp*/ { 1,0,1,25,              "    \241\357-1,235|  JPY -1,235" },
+      },
+      {
+       /* #08 */
+       /*inp*/ { 32, "%#5n|%#5i",       1234.561                          },
+       /*exp*/ { 1,0,1,21,              " \241\357 1,235| JPY  1,235"     },
+      },
+      {
+       /* #09 */
+       /*inp*/ { 32, "%#5n|%#5i",      -1234.561                          },
+       /*exp*/ { 1,0,1,21,              "\241\357- 1,235|JPY - 1,235"     },
+      },
+      {
+       /* #10 */
+       /*inp*/ { 32, "%=*#5n|%=*#5i",   1234.561                          },
+       /*exp*/ { 1,0,1,21,              " \241\357*1,235| JPY *1,235"     },
+      },
+      {
+       /* #11 */
+       /*inp*/ { 32, "%=0#5n|%=0#5i",  -1234.561                          },
+       /*exp*/ { 1,0,1,21,              "\241\357-01,235|JPY -01,235"     },
+      },
+      {
+       /* #12 */
+       /*inp*/ { 32, "%^#5n|%^#5i",    -1234.561                          },
+       /*exp*/ { 1,0,1,19,              "\241\357- 1235|JPY - 1235"       },
+      },
+      {
+       /* #13 */
+       /*inp*/ { 32, "%#5.0n|%#5.0i",   1234.444                          },
+       /*exp*/ { 1,0,1,21,              " \241\357 1,234| JPY  1,234"     },
+      },
+      {
+       /* #14 */
+       /*inp*/ { 32, "%#5.0n|%#5.4i",  -1234.555                          },
+       /*exp*/ { 1,0,1,26,              "\241\357- 1,235|JPY - 1,234.5550"},
+      },
+      {
+       /* #15 */
+       /*inp*/ { 32, "%(#5n|%!(#5i",   -1234.561                          },
+       /*exp*/ { 1,0,1,19,              "(\241\357 1,235)|( 1,235)"       },
+      },
+      { is_last: 1 }
+    }
+  },
+  {
+    { Tstrfmon, TST_LOC_end }
+  }
+};
diff --git a/localedata/tests-mbwc/tst_strfmon.c b/localedata/tests-mbwc/tst_strfmon.c
new file mode 100644 (file)
index 0000000..8413f2c
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+  STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...)
+*/
+
+#define TST_FUNCTION strfmon
+
+#include "tsp_common.c"
+#include "dat_strfmon.c"
+#include <monetary.h>
+
+int
+tst_strfmon (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (size_t);
+  char buf[MONSIZE], *mon;
+  size_t nbt;
+  char *fmt;
+  double val;
+
+  TST_DO_TEST (strfmon)
+  {
+    TST_HEAD_LOCALE (strfmon, S_STRFMON);
+    TST_DO_REC (strfmon)
+    {
+      TST_GET_ERRET (strfmon);
+      nbt = TST_INPUT (strfmon).nbytes;
+      fmt = TST_INPUT (strfmon).fmt;
+      val = TST_INPUT (strfmon).val;
+      memset (buf, 0, MONSIZE);
+
+      TST_CLEAR_ERRNO;
+      ret = strfmon (buf, nbt, fmt, val, val, val);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)           /* seems fprintf doesn't update the errno */
+       {
+         fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1);
+         fprintf (stdout, "      : err = %d | %s\n", errno_save,
+                  strerror (errno));
+         fprintf (stdout, "      : ret = %d; \t fmt = |%s|\n", ret, fmt);
+         fprintf (stdout, "      : buf = |%s|\n\n", buf);
+       }
+
+      TST_IF_RETURN (S_STRFMON)
+      {
+      };
+      if (errno != 0 || ret == -1)
+       {
+         continue;
+       }
+
+      mon = TST_EXPECT (strfmon).mon;
+
+      if (!strcmp (buf, mon))
+       {
+         Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED);
+       }
+      else
+       {
+         err_count++;
+         Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is "
+                 "different from an expected result");
+       }
+    }
+  }
+
+  return err_count;
+}