]> pd.if.org Git - pdclib/blobdiff - testing/scanf_testcases.h
Some testcases for scanf(). Fixed bug with %*... . Fixed artifact in Makefile.
[pdclib] / testing / scanf_testcases.h
index f8d3b0f84f3f6e060acf493026cb1e5c544c9cf5..a1521fee3e2f04fb9dd362bf81f39ca0fd1fbd9a 100644 (file)
@@ -1,5 +1,59 @@
 {
     char buffer[100];
+    int i;
+    unsigned int u;
+    /* basic: reading of three-char string */
     SCANF_TEST( 1, "foo", "%3c", buffer );
     TESTCASE( memcmp( buffer, "foo", 3 ) == 0 );
+#ifndef TEST_CONVERSION_ONLY
+    /* %% for single % */
+    SCANF_TEST( 1, "%x", "%%%c", buffer );
+    TESTCASE( buffer[0] == 'x' );
+    /* * to skip assignment */
+    SCANF_TEST( 1, "3xfoo", "%*dx%3c", buffer );
+    TESTCASE( memcmp( buffer, "foo", 3 ) == 0 );
+#endif
+    /* domain testing on 'int' type */
+    SCANF_TEST( 1, "-" INT_MIN_DEZ_STR, "%d", &i );
+    TESTCASE( i == INT_MIN );
+    SCANF_TEST( 1, INT_MAX_DEZ_STR, "%d", &i );
+    TESTCASE( i == INT_MAX );
+    SCANF_TEST( 1, "-1", "%d", &i );
+    TESTCASE( i == -1 );
+    SCANF_TEST( 1, "0", "%d", &i );
+    TESTCASE( i == 0 );
+    SCANF_TEST( 1, "1", "%d", &i );
+    TESTCASE( i == 1 );
+    SCANF_TEST( 1, "-" INT_MIN_DEZ_STR, "%i", &i );
+    TESTCASE( i == INT_MIN );
+    SCANF_TEST( 1, INT_MAX_DEZ_STR, "%i", &i );
+    TESTCASE( i == INT_MAX );
+    SCANF_TEST( 1, "-1", "%i", &i );
+    TESTCASE( i == -1 );
+    SCANF_TEST( 1, "0", "%i", &i );
+    TESTCASE( i == 0 );
+    SCANF_TEST( 1, "1", "%i", &i );
+    TESTCASE( i == 1 );
+    SCANF_TEST( 1, "0x7" INT_HEXDIG, "%i", &i );
+    TESTCASE( i == INT_MAX );
+    SCANF_TEST( 1, "0x0", "%i", &i );
+    TESTCASE( i == 0 );
+#ifndef TEST_CONVERSION_ONLY
+    SCANF_TEST( 1, "00", "%i%n", &i, &u );
+    TESTCASE( i == 0 );
+    TESTCASE( u == 2 );
+#endif
+    /* domain testing on 'unsigned int' type */
+    SCANF_TEST( 1, UINT_MAX_DEZ_STR, "%u", &u );
+    TESTCASE( u == UINT_MAX );
+    SCANF_TEST( 1, "0", "%u", &u );
+    TESTCASE( u == 0 );
+    SCANF_TEST( 1, "f" INT_HEXDIG, "%x", &u );
+    TESTCASE( u == UINT_MAX );
+    SCANF_TEST( 1, "7" INT_HEXDIG, "%x", &u );
+    TESTCASE( u == INT_MAX );
+    SCANF_TEST( 1, "0", "%o", &u );
+    TESTCASE( u == 0 );
+    SCANF_TEST( 1, INT_OCTDIG, "%o", &u );
+    TESTCASE( u == UINT_MAX );
 }