Akihiro Sagawa : msvcrt/tests: Add tests for fflush on input stream.
Alexandre Julliard
julliard at winehq.org
Wed Mar 14 13:56:11 CDT 2012
Module: wine
Branch: master
Commit: 09a7f8c196f3416becbfc4f1500b733e06040e20
URL: http://source.winehq.org/git/wine.git/?a=commit;h=09a7f8c196f3416becbfc4f1500b733e06040e20
Author: Akihiro Sagawa <sagawa.aki at 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();
More information about the wine-cvs
mailing list