I'm pretty sure the error code is returned via 'errno', not as a return value. Re-read the specification again.
On Sat, Aug 26, 2017 at 3:38 PM, Joel Sherrill <j...@rtems.org> wrote: > > > On Fri, Aug 25, 2017 at 9:05 AM, Gedare Bloom <ged...@rtems.org> wrote: >> >> Merge this with the previous commits to only provide 1 single commit >> adding this new test. >> >> On Wed, Aug 23, 2017 at 3:35 PM, Aditya Upadhyay <aadit0...@gmail.com> >> wrote: >> > --- >> > testsuites/psxtests/Makefile.am | 5 -- >> > testsuites/psxtests/configure.ac | 5 -- >> > testsuites/psxtests/psxinttypes01/init.c | 66 >> > +++++++++++++++++++--- >> > .../psxtests/psxinttypes01/psxinttypes01.scn | 8 +++ >> > 4 files changed, 66 insertions(+), 18 deletions(-) >> > >> > diff --git a/testsuites/psxtests/Makefile.am >> > b/testsuites/psxtests/Makefile.am >> > index cda0061..5d3d41d 100644 >> > --- a/testsuites/psxtests/Makefile.am >> > +++ b/testsuites/psxtests/Makefile.am >> > @@ -59,11 +59,6 @@ _SUBDIRS += psxintrcritical01 >> > _SUBDIRS += psxitimer >> > endif >> > _SUBDIRS += psxinttypes01 >> > -_SUBDIRS += psxinttypes02 >> > -_SUBDIRS += psxinttypes03 >> > -_SUBDIRS += psxinttypes04 >> > -_SUBDIRS += psxinttypes05 >> > -_SUBDIRS += psxinttypes06 >> > _SUBDIRS += psxkey01 >> > _SUBDIRS += psxkey02 >> > _SUBDIRS += psxkey03 >> > diff --git a/testsuites/psxtests/configure.ac >> > b/testsuites/psxtests/configure.ac >> > index dd5f23f..b2b00b7 100644 >> > --- a/testsuites/psxtests/configure.ac >> > +++ b/testsuites/psxtests/configure.ac >> > @@ -163,11 +163,6 @@ psximfs01/Makefile >> > psximfs02/Makefile >> > psxintrcritical01/Makefile >> > psxinttypes01/Makefile >> > -psxinttypes02/Makefile >> > -psxinttypes03/Makefile >> > -psxinttypes04/Makefile >> > -psxinttypes05/Makefile >> > -psxinttypes06/Makefile >> > psxitimer/Makefile >> > psxkey01/Makefile >> > psxkey02/Makefile >> > diff --git a/testsuites/psxtests/psxinttypes01/init.c >> > b/testsuites/psxtests/psxinttypes01/init.c >> > index ad41a6d..72f036a 100644 >> > --- a/testsuites/psxtests/psxinttypes01/init.c >> > +++ b/testsuites/psxtests/psxinttypes01/init.c >> > @@ -1,5 +1,6 @@ >> > /* >> > - * This is the test for inttypes imaxabs method. >> > + * This is the test for inttypes library. It covers these functions : >> > + * imaxabs(), imaxdiv(), strtoimax(), strtoumax(), wcstoimax(), >> > wcstoumax(). >> > */ >> > >> > #ifdef HAVE_CONFIG_H >> > @@ -11,8 +12,6 @@ >> > #include <rtems/test.h> >> > #include <stdlib.h> >> > #include <stdio.h> >> > -#include <bsp.h> >> > -#include <stdint.h> >> > #include <errno.h> >> > #include <tmacros.h> >> > >> > @@ -32,11 +31,63 @@ rtems_task Init( >> > { >> > rtems_print_printer_printf(&rtems_test_printer); >> > rtems_test_begin(); >> > - >> > - intmax_t a = -1234; >> > >> > - intmax_t b = imaxabs(a); >> > - printf( "imaxabs_value = %jd\n", b); >> > + char* endptr, *nptr; >> > + >> > + uintmax_t j, k; >> > + >> > + int base = 10; >> > + rtems_test_assert (base == EINVAL); >> I don't know why this is being asserted. >> >> > + >> > + wchar_t *nptr1, *endptr1; >> > + >> > + intmax_t m, n; >> > + >> > + nptr1 = L"10110134932"; >> > + nptr = "20690239864abc"; >> > + >> > + /* Test for wcstoimax */ >> > + >> > + m = wcstoimax(nptr1, &endptr1, base); >> > + rtems_test_assert (m == ERANGE); >> > + rtems_test_assert (m == EINVAL); >> > + >> I don't understand these two asserts, Perhaps you meant to check errno? >> >> Is it possible to check the correctness of the return value 'm' in an >> rtems_test_assert() to automate verification of the return? >> > > I don't see how both of those assert's would ever pass. m cannot > equal both those values. Is it "m == ERANGE || m == EINVAL"? > Don't we know the single error case it is trying to exercise? > >> >> These same comments apply to the other tests below. >> >> You should also add some other boundary condition tests, e.g., NULL >> endptr, base != 10, and some invalid cases too. >> >> > + printf( "wcstoimax = %jd\n", m ); >> > + >> > + /* test for strtoumax */ >> > + >> > + j = strtoumax (nptr, &endptr, base); >> > + rtems_test_assert (j == ERANGE); >> > + rtems_test_assert (j == EINVAL); >> > + >> > + printf( "strtoumax = %ju ( base %d )\n", j, base ); >> > + printf( "Stopped scan at %s\n\n", endptr ); >> > + >> > + /*test for wcstoumax */ >> > + >> > + k = wcstoumax (nptr1, &endptr1, base); >> > + rtems_test_assert (k == ERANGE); >> > + rtems_test_assert (k == EINVAL); >> > + >> > + printf( "wcstoumax = %ju\n", k ); >> > + >> > + /*Test for imaxdiv */ >> > + >> > + imaxdiv_t retrival = imaxdiv ( 27, 4 ); >> > + printf( "imax div value = %jd\n", retrival.rem ); >> > + >> > + /*Test for imaxabs */ >> > + >> > + printf( "imaxabs_value = %jd\n", imaxabs (-1234)); >> > + >> > + /*Test for strtoimax */ >> > + >> > + n = strtoimax ("11111111", &endptr, 2); >> > + rtems_test_assert (n == ERANGE); >> > + rtems_test_assert (n == EINVAL); >> > + >> > + printf( "strtoimax value = %jd\n", n); >> > + >> > >> > rtems_test_end(); >> > exit( 0 ); >> > @@ -55,4 +106,3 @@ rtems_task Init( >> > >> > #define CONFIGURE_INIT >> > #include <rtems/confdefs.h> >> > - >> > diff --git a/testsuites/psxtests/psxinttypes01/psxinttypes01.scn >> > b/testsuites/psxtests/psxinttypes01/psxinttypes01.scn >> > index 15051e1..47a5416 100644 >> > --- a/testsuites/psxtests/psxinttypes01/psxinttypes01.scn >> > +++ b/testsuites/psxtests/psxinttypes01/psxinttypes01.scn >> > @@ -1,3 +1,11 @@ >> > *** BEGIN OF TEST PSXINTTYPE 01 *** >> > +wcstoimax = 10110134932 >> > +strtoumax = 20690239864 ( base 10 ) >> > +Stopped scan at abc >> > + >> > +wcstoumax = 10110134932 >> > +imax div value = 3 >> > imaxabs_value = 1234 >> > +strtoimax value = 255 >> > *** END OF TEST PSXINTTYPE 01 *** >> > + >> > -- >> > 2.7.4 >> > >> _______________________________________________ >> devel mailing list >> devel@rtems.org >> http://lists.rtems.org/mailman/listinfo/devel > > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel