Blame stdlib/tst-strtod6.c

Packit 6c4009
#include <math.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <stdlib.h>
Packit 6c4009
#include <string.h>
Packit 6c4009
Packit 6c4009
#include "tst-strtod.h"
Packit 6c4009
Packit 6c4009
#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF)	  \
Packit 6c4009
static int						  \
Packit 6c4009
test_strto ## FSUF (const char str[])			  \
Packit 6c4009
{							  \
Packit 6c4009
  char *endp;						  \
Packit 6c4009
  int result = 0;					  \
Packit 6c4009
  puts (str);						  \
Packit 6c4009
  FTYPE d = strto ## FSUF (str, &endp);			  \
Packit 6c4009
  if (!isnan (d))					  \
Packit 6c4009
    {							  \
Packit 6c4009
      puts ("strto" #FSUF " did not return NAN");	  \
Packit 6c4009
      result = 1;					  \
Packit 6c4009
    }							  \
Packit 6c4009
  if (issignaling (d))					  \
Packit 6c4009
    {							  \
Packit 6c4009
      puts ("strto" #FSUF " returned a sNAN");		  \
Packit 6c4009
      result = 1;					  \
Packit 6c4009
    }							  \
Packit 6c4009
  if (strcmp (endp, "something") != 0)			  \
Packit 6c4009
    {							  \
Packit 6c4009
      puts ("strto" #FSUF " set incorrect end pointer");  \
Packit 6c4009
      result = 1;					  \
Packit 6c4009
    }							  \
Packit 6c4009
  return result;					  \
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
GEN_TEST_STRTOD_FOREACH (TEST_STRTOD);
Packit 6c4009
Packit 6c4009
static int
Packit 6c4009
do_test (void)
Packit 6c4009
{
Packit 6c4009
  int result = 0;
Packit 6c4009
Packit 6c4009
  result |= STRTOD_TEST_FOREACH (test_strto, "NaN(blabla)something");
Packit 6c4009
  result |= STRTOD_TEST_FOREACH (test_strto, "NaN(1234)something");
Packit 6c4009
  /* UINT32_MAX.  */
Packit 6c4009
  result |= STRTOD_TEST_FOREACH (test_strto, "NaN(4294967295)something");
Packit 6c4009
  /* UINT64_MAX.  */
Packit 6c4009
  result |= STRTOD_TEST_FOREACH (test_strto,
Packit 6c4009
				 "NaN(18446744073709551615)something");
Packit 6c4009
  /* The case of zero is special in that "something" has to be done to make the
Packit 6c4009
     mantissa different from zero, which would mean infinity instead of
Packit 6c4009
     NaN.  */
Packit 6c4009
  result |= STRTOD_TEST_FOREACH (test_strto, "NaN(0)something");
Packit 6c4009
Packit 6c4009
  return result;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
#define TEST_FUNCTION do_test ()
Packit 6c4009
#include "../test-skeleton.c"