From e41e75def26e8e81dcbfd27e24969a99ba718021 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 19 Jul 2010 13:10:48 +0000 Subject: 2010-07-19 Joel Sherrill * stringto01/init.c, stringto01/stringto01.scn, stringto01/stringto_test_template.h: Attempt to pick up a few more error paths. --- testsuites/libtests/stringto01/init.c | 11 +++++++++++ testsuites/libtests/stringto01/stringto01.scn | 3 +++ .../libtests/stringto01/stringto_test_template.h | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+) (limited to 'testsuites/libtests/stringto01') diff --git a/testsuites/libtests/stringto01/init.c b/testsuites/libtests/stringto01/init.c index 38fbda8d0f..8c021eb90a 100644 --- a/testsuites/libtests/stringto01/init.c +++ b/testsuites/libtests/stringto01/init.c @@ -11,9 +11,14 @@ #include "tmacros.h" #include +#include +#include #include +#define __STRING(x) #x /* stringify without expanding x */ +#define __XSTRING(x) __STRING(x) /* expand x, then stringify */ + /* Test pointer conversions */ #define TEST_STRING_TO_TYPE void * #define TEST_STRING_TO_NAME test_rtems_string_to_pointer @@ -33,6 +38,8 @@ /* Test integer conversions */ #define TEST_STRING_TO_TYPE int +#define STRING_TO_MAX LONG_MAX +#define STRING_TO_MAX_STRING __XSTRING(LONG_MAX) #define TEST_STRING_TO_NAME test_rtems_string_to_int #define STRING_TO_NAME_METHOD rtems_string_to_int #define STRING_TO_NAME_METHOD_STRING "rtems_string_to_int" @@ -51,6 +58,8 @@ /* Test long conversions */ #define TEST_STRING_TO_TYPE long +#define STRING_TO_MAX LONG_MAX +#define STRING_TO_MAX_STRING __XSTRING(LONG_MAX) #define TEST_STRING_TO_NAME test_rtems_string_to_long #define STRING_TO_NAME_METHOD rtems_string_to_long #define STRING_TO_NAME_METHOD_STRING "rtems_string_to_long" @@ -70,6 +79,8 @@ /* Test long long conversions */ #define TEST_STRING_TO_TYPE long long +#define STRING_TO_MAX LONG_LONG_MAX +#define STRING_TO_MAX_STRING __XSTRING(LONG_LONG_MAX) #define TEST_STRING_TO_NAME test_rtems_string_to_long_long #define STRING_TO_NAME_METHOD rtems_string_to_long_long #define STRING_TO_NAME_METHOD_STRING "rtems_string_to_long_long" diff --git a/testsuites/libtests/stringto01/stringto01.scn b/testsuites/libtests/stringto01/stringto01.scn index 47f5e6546e..71d36f31ac 100644 --- a/testsuites/libtests/stringto01/stringto01.scn +++ b/testsuites/libtests/stringto01/stringto01.scn @@ -17,6 +17,7 @@ rtems_string_to_unsigned_char - empty string - w/endptr return value - RTEMS_NOT Testing rtems_string_to_int rtems_string_to_int - NULL return value - RTEMS_INVALID_ADDRESS rtems_string_to_int - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_int - MAXIMUM VALUE w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_int - 123 w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_int - YYY w/endptr return value - RTEMS_NOT_DEFINED rtems_string_to_int - empty string - w/endptr return value - RTEMS_NOT_DEFINED @@ -33,6 +34,7 @@ rtems_string_to_unsigned_int - overflow - RTEMS_INVALID_NUMBER Testing rtems_string_to_long rtems_string_to_long - NULL return value - RTEMS_INVALID_ADDRESS rtems_string_to_long - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_long - MAXIMUM VALUE w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_long - 123 w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_long - YYY w/endptr return value - RTEMS_NOT_DEFINED rtems_string_to_long - empty string - w/endptr return value - RTEMS_NOT_DEFINED @@ -50,6 +52,7 @@ rtems_string_to_unsigned_long - overflow - RTEMS_INVALID_NUMBER Testing rtems_string_to_long_long rtems_string_to_long_long - NULL return value - RTEMS_INVALID_ADDRESS rtems_string_to_long_long - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_long_long - MAXIMUM VALUE w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_long_long - 123 w/endptr return value - RTEMS_SUCCESSFUL rtems_string_to_long_long - YYY w/endptr return value - RTEMS_NOT_DEFINED rtems_string_to_long_long - empty string - w/endptr return value - RTEMS_NOT_DEFINED diff --git a/testsuites/libtests/stringto01/stringto_test_template.h b/testsuites/libtests/stringto01/stringto_test_template.h index 70f8e0321a..a69284448c 100644 --- a/testsuites/libtests/stringto01/stringto_test_template.h +++ b/testsuites/libtests/stringto01/stringto_test_template.h @@ -58,6 +58,24 @@ void TEST_STRING_TO_NAME(void) rtems_test_assert( status == RTEMS_SUCCESSFUL ); rtems_test_assert( value == (TEST_STRING_TO_TYPE)GOOD_VALUE ); + #if defined(STRING_TO_MAX) + /* Basic conversion works for return value */ + endptr = NULL; + puts( + STRING_TO_NAME_METHOD_STRING " - MAXIMUM VALUE" + " w/endptr return value - RTEMS_SUCCESSFUL" + ); + #if defined(STRING_TO_INTEGER) + status = STRING_TO_NAME_METHOD( + STRING_TO_MAX_STRING, &value, &endptr, 10 ); + #elif defined(STRING_TO_POINTER) || defined(STRING_TO_FLOAT) + status = STRING_TO_NAME_METHOD( STRING_TO_MAX_STRING, &value, &endptr ); + #endif + rtems_test_assert( status == RTEMS_SUCCESSFUL ); + rtems_test_assert( endptr ); + rtems_test_assert( value == (TEST_STRING_TO_TYPE)STRING_TO_MAX ); + #endif + /* Basic conversion works for return value */ endptr = NULL; puts( @@ -145,6 +163,8 @@ void TEST_STRING_TO_NAME(void) #undef STRING_TO_INTEGER #undef STRING_TO_POINTER #undef STRING_TO_FLOAT +#undef STRING_TO_MAX +#undef STRING_TO_MAX_STRING #undef GOOD_VALUE #undef GOOD_VALUE_STRING #undef BAD_VALUE_STRING -- cgit v1.2.3