From c74696c06da7b606d45ed8e2f08d3e49753a60e0 Mon Sep 17 00:00:00 2001 From: Doug Lyons Date: Sat, 1 Sep 2018 17:13:50 +0200 Subject: [PATCH] [GDI32_APITEST] Add tests for GetTextFaceAliasW(), based on Katayama Hirofumi MZ's tests from CORE-14926. CORE-14995 --- modules/rostests/apitests/gdi32/GetTextFace.c | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/modules/rostests/apitests/gdi32/GetTextFace.c b/modules/rostests/apitests/gdi32/GetTextFace.c index e304986d13f..5814562527d 100644 --- a/modules/rostests/apitests/gdi32/GetTextFace.c +++ b/modules/rostests/apitests/gdi32/GetTextFace.c @@ -3,11 +3,21 @@ * LICENSE: GPL - See COPYING in the top level directory * PURPOSE: Test for GetTextFace * PROGRAMMERS: Timo Kreuzer + * Katayama Hirofumi MZ + * Doug Lyons */ #include "precomp.h" -void Test_GetTextFace() +/* Exported by gdi32.dll but undocumented */ +INT +WINAPI +GetTextFaceAliasW( + IN HDC hdc, + IN INT c, + OUT LPWSTR lpAliasName); + +void Test_GetTextFace(void) { HDC hDC; INT ret; @@ -73,8 +83,70 @@ void Test_GetTextFace() DeleteDC(hDC); } +void Test_GetTextFaceAliasW(void) +{ + HDC hDC; + INT ret; + INT ret2; + UINT i; + LOGFONTW lf; + HFONT hFontOld, hFont; + WCHAR buf1[LF_FACESIZE]; + WCHAR buf2[LF_FACESIZE]; + + static struct + { + LPCWSTR lpFaceName; + LPCWSTR lpExpectedFaceName; + LPCWSTR lpExpectedAlias; + } FaceTests[] = + { + {L"Arial", L"Arial", L"Arial"}, + {L"Tahoma", L"Tahoma", L"Tahoma"}, + {L"Tahoma Bold", L"MS Sans Serif", L"MS Sans Serif"}, // That's what Windows 2003 and 7 returns. + {L"Helv", L"Helv", L"Helv"}, + {L"Tms Rmn", L"Tms Rmn", L"Tms Rmn"}, + {L"Times", L"Times", L"Times"}, + {L"invalid", L"MS Sans Serif", L"MS Sans Serif"} + }; + + hDC = CreateCompatibleDC(NULL); + ok(hDC != 0, "CreateCompatibleDC failed, skipping tests.\n"); + if (!hDC) return; + + for (i = 0; i < ARRAYSIZE(FaceTests); ++i) + { + ZeroMemory(&lf, sizeof(lf)); + StringCchCopyW(lf.lfFaceName, ARRAYSIZE(lf.lfFaceName), FaceTests[i].lpFaceName); + + hFont = CreateFontIndirectW(&lf); + if (!hFont) + { + trace("Failed to create font '%S'!\n", lf.lfFaceName); + continue; + } + + hFontOld = SelectObject(hDC, hFont); + + ret = GetTextFaceW(hDC, ARRAYSIZE(buf1), buf1); + ok(ret != 0, "%S GetTextFaceW failed.\n", FaceTests[i].lpFaceName); + ok(wcscmp(buf1, FaceTests[i].lpExpectedFaceName) == 0, "'%S' GetTextFaceW failed, got '%S', expected '%S'.\n", + FaceTests[i].lpFaceName, buf1, FaceTests[i].lpExpectedFaceName); + + ret2 = GetTextFaceAliasW(hDC, ARRAYSIZE(buf2), buf2); + ok(ret2 != 0, "%S GetTextFaceAliasW failed.\n", FaceTests[i].lpFaceName); + ok(wcscmp(buf2, FaceTests[i].lpExpectedAlias) == 0, "'%S' GetTextFaceAliasW failed, got '%S', expected '%S'.\n", + FaceTests[i].lpFaceName, buf2, FaceTests[i].lpExpectedAlias); + + SelectObject(hDC, hFontOld); + DeleteObject(hFont); + } + + DeleteDC(hDC); +} + START_TEST(GetTextFace) { Test_GetTextFace(); + Test_GetTextFaceAliasW(); } - -- 2.17.1