Paul Vriens : gdi32/tests: Make sure we can run on win9x and NT again.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 5 13:10:28 CST 2007
Module: wine
Branch: master
Commit: 37cba3a9f9214400ed5846195ac577642751d337
URL: http://source.winehq.org/git/wine.git/?a=commit;h=37cba3a9f9214400ed5846195ac577642751d337
Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date: Mon Mar 5 17:29:04 2007 +0100
gdi32/tests: Make sure we can run on win9x and NT again.
---
dlls/gdi32/tests/font.c | 60 +++++++++++++++++++++++++++++------------------
1 files changed, 37 insertions(+), 23 deletions(-)
diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c
index 405d4bd..44586bc 100644
--- a/dlls/gdi32/tests/font.c
+++ b/dlls/gdi32/tests/font.c
@@ -30,9 +30,25 @@
#include "wine/test.h"
+LONG (WINAPI *pGdiGetCharDimensions)(HDC hdc, LPTEXTMETRICW lptm, LONG *height);
+BOOL (WINAPI *pGetCharABCWidthsW)(HDC hdc, UINT first, UINT last, LPABC abc);
+DWORD (WINAPI *pGetFontUnicodeRanges)(HDC hdc, LPGLYPHSET lpgs);
DWORD (WINAPI *pGetGlyphIndicesA)(HDC hdc, LPCSTR lpstr, INT count, LPWORD pgi, DWORD flags);
DWORD (WINAPI *pGetGlyphIndicesW)(HDC hdc, LPCWSTR lpstr, INT count, LPWORD pgi, DWORD flags);
+static HMODULE hgdi32 = 0;
+
+static void init(void)
+{
+ hgdi32 = GetModuleHandleA("gdi32.dll");
+
+ pGdiGetCharDimensions = (void *)GetProcAddress(hgdi32, "GdiGetCharDimensions");
+ pGetCharABCWidthsW = (void *)GetProcAddress(hgdi32, "GetCharABCWidthsW");
+ pGetFontUnicodeRanges = (void *)GetProcAddress(hgdi32, "GetFontUnicodeRanges");
+ pGetGlyphIndicesA = (void *)GetProcAddress(hgdi32, "GetGlyphIndicesA");
+ pGetGlyphIndicesW = (void *)GetProcAddress(hgdi32, "GetGlyphIndicesW");
+}
+
static INT CALLBACK is_font_installed_proc(const LOGFONT *elf, const TEXTMETRIC *ntm, DWORD type, LPARAM lParam)
{
return 0;
@@ -370,27 +386,25 @@ static void test_GdiGetCharDimensions(void)
SIZE size;
LONG avgwidth, height;
static const char szAlphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
- typedef LONG (WINAPI *fnGdiGetCharDimensions)(HDC hdc, LPTEXTMETRICW lptm, LONG *height);
- fnGdiGetCharDimensions GdiGetCharDimensions = (fnGdiGetCharDimensions)GetProcAddress(LoadLibrary("gdi32"), "GdiGetCharDimensions");
- if (!GdiGetCharDimensions) return;
+ if (!pGdiGetCharDimensions) return;
hdc = CreateCompatibleDC(NULL);
GetTextExtentPoint(hdc, szAlphabet, strlen(szAlphabet), &size);
avgwidth = ((size.cx / 26) + 1) / 2;
- ret = GdiGetCharDimensions(hdc, &tm, &height);
+ ret = pGdiGetCharDimensions(hdc, &tm, &height);
ok(ret == avgwidth, "GdiGetCharDimensions should have returned width of %d instead of %d\n", avgwidth, ret);
ok(height == tm.tmHeight, "GdiGetCharDimensions should have set height to %d instead of %d\n", tm.tmHeight, height);
- ret = GdiGetCharDimensions(hdc, &tm, NULL);
+ ret = pGdiGetCharDimensions(hdc, &tm, NULL);
ok(ret == avgwidth, "GdiGetCharDimensions should have returned width of %d instead of %d\n", avgwidth, ret);
- ret = GdiGetCharDimensions(hdc, NULL, NULL);
+ ret = pGdiGetCharDimensions(hdc, NULL, NULL);
ok(ret == avgwidth, "GdiGetCharDimensions should have returned width of %d instead of %d\n", avgwidth, ret);
height = 0;
- ret = GdiGetCharDimensions(hdc, NULL, &height);
+ ret = pGdiGetCharDimensions(hdc, NULL, &height);
ok(ret == avgwidth, "GdiGetCharDimensions should have returned width of %d instead of %d\n", avgwidth, ret);
ok(height == size.cy, "GdiGetCharDimensions should have set height to %d instead of %d\n", size.cy, height);
@@ -401,11 +415,9 @@ static void test_GetCharABCWidthsW(void)
{
BOOL ret;
ABC abc[1];
- typedef BOOL (WINAPI *fnGetCharABCWidthsW)(HDC hdc, UINT first, UINT last, LPABC abc);
- fnGetCharABCWidthsW GetCharABCWidthsW = (fnGetCharABCWidthsW)GetProcAddress(LoadLibrary("gdi32"), "GetCharABCWidthsW");
- if (!GetCharABCWidthsW) return;
+ if (!pGetCharABCWidthsW) return;
- ret = GetCharABCWidthsW(NULL, 'a', 'a', abc);
+ ret = pGetCharABCWidthsW(NULL, 'a', 'a', abc);
ok(!ret, "GetCharABCWidthsW should have returned FALSE\n");
}
@@ -493,10 +505,7 @@ static void test_GetGlyphIndices()
WORD glyphs[(sizeof(testtext)/2)-1];
TEXTMETRIC textm;
- typedef BOOL (WINAPI *fnGetGlyphIndicesW)(HDC hdc, LPCWSTR lpstr, INT count, LPWORD pgi, DWORD flags);
- fnGetGlyphIndicesW GetGlyphIndicesW = (fnGetGlyphIndicesW)GetProcAddress(LoadLibrary("gdi32"),
- "GetGlyphIndicesW");
- if (!GetGlyphIndicesW) {
+ if (!pGetGlyphIndicesW) {
trace("GetGlyphIndices not available on platform\n");
return;
}
@@ -516,11 +525,11 @@ static void test_GetGlyphIndices()
ok(GetTextMetrics(hdc, &textm), "GetTextMetric failed\n");
flags |= GGI_MARK_NONEXISTING_GLYPHS;
- charcount = GetGlyphIndicesW(hdc, testtext, (sizeof(testtext)/2)-1, glyphs, flags);
+ charcount = pGetGlyphIndicesW(hdc, testtext, (sizeof(testtext)/2)-1, glyphs, flags);
ok(charcount == 5, "GetGlyphIndices count of glyphs should = 5 not %d\n", charcount);
ok(glyphs[4] == 0x001f, "GetGlyphIndices should have returned a nonexistent char not %04x\n", glyphs[4]);
flags = 0;
- charcount = GetGlyphIndicesW(hdc, testtext, (sizeof(testtext)/2)-1, glyphs, flags);
+ charcount = pGetGlyphIndicesW(hdc, testtext, (sizeof(testtext)/2)-1, glyphs, flags);
ok(charcount == 5, "GetGlyphIndices count of glyphs should = 5 not %d\n", charcount);
ok(glyphs[4] == textm.tmDefaultChar, "GetGlyphIndices should have returned a %04x not %04x\n",
textm.tmDefaultChar, glyphs[4]);
@@ -1048,9 +1057,6 @@ static void test_font_charset(void)
};
int i;
- pGetGlyphIndicesA = (void *)GetProcAddress(GetModuleHandle("gdi32.dll"), "GetGlyphIndicesA");
- pGetGlyphIndicesW = (void *)GetProcAddress(GetModuleHandle("gdi32.dll"), "GetGlyphIndicesW");
-
if (!pGetGlyphIndicesA || !pGetGlyphIndicesW)
{
skip("Skipping the font charset test on a Win9x platform\n");
@@ -1096,6 +1102,12 @@ static void test_GetFontUnicodeRanges(void)
DWORD size, i;
GLYPHSET *gs;
+ if (!pGetFontUnicodeRanges)
+ {
+ skip("GetFontUnicodeRanges not available before W2K\n");
+ return;
+ }
+
memset(&lf, 0, sizeof(lf));
lstrcpyA(lf.lfFaceName, "Arial");
hfont = create_font("Arial", &lf);
@@ -1103,15 +1115,15 @@ static void test_GetFontUnicodeRanges(void)
hdc = GetDC(0);
hfont_old = SelectObject(hdc, hfont);
- size = GetFontUnicodeRanges(NULL, NULL);
+ size = pGetFontUnicodeRanges(NULL, NULL);
ok(!size, "GetFontUnicodeRanges succeeded unexpectedly\n");
- size = GetFontUnicodeRanges(hdc, NULL);
+ size = pGetFontUnicodeRanges(hdc, NULL);
ok(size, "GetFontUnicodeRanges failed unexpectedly\n");
gs = HeapAlloc(GetProcessHeap(), 0, size);
- size = GetFontUnicodeRanges(hdc, gs);
+ size = pGetFontUnicodeRanges(hdc, gs);
ok(size, "GetFontUnicodeRanges failed\n");
for (i = 0; i < gs->cRanges; i++)
@@ -1127,6 +1139,8 @@ static void test_GetFontUnicodeRanges(void)
START_TEST(font)
{
+ init();
+
test_logfont();
test_bitmap_font();
test_bitmap_font_metrics();
More information about the wine-cvs
mailing list