Fix various bugs. Comment out unresolved issues.
[kopensolaris-gnu/glibc.git] / localedata / tests-mbwc / tst_wcstod.c
1 /*
2   WCSTOD: double wcstod (wchar_t *np, const wchar_t **endp);
3 */
4
5 #define TST_FUNCTION wcstod
6
7 #include "tsp_common.c"
8 #include "dat_wcstod.c"
9
10 int
11 tst_wcstod (FILE * fp, int debug_flg)
12 {
13   TST_DECL_VARS (double);
14   wchar_t *np, *endp, fwc;
15   double val;
16
17   TST_DO_TEST (wcstod)
18   {
19     TST_HEAD_LOCALE (wcstod, S_WCSTOD);
20     TST_DO_REC (wcstod)
21     {
22       TST_GET_ERRET (wcstod);
23       np = TST_INPUT (wcstod).np;
24
25       TST_CLEAR_ERRNO;
26       ret = wcstod (np, &endp);
27       TST_SAVE_ERRNO;
28
29       if (debug_flg)
30         {
31           fprintf (stdout, "wcstod() [ %s : %d ] ret  = %f\n", locale,
32                    rec + 1, ret);
33           fprintf (stdout, "                      *endp = 0x%lx\n", *endp);
34         }
35
36       TST_IF_RETURN (S_WCSTOD)
37       {
38         if (ret != 0)
39           {
40             val = ret - TST_EXPECT (wcstod).val;
41             if (TST_ABS (val) < TST_DBL_EPS)
42               {
43                 Result (C_SUCCESS, S_WCSTOD, CASE_3, MS_PASSED);
44               }
45             else
46               {
47                 err_count++;
48                 Result (C_FAILURE, S_WCSTOD, CASE_3, "return value is wrong");
49               }
50           }
51       }
52
53       fwc = TST_EXPECT (wcstod).fwc;
54
55       if (fwc == *endp)
56         {
57           Result (C_SUCCESS, S_WCSTOD, CASE_4, MS_PASSED);
58         }
59       else
60         {
61           err_count++;
62           Result (C_FAILURE, S_WCSTOD, CASE_4, "a final wc is wrong.");
63         }
64     }
65   }
66
67   return err_count;
68 }