]> pd.if.org Git - pdclib/commitdiff
Added preliminary test drivers.
authorsolar <unknown>
Wed, 14 Jun 2006 05:08:14 +0000 (05:08 +0000)
committersolar <unknown>
Wed, 14 Jun 2006 05:08:14 +0000 (05:08 +0000)
functions/stdio/remove.c
functions/stdio/rename.c

index b79ef0bcad89af05e045136e65a12d0bbfdd78f1..a563e4c39c829d7bd6225085a1e3d3efca838a57 100644 (file)
@@ -20,15 +20,33 @@ int remove( const char * filename )
 #endif
 
 #ifdef TEST
+/* TODO: Work around the following undef */
+#undef SEEK_SET
 #include <_PDCLIB_test.h>
 
+#include <stdlib.h>
+#include <string.h>
+
 int main( void )
 {
-#ifndef REGTEST
-    TESTCASE( NO_TESTDRIVER );
-#else
-    puts( " NOTEST remove() test driver is PDCLib-specific." );
-#endif
+    /* TODO: Extend to internal testing (buffer etc.) */
+    char filename[] = "touch testfile";
+    system( filename );
+    /* file is actually readable */
+    TESTCASE( fopen( filename + 6, "r" ) != NULL );
+    /* remove function does not return error */
+    TESTCASE( remove( filename + 6 ) == 0 );
+    /* file is no longer readable */
+    TESTCASE( fopen( filename + 6, "r" ) == NULL );
+    /* remove function does return error */
+    TESTCASE( remove( filename + 6 ) != 0 );
+    memcpy( filename, "mkdir", 5 );
+    /* create directory */
+    system( filename );
+    /* remove function does not return error */
+    TESTCASE( remove( filename + 6 ) == 0 );
+    /* remove function does return error */
+    TESTCASE( remove( filename + 6 ) != 0 );
     return TEST_RESULTS;
 }
 
index 66ba2b8fbfce0b0c0905f6b27166129c43121c3c..f3ff01ee604a44ba46fc65c4802d8c17ef22ba9a 100644 (file)
@@ -20,15 +20,50 @@ int rename( const char * old, const char * new )
 #endif
 
 #ifdef TEST
+/* TODO: Work around the following undef */
+#undef SEEK_SET
 #include <_PDCLIB_test.h>
 
+#include <stdlib.h>
+
 int main( void )
 {
+    /* TODO: Extend to internal testing (buffer etc.) */
+    char filename1[] = "touch testfile1";
+    char filename2[] = "testfile2";
+    /* check that neither file exists */
+    TESTCASE( fopen( filename1 + 6, "r" ) == NULL );
+    TESTCASE( fopen( filename2, "r" ) == NULL );
+    /* rename file 1 to file 2 - expected to fail */
+    TESTCASE( rename( filename1 + 6, filename2 ) == -1 );
+    /* create file 1 */
+    system( filename1 );
+    /* check that file 1 exists */
+    TESTCASE( fopen( filename1 + 6, "r" ) != NULL );
+    /* rename file 1 to file 2 */
+    TESTCASE( rename( filename1 + 6, filename2 ) == 0 );
+    /* check that file 2 exists, file 1 does not */
+    TESTCASE( fopen( filename1 + 6, "r" ) == NULL );
+    TESTCASE( fopen( filename2, "r" ) != NULL );
+    /* create another file 1 */
+    system( filename1 );
+    /* check that file 1 exists */
+    TESTCASE( fopen( filename1 + 6, "r" ) != NULL );
+    /* rename file 1 to file 2 - expected to fail, see comment in
+       _PDCLIB_rename() itself.
+    */
 #ifndef REGTEST
-    TESTCASE( NO_TESTDRIVER );
+    TESTCASE( rename( filename1 + 6, filename2 ) == -1 );
 #else
-    puts( " NOTEST rename() test driver is PDCLib-specific." );
+    /* glibc rename() overwrites existing destination file. */
+    TESTCASE( rename( filename1 + 6, filename2 ) == 0 );
 #endif
+    /* remove both files */
+    remove( filename1 + 6 );
+    remove( filename2 );
+    /* check that they're gone */
+    TESTCASE( fopen( filename1 + 6, "r" ) == NULL );
+    TESTCASE( fopen( filename2, "r" ) == NULL );
     return TEST_RESULTS;
 }