Akihiro Sagawa : gdi32/tests: Add a test for a charset enumeration order.

Alexandre Julliard julliard at winehq.org
Mon Apr 4 10:10:56 CDT 2011


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

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Fri Apr  1 21:19:52 2011 +0900

gdi32/tests: Add a test for a charset enumeration order.

---

 dlls/gdi32/tests/font.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c
index a9a8755..b0f2e9f 100644
--- a/dlls/gdi32/tests/font.c
+++ b/dlls/gdi32/tests/font.c
@@ -2169,6 +2169,62 @@ else
     ReleaseDC(0, hdc);
 }
 
+static INT CALLBACK enum_font_data_proc(const LOGFONT *lf, const TEXTMETRIC *ntm, DWORD type, LPARAM lParam)
+{
+    struct enum_font_data *efd = (struct enum_font_data *)lParam;
+
+    if (type != TRUETYPE_FONTTYPE) return 1;
+
+    if (efd->total < MAX_ENUM_FONTS)
+        efd->lf[efd->total++] = *lf;
+    else
+        trace("enum tests invalid; you have more than %d fonts\n", MAX_ENUM_FONTS);
+
+    return 1;
+}
+
+static void test_EnumFontFamiliesEx_default_charset(void)
+{
+    struct enum_font_data efd;
+    LOGFONT gui_font, enum_font;
+    DWORD ret;
+    HDC hdc;
+
+    ret = GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(gui_font), &gui_font);
+    ok(ret, "GetObject failed.\n");
+    if (!ret)
+        return;
+
+    efd.total = 0;
+
+    hdc = GetDC(0);
+    memset(&enum_font, 0, sizeof(enum_font));
+    lstrcpy(enum_font.lfFaceName, gui_font.lfFaceName);
+    enum_font.lfCharSet = DEFAULT_CHARSET;
+    EnumFontFamiliesEx(hdc, &enum_font, enum_font_data_proc, (LPARAM)&efd, 0);
+    ReleaseDC(0, hdc);
+
+    if (efd.total == 0) {
+        skip("'%s' is not found or not a TrueType font.\n", gui_font.lfFaceName);
+        return;
+    }
+    trace("'%s' has %d charsets.\n", gui_font.lfFaceName, efd.total);
+
+    if (gui_font.lfCharSet != ANSI_CHARSET) {
+        todo_wine
+        ok(efd.lf[0].lfCharSet == gui_font.lfCharSet,
+           "(%s) got charset %d expected %d\n",
+           efd.lf[0].lfFaceName, efd.lf[0].lfCharSet, gui_font.lfCharSet);
+    }
+    else {
+        ok(efd.lf[0].lfCharSet == gui_font.lfCharSet,
+           "(%s) got charset %d expected %d\n",
+           efd.lf[0].lfFaceName, efd.lf[0].lfCharSet, gui_font.lfCharSet);
+    }
+
+    return;
+}
+
 static void test_negative_width(HDC hdc, const LOGFONTA *lf)
 {
     HFONT hfont, hfont_prev;
@@ -3615,6 +3671,7 @@ START_TEST(font)
     }
     else
         skip("Arial Black or Symbol/Wingdings is not installed\n");
+    test_EnumFontFamiliesEx_default_charset();
     test_GetTextMetrics();
     test_GdiRealizationInfo();
     test_GetTextFace();




More information about the wine-cvs mailing list