[PATCH] Implement POSIX API Signature Compliance Tests for inttypes.h

Joel Sherrill joel at rtems.org
Fri Dec 7 04:14:51 UTC 2018


Just pushed this. Thanks.

On Thu, Dec 6, 2018 at 3:27 PM Marçal Comajoan Cara <mcomajoancara at gmail.com>
wrote:

> This work was part of GCI 2018
> ---
>  testsuites/psxtests/Makefile.am               |  9 ++++-
>  .../psxtests/psxhdrs/inttypes/imaxabs.c       | 38 ++++++++++++++++++
>  .../psxtests/psxhdrs/inttypes/imaxdiv.c       | 39 ++++++++++++++++++
>  .../psxtests/psxhdrs/inttypes/strtoimax.c     | 39 ++++++++++++++++++
>  .../psxtests/psxhdrs/inttypes/strtoumax.c     | 39 ++++++++++++++++++
>  .../psxtests/psxhdrs/inttypes/wcstoimax.c     | 40 +++++++++++++++++++
>  .../psxtests/psxhdrs/inttypes/wcstoumax.c     | 40 +++++++++++++++++++
>  7 files changed, 243 insertions(+), 1 deletion(-)
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/imaxabs.c
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/imaxdiv.c
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/strtoimax.c
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/strtoumax.c
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/wcstoimax.c
>  create mode 100644 testsuites/psxtests/psxhdrs/inttypes/wcstoumax.c
>
> diff --git a/testsuites/psxtests/Makefile.am
> b/testsuites/psxtests/Makefile.am
> index 4feaa8d68a..f5359d8b19 100644
> --- a/testsuites/psxtests/Makefile.am
> +++ b/testsuites/psxtests/Makefile.am
> @@ -1573,7 +1573,14 @@ lib_a_SOURCES = psxhdrs/devctl/posix_devctl.c \
>         psxhdrs/wctype/wctrans.c \
>         psxhdrs/wctype/wctrans_l.c \
>         psxhdrs/wctype/wctype.c \
> -       psxhdrs/wctype/wctype_l.c
> +       psxhdrs/wctype/wctype_l.c \
> +       psxhdrs/inttypes/imaxabs.c \
> +       psxhdrs/inttypes/imaxdiv.c \
> +       psxhdrs/inttypes/strtoimax.c \
> +       psxhdrs/inttypes/strtoumax.c \
> +       psxhdrs/inttypes/wcstoimax.c \
> +       psxhdrs/inttypes/wcstoumax.c
> +
>
>  ## Not supported by RTEMS, but POSIX API Compliance tests exist.
>  ## lib_a_SOURCES += psxhdrs/ulimit/ulimit.c
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/imaxabs.c
> b/testsuites/psxtests/psxhdrs/inttypes/imaxabs.c
> new file mode 100644
> index 0000000000..df5c244034
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/imaxabs.c
> @@ -0,0 +1,38 @@
> +/**
> + *  @file
> + *  @brief imaxabs() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  intmax_t n = -42;
> +  intmax_t result;
> +
> +  result = imaxabs( n );
> +
> +  return ( result == 42 );
> +}
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/imaxdiv.c
> b/testsuites/psxtests/psxhdrs/inttypes/imaxdiv.c
> new file mode 100644
> index 0000000000..3538fef12b
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/imaxdiv.c
> @@ -0,0 +1,39 @@
> +/**
> + *  @file
> + *  @brief imaxdiv() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  intmax_t n = 42;
> +  intmax_t denom = 5;
> +  imaxdiv_t result;
> +
> +  result = imaxdiv( n, denom );
> +
> +  return ( result.quot == 8 && result.rem == 2 );
> +}
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/strtoimax.c
> b/testsuites/psxtests/psxhdrs/inttypes/strtoimax.c
> new file mode 100644
> index 0000000000..1544bdcb29
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/strtoimax.c
> @@ -0,0 +1,39 @@
> +/**
> + *  @file
> + *  @brief strtoimax() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  char *n = "-42";
> +  intmax_t result;
> +  char *endptr;
> +
> +  result = strtoimax( n, &endptr, 10 );
> +
> +  return ( result == -42 );
> +}
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/strtoumax.c
> b/testsuites/psxtests/psxhdrs/inttypes/strtoumax.c
> new file mode 100644
> index 0000000000..a8cd3137c8
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/strtoumax.c
> @@ -0,0 +1,39 @@
> +/**
> + *  @file
> + *  @brief strtoumax() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  char *n = "42";
> +  uintmax_t result;
> +  char *endptr;
> +
> +  result = strtoumax( n, &endptr, 10 );
> +
> +  return ( result == 42 );
> +}
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/wcstoimax.c
> b/testsuites/psxtests/psxhdrs/inttypes/wcstoimax.c
> new file mode 100644
> index 0000000000..e7af7ba9a2
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/wcstoimax.c
> @@ -0,0 +1,40 @@
> +/**
> + *  @file
> + *  @brief wcstoimax() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <stddef.h>
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  wchar_t *n = L"-42";
> +  intmax_t result;
> +  wchar_t *endptr;
> +
> +  result = wcstoimax( n, &endptr, 10 );
> +
> +  return ( result == -42 );
> +}
> diff --git a/testsuites/psxtests/psxhdrs/inttypes/wcstoumax.c
> b/testsuites/psxtests/psxhdrs/inttypes/wcstoumax.c
> new file mode 100644
> index 0000000000..763cd9bfc5
> --- /dev/null
> +++ b/testsuites/psxtests/psxhdrs/inttypes/wcstoumax.c
> @@ -0,0 +1,40 @@
> +/**
> + *  @file
> + *  @brief wcstoumax() API Conformance Test
> + */
> +
> +/*
> + *  COPYRIGHT (c) 2018.
> + *  Marçal Comajoan Cara
> + *
> + *  Permission to use, copy, modify, and/or distribute this software
> + *  for any purpose with or without fee is hereby granted.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> AUTHOR
> + *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
> + *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
> + *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
> + *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
> SOFTWARE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <stddef.h>
> +#include <inttypes.h>
> +
> +int test( void );
> +
> +int test( void )
> +{
> +  wchar_t *n = L"42";
> +  uintmax_t result;
> +  wchar_t *endptr;
> +
> +  result = wcstoumax( n, &endptr, 10 );
> +
> +  return ( result == 42 );
> +}
> --
> 2.19.2
>
> _______________________________________________
> 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/20181206/b957558c/attachment-0002.html>


More information about the devel mailing list