+\r
+#ifdef PF_UNIT_TEST\r
+/* Unit test for string conversion routines. */\r
+#define ASSERT_PAD_IS( index, value, msg ) \\r
+ if( pad[index] != ((char)(value)) ) \\r
+ { \\r
+ ERR(( "ERROR text test failed: " msg "\n")); \\r
+ numErrors += 1; \\r
+ } \\r
+\r
+cell_t pfUnitTestText( void )\r
+{\r
+ cell_t numErrors = 0;\r
+ char pad[16];\r
+ char fpad[8];\r
+\r
+ /* test CStringToForth */\r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ CStringToForth( pad, "frog", 6 );\r
+ ASSERT_PAD_IS( 0, 4, "CS len 6" );\r
+ ASSERT_PAD_IS( 4, 'g', "CS end 6" );\r
+ ASSERT_PAD_IS( 5, 0xA5, "CS past 6" );\r
+ \r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ CStringToForth( pad, "frog", 5 );\r
+ ASSERT_PAD_IS( 0, 4, "CS len 5" );\r
+ ASSERT_PAD_IS( 4, 'g', "CS end 5" );\r
+ ASSERT_PAD_IS( 5, 0xA5, "CS past 5" );\r
+ \r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ CStringToForth( pad, "frog", 4 );\r
+ ASSERT_PAD_IS( 0, 3, "CS len 4" );\r
+ ASSERT_PAD_IS( 3, 'o', "CS end 4" );\r
+ ASSERT_PAD_IS( 4, 0xA5, "CS past 4" );\r
+ \r
+ /* Make a Forth string for testing ForthStringToC. */\r
+ CStringToForth( fpad, "frog", sizeof(fpad) );\r
+ \r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ ForthStringToC( pad, fpad, 6 );\r
+ ASSERT_PAD_IS( 0, 'f', "FS len 6" );\r
+ ASSERT_PAD_IS( 3, 'g', "FS end 6" );\r
+ ASSERT_PAD_IS( 4, 0, "FS nul 6" );\r
+ ASSERT_PAD_IS( 5, 0xA5, "FS past 6" );\r
+ \r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ ForthStringToC( pad, fpad, 5 );\r
+ ASSERT_PAD_IS( 0, 'f', "FS len 5" );\r
+ ASSERT_PAD_IS( 3, 'g', "FS end 5" );\r
+ ASSERT_PAD_IS( 4, 0, "FS nul 5" );\r
+ ASSERT_PAD_IS( 5, 0xA5, "FS past 5" );\r
+ \r
+ pfSetMemory(pad,0xA5,sizeof(pad));\r
+ ForthStringToC( pad, fpad, 4 );\r
+ ASSERT_PAD_IS( 0, 'f', "FS len 4" );\r
+ ASSERT_PAD_IS( 2, 'o', "FS end 4" );\r
+ ASSERT_PAD_IS( 3, 0, "FS nul 4" );\r
+ ASSERT_PAD_IS( 4, 0xA5, "FS past 4" );\r
+ \r
+ return numErrors;\r
+}\r
+#endif\r