]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/l4re-core/uclibc/lib/contrib/uclibc/test/locale-mbwc/tst_wcstod.c
Update
[l4.git] / l4 / pkg / l4re-core / uclibc / lib / contrib / uclibc / test / locale-mbwc / tst_wcstod.c
diff --git a/l4/pkg/l4re-core/uclibc/lib/contrib/uclibc/test/locale-mbwc/tst_wcstod.c b/l4/pkg/l4re-core/uclibc/lib/contrib/uclibc/test/locale-mbwc/tst_wcstod.c
new file mode 100644 (file)
index 0000000..1648d35
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+  WCSTOD: double wcstod (wchar_t *np, const wchar_t **endp);
+*/
+
+#define TST_FUNCTION wcstod
+
+#include "tsp_common.c"
+#include "dat_wcstod.c"
+
+int
+tst_wcstod (FILE * fp, int debug_flg)
+{
+  TST_DECL_VARS (double);
+  wchar_t *np, *endp, fwc;
+  double val;
+
+  TST_DO_TEST (wcstod)
+  {
+    TST_HEAD_LOCALE (wcstod, S_WCSTOD);
+    TST_DO_REC (wcstod)
+    {
+      TST_GET_ERRET (wcstod);
+      np = TST_INPUT (wcstod).np;
+
+      TST_CLEAR_ERRNO;
+      ret = wcstod (np, &endp);
+      TST_SAVE_ERRNO;
+
+      if (debug_flg)
+       {
+         fprintf (stdout, "wcstod() [ %s : %d ] ret  = %f\n", locale,
+                  rec + 1, ret);
+         fprintf (stdout, "                      *endp = 0x%lx\n",
+                  (unsigned long int) *endp);
+       }
+
+      TST_IF_RETURN (S_WCSTOD)
+      {
+       if (ret != 0)
+         {
+           val = ret - TST_EXPECT (wcstod).val;
+           if (TST_ABS (val) < TST_DBL_EPS)
+             {
+               Result (C_SUCCESS, S_WCSTOD, CASE_3, MS_PASSED);
+             }
+           else
+             {
+               err_count++;
+               Result (C_FAILURE, S_WCSTOD, CASE_3, "return value is wrong");
+             }
+         }
+      }
+
+      fwc = TST_EXPECT (wcstod).fwc;
+
+      if (fwc == *endp)
+       {
+         Result (C_SUCCESS, S_WCSTOD, CASE_4, MS_PASSED);
+       }
+      else
+       {
+         err_count++;
+         Result (C_FAILURE, S_WCSTOD, CASE_4, "a final wc is wrong.");
+       }
+    }
+  }
+
+  return err_count;
+}