Module: wine Branch: master Commit: 09a7f8c196f3416becbfc4f1500b733e06040e20 URL: http://source.winehq.org/git/wine.git/?a=commit;h=09a7f8c196f3416becbfc4f150...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Mon Mar 12 21:14:03 2012 +0900
msvcrt/tests: Add tests for fflush on input stream.
---
dlls/msvcrt/tests/file.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index b9b904d..9e93234 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -591,6 +591,58 @@ static void test_flsbuf( void ) free(tempf); }
+static void test_fflush( void ) +{ + static const char obuf[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + char buf1[16], buf2[24]; + char *tempf; + FILE *tempfh; + int ret; + + tempf=_tempnam(".","wne"); + + /* Prepare the file. */ + tempfh = fopen(tempf,"wb"); + ok(tempfh != NULL, "Can't open test file.\n"); + fwrite(obuf, 1, sizeof(obuf), tempfh); + fclose(tempfh); + + /* Open the file for input. */ + tempfh = fopen(tempf,"rb"); + ok(tempfh != NULL, "Can't open test file.\n"); + fread(buf1, 1, sizeof(buf1), tempfh); + + /* Using fflush() on input stream is undefined in ANSI. + * But MSDN says that it clears input buffer. */ + _lseek(_fileno(tempfh), 0, SEEK_SET); + ret = fflush(tempfh); + ok(ret == 0, "expected 0, got %d\n", ret); + memset(buf2, '?', sizeof(buf2)); + fread(buf2, 1, sizeof(buf2), tempfh); + todo_wine ok(memcmp(buf1, buf2, sizeof(buf1)) == 0, "Got unexpected data (%c)\n", buf2[0]); + + /* fflush(NULL) doesn't clear input buffer. */ + _lseek(_fileno(tempfh), 0, SEEK_SET); + ret = fflush(NULL); + ok(ret == 0, "expected 0, got %d\n", ret); + memset(buf2, '?', sizeof(buf2)); + fread(buf2, 1, sizeof(buf2), tempfh); + ok(memcmp(buf1, buf2, sizeof(buf1)) != 0, "Got unexpected data (%c)\n", buf2[0]); + + /* _flushall() clears input buffer. */ + _lseek(_fileno(tempfh), 0, SEEK_SET); + ret = _flushall(); + ok(ret >= 0, "unexpected ret %d\n", ret); + memset(buf2, '?', sizeof(buf2)); + fread(buf2, 1, sizeof(buf2), tempfh); + todo_wine ok(memcmp(buf1, buf2, sizeof(buf1)) == 0, "Got unexpected data (%c)\n", buf2[0]); + + fclose(tempfh); + + unlink(tempf); + free(tempf); +} + static void test_fgetwc( void ) { #define LLEN 512 @@ -1582,6 +1634,7 @@ START_TEST(file) test_fgetc(); test_fputc(); test_flsbuf(); + test_fflush(); test_fgetwc(); test_ctrlz(); test_file_put_get();