https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c74696c06da7b606d45ed8...
commit c74696c06da7b606d45ed8e2f08d3e49753a60e0 Author: Doug Lyons douglyons@douglyons.com AuthorDate: Sat Sep 1 17:13:50 2018 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sat Sep 1 17:17:08 2018 +0200
[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 e304986d13..5814562527 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(); } -