From 57544fbb522fbee6fdc5cb6adc84cf4d2760ae4a Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 1 Dec 2009 22:10:33 +0000 Subject: 2009-12-01 Joel Sherrill * 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. --- testsuites/libtests/stringto01/.cvsignore | 2 + testsuites/libtests/stringto01/Makefile.am | 27 ++++ testsuites/libtests/stringto01/stringto01.doc | 31 +++++ testsuites/libtests/stringto01/stringto01.scn | 82 +++++++++++ .../libtests/stringto01/stringto_test_template.h | 152 +++++++++++++++++++++ 5 files changed, 294 insertions(+) create mode 100644 testsuites/libtests/stringto01/.cvsignore create mode 100644 testsuites/libtests/stringto01/Makefile.am create mode 100644 testsuites/libtests/stringto01/stringto01.doc create mode 100644 testsuites/libtests/stringto01/stringto01.scn create mode 100644 testsuites/libtests/stringto01/stringto_test_template.h (limited to 'testsuites/libtests/stringto01') diff --git a/testsuites/libtests/stringto01/.cvsignore b/testsuites/libtests/stringto01/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/testsuites/libtests/stringto01/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/testsuites/libtests/stringto01/Makefile.am b/testsuites/libtests/stringto01/Makefile.am new file mode 100644 index 0000000000..621e84080e --- /dev/null +++ b/testsuites/libtests/stringto01/Makefile.am @@ -0,0 +1,27 @@ +## +## $Id$ +## + +MANAGERS = all + +rtems_tests_PROGRAMS = stringto01 +stringto01_SOURCES = init.c + +dist_rtems_tests_DATA = stringto01.scn stringto01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +stringto01_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel) + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(stringto01_OBJECTS) $(stringto01_LDADD) +LINK_LIBS = $(stringto01_LDLIBS) + +stringto01$(EXEEXT): $(stringto01_OBJECTS) $(stringto01_DEPENDENCIES) + @rm -f stringto01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/stringto01/stringto01.doc b/testsuites/libtests/stringto01/stringto01.doc new file mode 100644 index 0000000000..afc4007cc6 --- /dev/null +++ b/testsuites/libtests/stringto01/stringto01.doc @@ -0,0 +1,31 @@ +# +# $Id$ +# +# 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. +# + +This file describes the directives and concepts tested by this test set. + +test set name: stringto01 + +Directives: + + rtems_string_to_pointer + rtems_string_to_unsigned_char + rtems_string_to_int + rtems_string_to_unsigned_int + rtems_string_to_long + rtems_string_to_unsigned_long + rtems_string_to_long_long + rtems_string_to_unsigned_long_long + rtems_string_to_float + rtems_string_to_double + +Concepts: + ++ Exhaustively test strong to number conversion helpers. diff --git a/testsuites/libtests/stringto01/stringto01.scn b/testsuites/libtests/stringto01/stringto01.scn new file mode 100644 index 0000000000..47f5e6546e --- /dev/null +++ b/testsuites/libtests/stringto01/stringto01.scn @@ -0,0 +1,82 @@ +*** STRING TO CONVERSION TEST *** + +Testing rtems_string_to_pointer +rtems_string_to_pointer - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_pointer - 0x123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_pointer - 0x123 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_pointer - xxx w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_pointer - empty string - w/endptr return value - RTEMS_NOT_DEFINED + +Testing rtems_string_to_unsigned_char +rtems_string_to_unsigned_char - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_unsigned_char - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_char - 123 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_char - YYY w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_unsigned_char - empty string - w/endptr return value - RTEMS_NOT_DEFINED + +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 - 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 +rtems_string_to_int - overflow - RTEMS_INVALID_NUMBER + +Testing rtems_string_to_unsigned_int +rtems_string_to_unsigned_int - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_unsigned_int - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_int - 123 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_int - YYY w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_unsigned_int - empty string - w/endptr return value - RTEMS_NOT_DEFINED +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 - 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 +rtems_string_to_long - overflow - RTEMS_INVALID_NUMBER +rtems_string_to_long- RTEMS_INVALID_NUMBER + +Testing rtems_string_to_unsigned_long +rtems_string_to_unsigned_long - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_unsigned_long - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_long - 123 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_long - YYY w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_unsigned_long - empty string - w/endptr return value - RTEMS_NOT_DEFINED +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 - 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 +rtems_string_to_long_long - overflow - RTEMS_INVALID_NUMBER +rtems_string_to_long_long- RTEMS_INVALID_NUMBER + +Testing rtems_string_to_unsigned_long_long +rtems_string_to_unsigned_long_long - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_unsigned_long_long - 123 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_long_long - 123 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_unsigned_long_long - YYY w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_unsigned_long_long - empty string - w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_unsigned_long_long - overflow - RTEMS_INVALID_NUMBER + +Testing rtems_string_to_float +rtems_string_to_float - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_float - 1.23 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_float - 1.23 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_float - zzz w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_float - empty string - w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_float - overflow - RTEMS_INVALID_NUMBER + +Testing rtems_string_to_double +rtems_string_to_double - NULL return value - RTEMS_INVALID_ADDRESS +rtems_string_to_double - 1.23 NULL endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_double - 1.23 w/endptr return value - RTEMS_SUCCESSFUL +rtems_string_to_double - zzz w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_double - empty string - w/endptr return value - RTEMS_NOT_DEFINED +rtems_string_to_double - overflow - RTEMS_INVALID_NUMBER +*** END OF STRING TO CONVERSION TEST *** 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 -- cgit v1.2.3