[PATCH v2] Testsuite for inttypes methods

Joel Sherrill joel at rtems.org
Sat Aug 26 19:38:20 UTC 2017


On Fri, Aug 25, 2017 at 9:05 AM, Gedare Bloom <gedare at 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 <aadit0402 at 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 at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20170826/56e5ce10/attachment-0002.html>


More information about the devel mailing list