psxtests: Add psxinttypes01 for <inttypes.h> methods

This commit is contained in:
Vaibhav Gupta
2019-06-14 00:59:24 +05:30
committed by Joel Sherrill
parent 373cd1c545
commit d9fcb22a61
5 changed files with 327 additions and 0 deletions

View File

@@ -523,6 +523,13 @@ psxintrcritical01_CPPFLAGS = $(AM_CPPFLAGS) \
endif
endif
if TEST_psxinttypes01
psx_tests += psxinttypes01
psxinttypes01_SOURCES = psxinttypes01/init.c
psxinttypes01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxinttypes01) \
$(support_includes)
endif
if HAS_POSIX
if TEST_psxitimer
psx_tests += psxitimer

View File

@@ -91,6 +91,7 @@ RTEMS_TEST_CHECK([psxid01])
RTEMS_TEST_CHECK([psximfs01])
RTEMS_TEST_CHECK([psximfs02])
RTEMS_TEST_CHECK([psxintrcritical01])
RTEMS_TEST_CHECK([psxinttypes01])
RTEMS_TEST_CHECK([psxitimer])
RTEMS_TEST_CHECK([psxkey01])
RTEMS_TEST_CHECK([psxkey02])

View File

@@ -0,0 +1,233 @@
/**
* @file
* @brief Test suite for inttypes.h methods
*/
/*
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019, Aditya Upadhyay and Vaibhav Gupta
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <rtems/test.h>
#include <inttypes.h>
#include <stdio.h>
#include <errno.h>
#include <tmacros.h>
#include <stdint.h>
#include <stddef.h>
const char rtems_test_name[] = "PSXINTTYPE 01";
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument ignored);
rtems_task Init(rtems_task_argument ignored)
{
int base = 10;
int invalid_base = 40;
char *nptr1_p = "123abc";
char *nptr1_p_errange = "9999999999999999999999";
char *nptr1_n = "-123abc";
char *nptr1_n_errange = "-9999999999999999999999";
char *endptr1 = NULL;
wchar_t *nptr2_p = L"123junk";
wchar_t *nptr2_p_errange = L"9999999999999999999999";
wchar_t *nptr2_n = L"-123junk";
wchar_t *nptr2_n_errange = L"-9999999999999999999999";
wchar_t *endptr2 = NULL;
intmax_t result_strtoimax;
uintmax_t result_strtoumax;
TEST_BEGIN();
/* Test for strtoimax */
puts( "\nstrtoimax Testcases...." );
puts( "Valid Inputs - Positive Number" );
result_strtoimax = strtoimax( nptr1_p, &endptr1, base );
rtems_test_assert( result_strtoimax == 123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr1 == ( nptr1_p + 3 ) );
puts( "Valid Inputs - Negative Number" );
result_strtoimax = strtoimax( nptr1_n, &endptr1, base );
rtems_test_assert( result_strtoimax == -123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr1 == ( nptr1_n + 4 ) );
puts( "Valid Input - Positive Number - Number out of Range" );
result_strtoimax = strtoimax( nptr1_p_errange, &endptr1, base );
rtems_test_assert( result_strtoimax == INTMAX_MAX );
rtems_test_assert( errno == ERANGE );
puts( "Valid Input - Negative Number - Number out of Range" );
result_strtoimax = strtoimax( nptr1_n_errange, &endptr1, base );
rtems_test_assert( result_strtoimax == INTMAX_MIN );
rtems_test_assert( errno == ERANGE );
puts( "Invalid Input - Send NULL Pointer" );
result_strtoimax = strtoimax( NULL, &endptr1, base );
rtems_test_assert( result_strtoimax == 0 );
rtems_test_assert( errno == EINVAL );
puts( "Invalid Input - Invalid base - Use base = 40" );
result_strtoimax = strtoimax( nptr1_p, &endptr1, invalid_base );
rtems_test_assert( result_strtoimax == 0 );
rtems_test_assert( errno == EINVAL );
/* Test for strtoumax */
puts( "\nstrtoumax Testcases...." );
puts( "Valid Inputs - Positive Number" );
result_strtoumax = strtoumax( nptr1_p, &endptr1, base );
rtems_test_assert( result_strtoumax ==123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr1 == ( nptr1_p + 3 ) );
puts( "Valid Inputs - Negative Number" );
result_strtoumax = strtoumax( nptr1_n, &endptr1, base );
rtems_test_assert( result_strtoumax != 0 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr1 == ( nptr1_n + 4 ) );
puts( "Valid Input - Positive Number - Number out of Range" );
result_strtoumax = strtoumax( nptr1_p_errange, &endptr1, base );
rtems_test_assert( result_strtoumax == UINTMAX_MAX );
rtems_test_assert( errno == ERANGE );
puts( "Valid Input - Negative Number - Number out of Range" );
result_strtoumax = strtoumax( nptr1_n_errange, &endptr1, base );
rtems_test_assert( result_strtoumax != 0 );
rtems_test_assert( errno == ERANGE );
puts( "Invalid Input - Send NULL Pointer" );
result_strtoumax = strtoumax( NULL, &endptr1, base );
rtems_test_assert( result_strtoumax == 0 );
rtems_test_assert( errno == EINVAL );
puts( "Invalid Input - Invalid base - Use base = 40" );
result_strtoumax = strtoumax( nptr1_p, &endptr1, invalid_base );
rtems_test_assert( result_strtoumax == 0 );
rtems_test_assert( errno == EINVAL );
/* Test for wcstoimax */
puts( "\nwcstoimax Testcases...." );
puts( "Valid Inputs - Positive Number" );
result_strtoimax = wcstoimax( nptr2_p, &endptr2, base );
rtems_test_assert( result_strtoimax == 123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr2 == ( nptr2_p + 3 ) );
puts( "Valid Inputs - Negative Number" );
result_strtoimax = wcstoimax( nptr2_n, &endptr2, base );
rtems_test_assert( result_strtoimax == -123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr2 == ( nptr2_n + 4 ) );
puts( "Valid Input - Positive Number - Number out of Range" );
result_strtoimax = wcstoimax( nptr2_p_errange, &endptr2, base );
rtems_test_assert( result_strtoimax == INTMAX_MAX );
rtems_test_assert( errno == ERANGE );
puts( "Valid Input - Negative Number - Number out of Range" );
result_strtoimax = wcstoimax( nptr2_n_errange, &endptr2, base );
rtems_test_assert( result_strtoimax == INTMAX_MIN );
rtems_test_assert( errno == ERANGE );
puts( "Invalid Input - Send NULL Pointer" );
result_strtoimax = wcstoimax( NULL, &endptr2, base );
rtems_test_assert( result_strtoimax == 0 );
rtems_test_assert( errno == EINVAL );
puts( "Invalid Input - Invalid base - Use base = 40" );
result_strtoimax = wcstoimax( nptr2_p, &endptr2, invalid_base );
rtems_test_assert( result_strtoimax == 0 );
rtems_test_assert( errno == EINVAL );
/* Test for wcstoumax */
puts( "\nwcstoumax Testcases...." );
puts( "Valid Inputs - Positive Number" );
result_strtoumax = wcstoumax( nptr2_p, &endptr2, base );
rtems_test_assert( result_strtoumax == 123 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr2 == ( nptr2_p + 3 ) );
puts( "Valid Inputs - Negative Number" );
result_strtoumax = wcstoumax( nptr2_n, &endptr2, base );
rtems_test_assert( result_strtoumax != 0 );
puts( "Final string pointed by endptr" );
rtems_test_assert( endptr2 == ( nptr2_n + 4 ) );
puts( "Valid Input - Positive Number - Number out of Range" );
result_strtoumax = wcstoumax( nptr2_p_errange, &endptr2, base );
rtems_test_assert( result_strtoumax == UINTMAX_MAX );
rtems_test_assert( errno == ERANGE );
puts( "Valid Input - Negative Number - Number out of Range" );
result_strtoumax = wcstoumax( nptr2_n_errange, &endptr2, base );
rtems_test_assert( result_strtoumax != 0 );
rtems_test_assert( errno == ERANGE );
puts( "Invalid Input - Send NULL Pointer" );
result_strtoumax = wcstoumax( NULL, &endptr2, base );
rtems_test_assert( result_strtoumax == 0 );
rtems_test_assert( errno == EINVAL );
puts( "Invalid Input - Invalid base - Use base = 40" );
result_strtoumax = wcstoumax( nptr2_p, &endptr2, invalid_base );
rtems_test_assert( result_strtoumax == 0 );
rtems_test_assert( errno == EINVAL );
TEST_END();
rtems_test_exit(0);
}
/* NOTICE: the clock driver is explicitly disabled */
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_INIT
#include <rtems/confdefs.h>

View File

@@ -0,0 +1,43 @@
This File describes the concepts tested by this test suite.
inttypes.h - fixed size integer types
test suite name: PSXINTTYPE 01
- Checks for invalid base value
- Checks for Strtoimax Testcases
- checks for output for string having a positive number
- checks for output for string having a negative number
- checks for output for string having a positive number - Number Out of Range
- checks for output for string having a negative number - Number Out of Range
- checks for final string pointed by endptr
- checks for output for invalid argument - NULL Pointer
- checks for output for invalid argument - Invalid Base
- Checks for Strtoumax Test Cases
- checks for output for string having a positive number
- checks for output for string having a negative number
- checks for output for string having a positive number - Number Out of Range
- checks for output for string having a negative number - Number Out of Range
- checks for final string pointed by endptr
- checks for output for invalid argument - NULL Pointer
- checks for output for invalid argument - Invalid Base
- Checks for Wcstoimax Testcases
- checks for output for string having a positive number
- checks for output for string having a negative number
- checks for output for string having a positive number - Number Out of Range
- checks for output for string having a negative number - Number Out of Range
- checks for final string pointed by endptr
- checks for output for invalid argument - NULL Pointer
- checks for output for invalid argument - Invalid Base
- Checks for Wcstoumax Testcases
- checks for output for string having a positive number
- checks for output for string having a negative number
- checks for output for string having a positive number - Number Out of Range
- checks for output for string having a negative number - Number Out of Range
- checks for final string pointed by endptr
- checks for output for invalid argument - NULL Pointer
- checks for output for invalid argument - Invalid Base

View File

@@ -0,0 +1,43 @@
*** PSXINTTYPE 01 TEST ***
strtoimax Testcases....
Valid Inputs - Positive Number
Final string pointed by endptr
Valid Inputs - Negative Number
Final string pointed by endptr
Valid Input - Positive Number - Number out of Range
Valid Input - Negative Number - Number out of Range
Invalid Input - Send NULL Pointer
Invalid Input - Invalid base - Use base = 40
strtoumax Testcases....
Valid Inputs - Positive Number
Final string pointed by endptr
Valid Inputs - Negative Number
Final string pointed by endptr
Valid Input - Positive Number - Number out of Range
Valid Input - Negative Number - Number out of Range
Invalid Input - Send NULL Pointer
Invalid Input - Invalid base - Use base = 40
wcstoimax Testcases....
Valid Inputs - Positive Number
Final string pointed by endptr
Valid Inputs - Negative Number
Final string pointed by endptr
Valid Input - Positive Number - Number out of Range
Valid Input - Negative Number - Number out of Range
Invalid Input - Send NULL Pointer
Invalid Input - Invalid base - Use base = 40
wcstoumax Testcases....
Valid Inputs - Positive Number
Final string pointed by endptr
Valid Inputs - Negative Number
Final string pointed by endptr
Valid Input - Positive Number - Number out of Range
Valid Input - Negative Number - Number out of Range
Invalid Input - Send NULL Pointer
Invalid Input - Invalid base - Use base = 40
*** END OF PSXINTTYPE 01 TEST ***