File indexing completed on 2025-05-11 08:24:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #ifdef HAVE_CONFIG_H
0035 #include "config.h"
0036 #endif
0037
0038 #include <rtems/test-info.h>
0039 #include <inttypes.h>
0040 #include <stdio.h>
0041 #include <errno.h>
0042 #include <tmacros.h>
0043 #include <stdint.h>
0044 #include <stddef.h>
0045
0046 const char rtems_test_name[] = "PSXINTTYPE 01";
0047
0048
0049 rtems_task Init(rtems_task_argument ignored);
0050
0051 rtems_task Init(rtems_task_argument ignored)
0052 {
0053 int base = 10;
0054 int invalid_base = 40;
0055
0056 char *nptr1_p = "123abc";
0057 char *nptr1_p_errange = "9999999999999999999999";
0058 char *nptr1_n = "-123abc";
0059 char *nptr1_n_errange = "-9999999999999999999999";
0060 char *endptr1 = NULL;
0061
0062 wchar_t *nptr2_p = L"123junk";
0063 wchar_t *nptr2_p_errange = L"9999999999999999999999";
0064 wchar_t *nptr2_n = L"-123junk";
0065 wchar_t *nptr2_n_errange = L"-9999999999999999999999";
0066 wchar_t *endptr2 = NULL;
0067
0068 intmax_t result_strtoimax, result_imaxabs, input_1, input_2;
0069 imaxdiv_t result_exp, result_imaxdiv;
0070 uintmax_t result_strtoumax;
0071
0072 TEST_BEGIN();
0073
0074
0075 input_1 = -10;
0076 result_imaxabs = 10;
0077 rtems_test_assert( imaxabs(input_1) == result_imaxabs );
0078
0079 input_1 = 10;
0080 result_imaxabs = 10;
0081 rtems_test_assert( imaxabs(input_1) == result_imaxabs );
0082
0083
0084 input_1 = 10;
0085 input_2 = 3;
0086 result_exp.quot = input_1 / input_2;
0087 result_exp.rem = input_1 % input_2;
0088 result_imaxdiv = imaxdiv( input_1, input_2 );
0089 rtems_test_assert(
0090 result_imaxdiv.quot == result_exp.quot &&
0091 result_imaxdiv.rem == result_exp.rem
0092 );
0093
0094
0095 puts( "\nstrtoimax Testcases...." );
0096 puts( "Valid Inputs - Positive Number" );
0097 result_strtoimax = strtoimax( nptr1_p, &endptr1, base );
0098 rtems_test_assert( result_strtoimax == 123 );
0099
0100 puts( "Final string pointed by endptr" );
0101 rtems_test_assert( endptr1 == ( nptr1_p + 3 ) );
0102
0103 puts( "Valid Inputs - Negative Number" );
0104 result_strtoimax = strtoimax( nptr1_n, &endptr1, base );
0105 rtems_test_assert( result_strtoimax == -123 );
0106
0107 puts( "Final string pointed by endptr" );
0108 rtems_test_assert( endptr1 == ( nptr1_n + 4 ) );
0109
0110 puts( "Valid Input - Positive Number - Number out of Range" );
0111 result_strtoimax = strtoimax( nptr1_p_errange, &endptr1, base );
0112 rtems_test_assert( result_strtoimax == INTMAX_MAX );
0113 rtems_test_assert( errno == ERANGE );
0114
0115 puts( "Valid Input - Negative Number - Number out of Range" );
0116 result_strtoimax = strtoimax( nptr1_n_errange, &endptr1, base );
0117 rtems_test_assert( result_strtoimax == INTMAX_MIN );
0118 rtems_test_assert( errno == ERANGE );
0119
0120 puts( "Invalid Input - Invalid base - Use base = 40" );
0121 result_strtoimax = strtoimax( nptr1_p, &endptr1, invalid_base );
0122 rtems_test_assert( result_strtoimax == 0 );
0123 rtems_test_assert( errno == EINVAL );
0124
0125
0126 puts( "\nstrtoumax Testcases...." );
0127 puts( "Valid Inputs - Positive Number" );
0128 result_strtoumax = strtoumax( nptr1_p, &endptr1, base );
0129 rtems_test_assert( result_strtoumax ==123 );
0130
0131 puts( "Final string pointed by endptr" );
0132 rtems_test_assert( endptr1 == ( nptr1_p + 3 ) );
0133
0134 puts( "Valid Inputs - Negative Number" );
0135 result_strtoumax = strtoumax( nptr1_n, &endptr1, base );
0136 rtems_test_assert( result_strtoumax != 0 );
0137
0138 puts( "Final string pointed by endptr" );
0139 rtems_test_assert( endptr1 == ( nptr1_n + 4 ) );
0140
0141 puts( "Valid Input - Positive Number - Number out of Range" );
0142 result_strtoumax = strtoumax( nptr1_p_errange, &endptr1, base );
0143 rtems_test_assert( result_strtoumax == UINTMAX_MAX );
0144 rtems_test_assert( errno == ERANGE );
0145
0146 puts( "Valid Input - Negative Number - Number out of Range" );
0147 result_strtoumax = strtoumax( nptr1_n_errange, &endptr1, base );
0148 rtems_test_assert( result_strtoumax != 0 );
0149 rtems_test_assert( errno == ERANGE );
0150
0151 puts( "Invalid Input - Invalid base - Use base = 40" );
0152 result_strtoumax = strtoumax( nptr1_p, &endptr1, invalid_base );
0153 rtems_test_assert( result_strtoumax == 0 );
0154 rtems_test_assert( errno == EINVAL );
0155
0156
0157 puts( "\nwcstoimax Testcases...." );
0158 puts( "Valid Inputs - Positive Number" );
0159 result_strtoimax = wcstoimax( nptr2_p, &endptr2, base );
0160 rtems_test_assert( result_strtoimax == 123 );
0161
0162 puts( "Final string pointed by endptr" );
0163 rtems_test_assert( endptr2 == ( nptr2_p + 3 ) );
0164
0165 puts( "Valid Inputs - Negative Number" );
0166 result_strtoimax = wcstoimax( nptr2_n, &endptr2, base );
0167 rtems_test_assert( result_strtoimax == -123 );
0168
0169 puts( "Final string pointed by endptr" );
0170 rtems_test_assert( endptr2 == ( nptr2_n + 4 ) );
0171
0172 puts( "Valid Input - Positive Number - Number out of Range" );
0173 result_strtoimax = wcstoimax( nptr2_p_errange, &endptr2, base );
0174 rtems_test_assert( result_strtoimax == INTMAX_MAX );
0175 rtems_test_assert( errno == ERANGE );
0176
0177 puts( "Valid Input - Negative Number - Number out of Range" );
0178 result_strtoimax = wcstoimax( nptr2_n_errange, &endptr2, base );
0179 rtems_test_assert( result_strtoimax == INTMAX_MIN );
0180 rtems_test_assert( errno == ERANGE );
0181
0182 puts( "Invalid Input - Invalid base - Use base = 40" );
0183 result_strtoimax = wcstoimax( nptr2_p, &endptr2, invalid_base );
0184 rtems_test_assert( result_strtoimax == 0 );
0185 rtems_test_assert( errno == EINVAL );
0186
0187
0188 puts( "\nwcstoumax Testcases...." );
0189 puts( "Valid Inputs - Positive Number" );
0190 result_strtoumax = wcstoumax( nptr2_p, &endptr2, base );
0191 rtems_test_assert( result_strtoumax == 123 );
0192
0193 puts( "Final string pointed by endptr" );
0194 rtems_test_assert( endptr2 == ( nptr2_p + 3 ) );
0195
0196 puts( "Valid Inputs - Negative Number" );
0197 result_strtoumax = wcstoumax( nptr2_n, &endptr2, base );
0198 rtems_test_assert( result_strtoumax != 0 );
0199
0200 puts( "Final string pointed by endptr" );
0201 rtems_test_assert( endptr2 == ( nptr2_n + 4 ) );
0202
0203 puts( "Valid Input - Positive Number - Number out of Range" );
0204 result_strtoumax = wcstoumax( nptr2_p_errange, &endptr2, base );
0205 rtems_test_assert( result_strtoumax == UINTMAX_MAX );
0206 rtems_test_assert( errno == ERANGE );
0207
0208 puts( "Valid Input - Negative Number - Number out of Range" );
0209 result_strtoumax = wcstoumax( nptr2_n_errange, &endptr2, base );
0210 rtems_test_assert( result_strtoumax != 0 );
0211 rtems_test_assert( errno == ERANGE );
0212
0213 puts( "Invalid Input - Invalid base - Use base = 40" );
0214 result_strtoumax = wcstoumax( nptr2_p, &endptr2, invalid_base );
0215 rtems_test_assert( result_strtoumax == 0 );
0216 rtems_test_assert( errno == EINVAL );
0217
0218 TEST_END();
0219 rtems_test_exit(0);
0220
0221 }
0222
0223
0224
0225 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0226 #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
0227
0228 #define CONFIGURE_MAXIMUM_TASKS 1
0229
0230 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0231
0232 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0233
0234 #define CONFIGURE_INIT
0235 #include <rtems/confdefs.h>