]> pd.if.org Git - pdclib/commitdiff
Intermediate work improving printf() family unified testing.
authorsolar <unknown>
Fri, 16 Jul 2010 16:31:35 +0000 (16:31 +0000)
committersolar <unknown>
Fri, 16 Jul 2010 16:31:35 +0000 (16:31 +0000)
functions/stdio/fprintf.c
functions/stdio/fprintf_reftest.incl [new file with mode: 0644]
functions/stdio/printf_reference.txt [new file with mode: 0644]
functions/stdio/printf_testcases.incl
functions/stdio/vfprintf.c
functions/stdio/vprintf.c

index e3fbdab0c048ea83d3b06dbe55799694cbc0cc01..31e3f57176e956a312866d367e44439644af30dc 100644 (file)
@@ -33,15 +33,10 @@ int fprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCL
 int main( void )
 {
     FILE * buffer;
-    TESTCASE( ( buffer = fopen( "testfile", "w" ) ) != NULL );
+    TESTCASE( ( buffer = fopen( "testfile", "wb" ) ) != NULL );
 #include "printf_testcases.incl"
     TESTCASE( fclose( buffer ) == 0 );
-    char readbuffer[1000];
-    TESTCASE( ( buffer = fopen( "testfile", "r" ) ) != NULL );
-    TESTCASE( fread( readbuffer, 1, 1000, buffer ) == 985 );
-    TESTCASE( fclose( buffer ) == 0 );
-    TESTCASE( remove( "testfile" ) == 0 );
-    TESTCASE( memcmp( readbuffer, "-1281270-32768327670-214748364821474836470-214748364821474836470-922337203685477580892233720368547758070255255655356553542949672954294967295429496729542949672951844674407370955161518446744073709551615FFFFFFFF0XFFFFFFFFffffffff0xffffffff37777777777037777777777%.0#o-2147483648+2147483647+042949672954294967295-2147483648 2147483647 042949672954294967295-21474836482147483647-21474836482147483647-2147483648 2147483647 -2147483648  2147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647  -21474836482147483647-21474836482147483647-214748364802147483647-02147483648002147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647            00000000002147483647ffffffff0xffffffff0xffffffff-2147483648-2147483648-21474836480xffffffff0xffffffff0xffffffff214748364721474836472147483647+2147483647+2147483647+2147483647+2147483647+2147483647+2147483647- 2147483647- 2147483647 % -2147483648xabcdef0xdeadbeef123456789", 985 ) == 0 );
+#include "fprintf_reftest.incl"
     return TEST_RESULTS;
 }
 
diff --git a/functions/stdio/fprintf_reftest.incl b/functions/stdio/fprintf_reftest.incl
new file mode 100644 (file)
index 0000000..afc89b9
--- /dev/null
@@ -0,0 +1,13 @@
+    {
+    char readbuffer[2000];
+    char refbuffer[2000];
+    size_t readcounter;
+    TESTCASE( ( buffer = fopen( "testfile", "r" ) ) != NULL );
+    readcounter = fread( readbuffer, 1, 2000, buffer );
+    TESTCASE( fclose( buffer ) == 0 );
+    TESTCASE( ( buffer = fopen( "functions/stdio/printf_reference.txt", "r" ) ) != NULL );
+    TESTCASE( fread( refbuffer, 1, 2000, buffer ) == readcounter );
+    TESTCASE( fclose( buffer ) == 0 );
+    TESTCASE( memcmp( readbuffer, refbuffer, readcounter ) == 0 );
+    TESTCASE( remove( "testfile" ) == 0 );
+    }
diff --git a/functions/stdio/printf_reference.txt b/functions/stdio/printf_reference.txt
new file mode 100644 (file)
index 0000000..c3e1d86
--- /dev/null
@@ -0,0 +1 @@
+-1281270-32768327670-214748364821474836470-922337203685477580892233720368547758070-92233720368547758089223372036854775807025525565535655354294967295429496729518446744073709551615184467440737095516151844674407370955161518446744073709551615FFFFFFFF0XFFFFFFFFffffffff0xffffffff37777777777037777777777%.0#o-2147483648+2147483647+042949672954294967295-2147483648 2147483647 042949672954294967295-21474836482147483647-21474836482147483647-2147483648 2147483647 -2147483648  2147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647  -21474836482147483647-21474836482147483647-214748364802147483647-02147483648002147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647            00000000002147483647ffffffff0xffffffff0xffffffff-2147483648-2147483648-21474836480xffffffff0xffffffff0xffffffff214748364721474836472147483647+2147483647+2147483647+2147483647+2147483647+2147483647+2147483647- 2147483647- 2147483647 % -2147483648xabcdef0xdeadbeef123456789
\ No newline at end of file
index fb8b0b672363ac086ea41715a7920a18807c703e..432d1e2e78fa38c787785e4bd5597604e7e660c4 100644 (file)
@@ -1,3 +1,47 @@
+    {
+
+#if UINT_MAX / 0xffffu == 1
+#define _PDCLIB_UINT_DIG 5
+#define _PDCLIB_INT_DIG  5
+#define _PDCLIB_INT_HEXDIG FFFF
+#define _PDCLIB_INT_hexdig ffff
+#define _PDCLIB_INT_OCTDIG 177777
+#elif UINT_MAX / 0xffffffffu == 1
+#define _PDCLIB_UINT_DIG 10
+#define _PDCLIB_INT_DIG  10
+#define _PDCLIB_INT_HEXDIG FFFFFFFF
+#define _PDCLIB_INT_hexdig ffffffff
+#define _PDCLIB_INT_OCTDIG 37777777777
+#elif UINT_MAX / 0xffffffffffffffffu == 1
+#define _PDCLIB_UINT_DIG 20
+#define _PDCLIB_INT_DIG  19
+#define _PDCLIB_INT_HEXDIG FFFFFFFFFFFFFFFF
+#define _PDCLIB_INT_hexdig ffffffffffffffff
+#define _PDCLIB_INT_OCTDIG 1777777777777777777777
+#else
+#error Unsupported width of 'int' (neither 16, 32, nor 64 bit).
+#endif
+
+#if ULONG_MAX / 0xfffffffful == 1
+#define _PDCLIB_ULONG_DIG 10
+#define _PDCLIB_LONG_DIG  10
+#elif ULONG_MAX / 0xfffffffffffffffful == 1
+#define _PDCLIB_ULONG_DIG 20
+#define _PDCLIB_LONG_DIG  19
+#else
+#error Unsupported width of 'long' (neither 32 nor 64 bit).
+#endif
+
+#if ULLONG_MAX / 0xffffffffffffffffull == 1
+#define _PDCLIB_ULLONG_DIG 20
+#define _PDCLIB_LLONG_DIG  19
+#elif ULLONG_MAX / 0xffffffffffffffffffffffffffffffffull == 1
+#define _PDCLIB_ULLONG_DIG 38
+#define _PDCLIB_LLONG_DIG  38
+#else
+#error Unsupported width of 'long long' (neither 64 nor 128 bit).
+#endif
+
     TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MIN ) == 4 );
     //TESTCASE( strcmp( buffer, "-128" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MAX ) == 3 );
     //TESTCASE( strcmp( buffer, "32767" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hd", 0 ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%d", INT_MIN ) == 11 );
+    TESTCASE( testprintf( buffer, 100, "%d", INT_MIN ) == _PDCLIB_INT_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-2147483648" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%d", INT_MAX ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%d", INT_MAX ) == _PDCLIB_INT_DIG );
     //TESTCASE( strcmp( buffer, "2147483647" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%d", 0 ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MIN ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 11 : 20 );
+    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MIN ) == _PDCLIB_LONG_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-2147483648" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MAX ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MAX ) == _PDCLIB_LONG_DIG );
     //TESTCASE( strcmp( buffer, "2147483647" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%ld", 0l ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MIN ) == 20 );
+    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MIN ) == _PDCLIB_LLONG_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-9223372036854775808" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MAX ) == 19 );
+    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MAX ) == _PDCLIB_LLONG_DIG );
     //TESTCASE( strcmp( buffer, "9223372036854775807" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%lld", 0ll ) );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
     //TESTCASE( strcmp( buffer, "65535" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hu", (unsigned short)-1 ) == 5 );
     //TESTCASE( strcmp( buffer, "65535" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%u", UINT_MAX ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%u", UINT_MAX ) == _PDCLIB_UINT_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%u", -1u ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%u", -1u ) == _PDCLIB_UINT_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lu", ULONG_MAX ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%lu", ULONG_MAX ) == _PDCLIB_ULONG_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lu", -1ul ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%lu", -1ul ) == _PDCLIB_ULONG_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%llu", ULLONG_MAX ) == 20 );
     //TESTCASE( strcmp( buffer, "18446744073709551615" ) == 0 );
         TESTCASE( val1 == 6 );
         TESTCASE( val2 == 9 );
     }
+    }
index 6f4b32689d86be354e3fb280ddc3facad3bb7def..6ff56ff905a3adb538816dc85b0ac39af55ed3b6 100644 (file)
@@ -67,15 +67,10 @@ static int testprintf( FILE * stream, size_t n, const char * format, ... )
 int main( void )
 {
     FILE * buffer;
-    TESTCASE( ( buffer = fopen( "testfile", "w" ) ) != NULL );
+    TESTCASE( ( buffer = fopen( "testfile", "wb" ) ) != NULL );
 #include "printf_testcases.incl"
     TESTCASE( fclose( buffer ) == 0 );
-    char readbuffer[1000];
-    TESTCASE( ( buffer = fopen( "testfile", "r" ) ) != NULL );
-    TESTCASE( fread( readbuffer, 1, 1000, buffer ) == 985 );
-    TESTCASE( fclose( buffer ) == 0 );
-    TESTCASE( remove( "testfile" ) == 0 );
-    TESTCASE( memcmp( readbuffer, "-1281270-32768327670-214748364821474836470-214748364821474836470-922337203685477580892233720368547758070255255655356553542949672954294967295429496729542949672951844674407370955161518446744073709551615FFFFFFFF0XFFFFFFFFffffffff0xffffffff37777777777037777777777%.0#o-2147483648+2147483647+042949672954294967295-2147483648 2147483647 042949672954294967295-21474836482147483647-21474836482147483647-2147483648 2147483647 -2147483648  2147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647  -21474836482147483647-21474836482147483647-214748364802147483647-02147483648002147483647-21474836482147483647-21474836482147483647-21474836482147483647 -2147483648 2147483647            00000000002147483647ffffffff0xffffffff0xffffffff-2147483648-2147483648-21474836480xffffffff0xffffffff0xffffffff214748364721474836472147483647+2147483647+2147483647+2147483647+2147483647+2147483647+2147483647- 2147483647- 2147483647 % -2147483648xabcdef0xdeadbeef123456789", 985 ) == 0 );
+#include "fprintf_reftest.incl"
     return TEST_RESULTS;
 }
 
index 58e4748c6a1ede25bba056b5b5daaff6b4ef00cb..4af2f385ebb52d7890aed185893df372b2298cf0 100644 (file)
@@ -36,11 +36,11 @@ static int testprintf( FILE * stream, size_t n, const char * format, ... )
 int main( void )
 {
     FILE * buffer;
-    TESTCASE( ( buffer = freopen( "testfile", "w", stdout ) ) != NULL );
+    TESTCASE( ( buffer = freopen( "testfile", "wb", stdout ) ) != NULL );
 #include "printf_testcases.incl"
     TESTCASE( fclose( buffer ) == 0 );
     char readbuffer[1000];
-    TESTCASE( ( buffer = fopen( "testfile", "r" ) ) != NULL );
+    TESTCASE( ( buffer = fopen( "testfile", "rb" ) ) != NULL );
     TESTCASE( fread( readbuffer, 1, 1000, buffer ) == 985 );
     TESTCASE( fclose( buffer ) == 0 );
     TESTCASE( remove( "testfile" ) == 0 );