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