From: solar Date: Wed, 14 Jun 2006 05:08:14 +0000 (+0000) Subject: Added preliminary test drivers. X-Git-Tag: v0.5~161 X-Git-Url: https://pd.if.org/git/?p=pdclib;a=commitdiff_plain;h=f0ac10970fd7b6bca57495e1aa41517c1e673110 Added preliminary test drivers. --- diff --git a/functions/stdio/remove.c b/functions/stdio/remove.c index b79ef0b..a563e4c 100644 --- a/functions/stdio/remove.c +++ b/functions/stdio/remove.c @@ -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 +#include + 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; } diff --git a/functions/stdio/rename.c b/functions/stdio/rename.c index 66ba2b8..f3ff01e 100644 --- a/functions/stdio/rename.c +++ b/functions/stdio/rename.c @@ -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 + 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; }