Akihiro Sagawa : msvcrt/tests: Add unicode fgetwc tests.

Alexandre Julliard julliard at winehq.org
Wed Mar 27 15:40:06 CDT 2013


Module: wine
Branch: master
Commit: cf2ce8c64ba0734762ac3ecb716b332daeafca43
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cf2ce8c64ba0734762ac3ecb716b332daeafca43

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Wed Mar 27 23:16:50 2013 +0900

msvcrt/tests: Add unicode fgetwc tests.

---

 dlls/msvcrt/tests/file.c |   58 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index 25eab7a..5731437 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -865,6 +865,63 @@ static void test_fgetwc_locale(const char* text, const char* locale, int codepag
     unlink(tempfile);
 }
 
+static void test_fgetwc_unicode(void)
+{
+    char temppath[MAX_PATH], tempfile[MAX_PATH];
+    FILE *tempfh;
+    static const WCHAR wchar_text[] = { 0xfeff, 0xff1f, '!' };
+    char utf8_text[BUFSIZ];
+    int ret, i;
+    wint_t ch;
+
+    GetTempPath(MAX_PATH, temppath);
+    GetTempFileName(temppath, "", 0, tempfile);
+
+    if (!p_fopen_s)
+    {
+        win_skip("fopen_s not available\n");
+        return;
+    }
+
+    tempfh = fopen(tempfile, "wb");
+    ok(tempfh != NULL, "can't open tempfile\n");
+    fwrite(wchar_text, 1, sizeof(wchar_text), tempfh);
+    fclose(tempfh);
+
+    tempfh = fopen(tempfile, "rt,ccs=unicode");
+    ok(tempfh != NULL, "can't open tempfile\n");
+    for (i = 1; i < sizeof(wchar_text)/sizeof(wchar_text[0]); i++)
+    {
+        ch = fgetwc(tempfh);
+        ok(ch == wchar_text[i],
+           "got %04hx, expected %04x (unicode[%d])\n", ch, wchar_text[i], i-1);
+    }
+    ch = fgetwc(tempfh);
+    ok(ch == WEOF, "got %04hx, expected WEOF (unicode)\n", ch);
+    fclose(tempfh);
+
+    tempfh = fopen(tempfile, "wb");
+    ok(tempfh != NULL, "can't open tempfile\n");
+    ret = WideCharToMultiByte(CP_UTF8, 0, wchar_text, sizeof(wchar_text)/sizeof(wchar_text[0]),
+                              utf8_text, sizeof(utf8_text), NULL, NULL);
+    ok(ret > 0, "utf-8 conversion failed\n");
+    fwrite(utf8_text, sizeof(char), ret, tempfh);
+    fclose(tempfh);
+
+    tempfh = fopen(tempfile, "rt, ccs=UTF-8");
+    ok(tempfh != NULL, "can't open tempfile\n");
+    for (i = 1; i < sizeof(wchar_text)/sizeof(wchar_text[0]); i++)
+    {
+        ch = fgetwc(tempfh);
+        ok(ch == wchar_text[i],
+           "got %04hx, expected %04x (utf8[%d])\n", ch, wchar_text[i], i-1);
+    }
+    ch = fgetwc(tempfh);
+    ok(ch == WEOF, "got %04hx, expected WEOF (utf8)\n", ch);
+    fclose(tempfh);
+    unlink(temppath);
+}
+
 static void test_fputwc(void)
 {
     char temppath[MAX_PATH];
@@ -2127,6 +2184,7 @@ START_TEST(file)
     test_fgetwc_locale("AB\x83\xa9", "English", 1252);
     /* \x83 is U+0083 */
     test_fgetwc_locale("AB\x83\xa9", "C", 0);
+    test_fgetwc_unicode();
     test_fputwc();
     test_ctrlz();
     test_file_put_get();




More information about the wine-cvs mailing list