/* * 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