X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=testing%2Ffscan_sources.incl;fp=testing%2Ffscan_sources.incl;h=a7dc18b71a47e4dcc59badb49085e3d9973c7bd1;hb=4340db942a3f1dc39724c1f05264d38586bc062a;hp=0000000000000000000000000000000000000000;hpb=a5d97013d6b1e5c969572162db3049a47b497c4d;p=pdclib diff --git a/testing/fscan_sources.incl b/testing/fscan_sources.incl new file mode 100644 index 0000000..a7dc18b --- /dev/null +++ b/testing/fscan_sources.incl @@ -0,0 +1,67 @@ + FILE * general = fopen( "testing/scanf_testdata_general", "wb+" ); + TESTCASE( general != NULL ); + TESTCASE( fwrite( "12345678901\0003-5+7\0009\3772 4 6 8 0\3771 \011 5%% 0", 1, 40, general ) == 40 ); + rewind( general ); + + FILE * decimal = fopen( "testing/scanf_testdata_decimal", "wb+" ); + TESTCASE( decimal != NULL ); + TESTCASE( fwrite( "-0 +0 -128 +127 +255 -32768 +32767 +65535\n" + "-2147483648 +2147483647 +4294967295\n" + "-9223372036854775808 +9223372036854775807\n" + "+18446744073709551615\n", 1, 142, decimal ) == 142 ); + rewind( decimal ); + + FILE * hexadecimal = fopen( "testing/scanf_testdata_hexadecimal", "wb+" ); + TESTCASE( hexadecimal != NULL ); + TESTCASE( fwrite( "-0x0 -0x000 -0x7f -0x80 0xff -0x7fff -0x8000\n" + "0xffff -0x7fffffff -0x80000000 0xffffffff\n" + "-0x7fffffffffffffff -0x8000000000000000\n" + "0xffffffffffffffff\n", 1, 146, hexadecimal ) == 146 ); + rewind( hexadecimal ); + + FILE * octal = fopen( "testing/scanf_testdata_octal", "wb+" ); + TESTCASE( octal != NULL ); + TESTCASE( fwrite( "+0000 -0000 +0177 +0377 -0377 +077777 +0177777\n" + "-0177777 +017777777777 +037777777777\n" + "-037777777777 +0777777777777777777777\n" + "+01777777777777777777777\n" + "-01777777777777777777777\n", 1, 172, octal ) == 172 ); + rewind( octal ); + + FILE * alpha = fopen( "testing/scanf_testdata_alpha", "wb+" ); + TESTCASE( alpha != NULL ); + TESTCASE( fwrite( "abcdefgh-ijklmnop[qrs%uvw]xyz", 1, 29, alpha ) == 29 ); + rewind( alpha ); + +#ifndef REGTEST + FILE * special = fopen( "testing/scanf_testdata_special", "wb+" ); + TESTCASE( special != NULL ); + TESTCASE( fwrite( "-0xz\n", 1, 5, special ) == 5 ); + rewind( special ); +#endif + + +/* fscan */ +#define TESTSCAN( result, count, source, offset, ... ) \ + do \ + { \ + int n = -1; \ + TESTCASE( fseek( source, offset, SEEK_SET ) == 0 ); \ + int res = SCANFUNC( source, __VA_ARGS__ ); \ + if ( res != result ) \ + { \ + rc += 1; \ + printf( "FAILED: " __FILE__ ", line %d - expected result %d, got %d\n", __LINE__, result, res ); \ + } \ + if ( n != count ) \ + { \ + rc += 1; \ + printf( "FAILED: " __FILE__ ", line %d - expected count %d, got %d\n", __LINE__, count, n ); \ + } \ + } while ( 0 ) + +#define SCAN( format ) format "%n", &n +#define SCANPARMS( format, ... ) format "%n", __VA_ARGS__, &n + +#define _PDCLIB_FSCAN +