summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/stringto01/stringto_test_template.h
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/stringto_test_template.h
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 '')
-rw-r--r--testsuites/libtests/stringto01/stringto_test_template.h152
1 files changed, 152 insertions, 0 deletions
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