(root)/
glibc-2.38/
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",
      34  		   (unsigned long int) *endp);
      35  	}
      36  
      37        TST_IF_RETURN (S_WCSTOD)
      38        {
      39  	if (ret != 0)
      40  	  {
      41  	    val = ret - TST_EXPECT (wcstod).val;
      42  	    if (TST_ABS (val) < TST_DBL_EPS)
      43  	      {
      44  		Result (C_SUCCESS, S_WCSTOD, CASE_3, MS_PASSED);
      45  	      }
      46  	    else
      47  	      {
      48  		err_count++;
      49  		Result (C_FAILURE, S_WCSTOD, CASE_3, "return value is wrong");
      50  	      }
      51  	  }
      52        }
      53  
      54        fwc = TST_EXPECT (wcstod).fwc;
      55  
      56        if (fwc == *endp)
      57  	{
      58  	  Result (C_SUCCESS, S_WCSTOD, CASE_4, MS_PASSED);
      59  	}
      60        else
      61  	{
      62  	  err_count++;
      63  	  Result (C_FAILURE, S_WCSTOD, CASE_4, "a final wc is wrong.");
      64  	}
      65      }
      66    }
      67  
      68    return err_count;
      69  }