| /* |
| 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; |
| } |