X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Frename.c;h=3f9152dca7a5d2fb07f1eaa0b558910f040ceb2e;hb=0d54a75af25ca44411e7c4190cc2a93a390e61a2;hp=8e2d3e0bb0306daa0a541208e030a95cae38e8b0;hpb=831a440426dcd5b6da5a7d4de757ab6ea50b3b4a;p=pdclib.old diff --git a/functions/stdio/rename.c b/functions/stdio/rename.c index 8e2d3e0..3f9152d 100644 --- a/functions/stdio/rename.c +++ b/functions/stdio/rename.c @@ -22,14 +22,50 @@ int rename( const char * old, const char * new ) #ifdef TEST #include <_PDCLIB_test.h> +#include + int main( void ) { + /* TODO: Extend to internal testing (buffer etc.) */ + char filename1[] = "touch testfile1"; + char filename2[] = "testfile2"; + remove( filename1 + 6 ); + remove( filename2 ); + /* make sure 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( "No testing of rename() - test driver does not know internals of system function." ); + /* 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; } #endif +