diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-12-01 22:10:33 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-12-01 22:10:33 +0000 |
commit | 57544fbb522fbee6fdc5cb6adc84cf4d2760ae4a (patch) | |
tree | b757c8f6f6575b615e1471a0fb00bc9185dc5d7e /testsuites/libtests/stringto01/stringto_test_template.h | |
parent | Rename. (diff) | |
download | rtems-57544fbb522fbee6fdc5cb6adc84cf4d2760ae4a.tar.bz2 |
2009-12-01 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, configure.ac: Add string_to_xxx conversion test.
* stringto01/.cvsignore, stringto01/Makefile.am,
stringto01/stringto01.doc, stringto01/stringto01.scn,
stringto01/stringto_test_template.h: New files.
Diffstat (limited to '')
-rw-r--r-- | testsuites/libtests/stringto01/stringto_test_template.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/testsuites/libtests/stringto01/stringto_test_template.h b/testsuites/libtests/stringto01/stringto_test_template.h new file mode 100644 index 0000000000..a351b5d964 --- /dev/null +++ b/testsuites/libtests/stringto01/stringto_test_template.h @@ -0,0 +1,152 @@ +/* + * COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if defined(STRING_TO_POINTER) + #define GOOD_VALUE 0x123 + #define GOOD_VALUE_STRING "0x123" + #define BAD_VALUE_STRING "xxx" +#elif defined(STRING_TO_INTEGER) + #define GOOD_VALUE 123 + #define GOOD_VALUE_STRING "123" + #define BAD_VALUE_STRING "YYY" +#elif defined(STRING_TO_FLOAT) + #define GOOD_VALUE 1.23 + #define GOOD_VALUE_STRING "1.23" + #define BAD_VALUE_STRING "zzz" +#else + #error "what type are we testing?" +#endif + +void TEST_STRING_TO_NAME(void) +{ + TEST_STRING_TO_TYPE value; + rtems_status_code status; + char *endptr; + + puts( "\nTesting " STRING_TO_NAME_METHOD_STRING ); + + /* Null pointer for return value */ + puts( + STRING_TO_NAME_METHOD_STRING + " - NULL return value - RTEMS_INVALID_ADDRESS" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, NULL, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, NULL, &endptr ); + #endif + assert( status == RTEMS_INVALID_ADDRESS ); + + /* Basic conversion works for return value, return end pointer */ + puts( + STRING_TO_NAME_METHOD_STRING " - " GOOD_VALUE_STRING + " NULL endptr return value - RTEMS_SUCCESSFUL" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, &value, NULL, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, &value, NULL ); + #endif + assert( status == RTEMS_SUCCESSFUL ); + assert( value == (TEST_STRING_TO_TYPE)GOOD_VALUE ); + + /* Basic conversion works for return value */ + endptr = NULL; + puts( + STRING_TO_NAME_METHOD_STRING " - " GOOD_VALUE_STRING + " w/endptr return value - RTEMS_SUCCESSFUL" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( GOOD_VALUE_STRING, &value, &endptr ); + #endif + assert( status == RTEMS_SUCCESSFUL ); + assert( endptr ); + assert( value == (TEST_STRING_TO_TYPE)GOOD_VALUE ); + + /* Bad conversion works for return value */ + endptr = NULL; + puts( + STRING_TO_NAME_METHOD_STRING " - " BAD_VALUE_STRING + " w/endptr return value - RTEMS_NOT_DEFINED" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( BAD_VALUE_STRING, &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( BAD_VALUE_STRING, &value, &endptr ); + #endif + assert( status == RTEMS_NOT_DEFINED ); + assert( endptr ); + + /* Conversion of empty string */ + endptr = NULL; + value = 0; + puts( + STRING_TO_NAME_METHOD_STRING + " - empty string - w/endptr return value - RTEMS_NOT_DEFINED" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( "", &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( "", &value, &endptr ); + #endif + assert( status == RTEMS_NOT_DEFINED ); + assert( endptr ); + assert( value == (TEST_STRING_TO_TYPE)0 ); + + /* Conversion of number that is too large */ + #if defined(TEST_TOO_LARGE_STRING) + endptr = NULL; + value = 0; + puts( + STRING_TO_NAME_METHOD_STRING " - overflow - RTEMS_INVALID_NUMBER" ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( + TEST_TOO_LARGE_STRING, &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( TEST_TOO_LARGE_STRING, &value, &endptr ); + #endif + if ( status != RTEMS_INVALID_NUMBER ) + printf( "ERROR = %s\n", rtems_status_text(status) ); + assert( status == RTEMS_INVALID_NUMBER ); + assert( endptr ); + #endif + + /* Conversion of number that is too small */ + #if defined(TEST_TOO_SMALL_STRING) + endptr = NULL; + value = 0; + puts( STRING_TO_NAME_METHOD_STRING "- RTEMS_INVALID_NUMBER" ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( + TEST_TOO_SMALL_STRING, &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( TEST_TOO_SMALL_STRING, &value, &endptr ); + #endif + assert( status == RTEMS_INVALID_NUMBER ); + assert( endptr ); + #endif +} + +/* Now undefined everything that instantiates this */ +#undef TEST_STRING_TO_TYPE +#undef TEST_STRING_TO_NAME +#undef STRING_TO_NAME_METHOD +#undef STRING_TO_NAME_METHOD_STRING +#undef STRING_TO_INTEGER +#undef STRING_TO_POINTER +#undef STRING_TO_FLOAT +#undef GOOD_VALUE +#undef GOOD_VALUE_STRING +#undef BAD_VALUE_STRING +#undef TEST_TOO_LARGE_STRING +#undef TEST_TOO_SMALL_STRING |