diff options
Diffstat (limited to 'testsuites/libtests')
-rw-r--r-- | testsuites/libtests/ChangeLog | 7 | ||||
-rw-r--r-- | testsuites/libtests/Makefile.am | 3 | ||||
-rw-r--r-- | testsuites/libtests/configure.ac | 1 | ||||
-rw-r--r-- | testsuites/libtests/stringto01/.cvsignore | 2 | ||||
-rw-r--r-- | testsuites/libtests/stringto01/Makefile.am | 27 | ||||
-rw-r--r-- | testsuites/libtests/stringto01/stringto01.doc | 31 | ||||
-rw-r--r-- | testsuites/libtests/stringto01/stringto01.scn | 82 | ||||
-rw-r--r-- | testsuites/libtests/stringto01/stringto_test_template.h | 152 |
8 files changed, 304 insertions, 1 deletions
diff --git a/testsuites/libtests/ChangeLog b/testsuites/libtests/ChangeLog index 90d79be1db..fd9a8d5933 100644 --- a/testsuites/libtests/ChangeLog +++ b/testsuites/libtests/ChangeLog @@ -1,3 +1,10 @@ +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. + 2009-11-30 Sebastian Huber <Sebastian.Huber@embedded-brains.de> * block05/init.c: Check block size. Improved output. diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am index c1cfd7be94..2806fe79ac 100644 --- a/testsuites/libtests/Makefile.am +++ b/testsuites/libtests/Makefile.am @@ -6,7 +6,8 @@ ACLOCAL_AMFLAGS = -I ../aclocal SUBDIRS = bspcmdline01 cpuuse malloctest heapwalk putenvtest monitor \ monitor02 rtmonuse stackchk stackchk01 termios termios01 termios02 \ - rtems++ tztest block01 block02 block03 block04 block05 block06 block07 + rtems++ tztest block01 block02 block03 block04 block05 block06 block07 \ + stringto01 include $(top_srcdir)/../automake/subdirs.am include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/configure.ac b/testsuites/libtests/configure.ac index 6915f4b046..415aeea478 100644 --- a/testsuites/libtests/configure.ac +++ b/testsuites/libtests/configure.ac @@ -51,6 +51,7 @@ rtems++/Makefile rtmonuse/Makefile stackchk/Makefile stackchk01/Makefile +stringto01/Makefile termios/Makefile termios01/Makefile termios02/Makefile 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 |