[PATCH v2] Testsuite for inttypes methods
Gedare Bloom
gedare at rtems.org
Fri Aug 25 14:05:28 UTC 2017
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?
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
>
More information about the devel
mailing list