summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/stringto01
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-12-01 22:10:33 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-12-01 22:10:33 +0000
commit57544fbb522fbee6fdc5cb6adc84cf4d2760ae4a (patch)
treeb757c8f6f6575b615e1471a0fb00bc9185dc5d7e /testsuites/libtests/stringto01
parentRename. (diff)
downloadrtems-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 'testsuites/libtests/stringto01')
-rw-r--r--testsuites/libtests/stringto01/.cvsignore2
-rw-r--r--testsuites/libtests/stringto01/Makefile.am27
-rw-r--r--testsuites/libtests/stringto01/stringto01.doc31
-rw-r--r--testsuites/libtests/stringto01/stringto01.scn82
-rw-r--r--testsuites/libtests/stringto01/stringto_test_template.h152
5 files changed, 294 insertions, 0 deletions
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