https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8629c57a959c44e03c40e...
commit f8629c57a959c44e03c40e8ac92b93b83193ed36 Author: Amine Khaldi amine.khaldi@reactos.org AuthorDate: Mon Feb 4 13:06:57 2019 +0100 Commit: Amine Khaldi amine.khaldi@reactos.org CommitDate: Mon Feb 4 13:06:57 2019 +0100
[USP10_WINETEST] Sync with Wine Staging 4.0. CORE-15682 --- modules/rostests/winetests/usp10/usp10.c | 64 ++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 7 deletions(-)
diff --git a/modules/rostests/winetests/usp10/usp10.c b/modules/rostests/winetests/usp10/usp10.c index aa26997112..e907c8c40a 100644 --- a/modules/rostests/winetests/usp10/usp10.c +++ b/modules/rostests/winetests/usp10/usp10.c @@ -3349,7 +3349,7 @@ static void test_ScriptCacheGetHeight(HDC hdc)
height = 123; hr = ScriptCacheGetHeight(hdc, NULL, &height); - ok(hr == E_INVALIDARG, "Uexpected hr %#x.\n", hr); + ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr); ok(height == 123, "Unexpected height.\n");
memset(&tm, 0, sizeof(tm)); @@ -3403,26 +3403,76 @@ static void test_ScriptGetGlyphABCWidth(HDC hdc) { HRESULT hr; SCRIPT_CACHE sc = NULL; - ABC abc; + HFONT hfont, prev_hfont; + TEXTMETRICA tm; + ABC abc, abc2; + LOGFONTA lf; + WORD glyph; + INT width; + DWORD ret;
- hr = ScriptGetGlyphABCWidth(NULL, NULL, 'a', NULL); + glyph = 0; + ret = GetGlyphIndicesA(hdc, "a", 1, &glyph, 0); + ok(ret == 1, "Failed to get glyph index.\n"); + ok(glyph != 0, "Unexpected glyph index.\n"); + + hr = ScriptGetGlyphABCWidth(NULL, NULL, glyph, NULL); ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
- hr = ScriptGetGlyphABCWidth(NULL, &sc, 'a', NULL); + hr = ScriptGetGlyphABCWidth(NULL, &sc, glyph, NULL); ok(broken(hr == E_PENDING) || hr == E_INVALIDARG, /* WIN7 */ "expected E_INVALIDARG, got 0x%08x\n", hr);
- hr = ScriptGetGlyphABCWidth(NULL, &sc, 'a', &abc); + hr = ScriptGetGlyphABCWidth(NULL, &sc, glyph, &abc); ok(hr == E_PENDING, "expected E_PENDING, got 0x%08x\n", hr);
if (0) { /* crashes on WinXP */ - hr = ScriptGetGlyphABCWidth(hdc, &sc, 'a', NULL); + hr = ScriptGetGlyphABCWidth(hdc, &sc, glyph, NULL); ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr); }
- hr = ScriptGetGlyphABCWidth(hdc, &sc, 'a', &abc); + hr = ScriptGetGlyphABCWidth(hdc, &sc, glyph, &abc); ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr); + ok(abc.abcB != 0, "Unexpected width.\n"); + + ret = GetCharABCWidthsI(hdc, glyph, 1, NULL, &abc2); + ok(ret, "Failed to get char width.\n"); + ok(!memcmp(&abc, &abc2, sizeof(abc)), "Unexpected width.\n"); + + ScriptFreeCache(&sc); + + /* Bitmap font */ + memset(&lf, 0, sizeof(lf)); + strcpy(lf.lfFaceName, "System"); + lf.lfHeight = 20; + + hfont = CreateFontIndirectA(&lf); + prev_hfont = SelectObject(hdc, hfont); + + ret = GetTextMetricsA(hdc, &tm); + ok(ret, "Failed to get text metrics.\n"); + ok(!(tm.tmPitchAndFamily & TMPF_TRUETYPE), "Unexpected TrueType font.\n"); + ok(tm.tmPitchAndFamily & TMPF_FIXED_PITCH, "Unexpected fixed pitch font.\n"); + + glyph = 0; + ret = GetGlyphIndicesA(hdc, "i", 1, &glyph, 0); + ok(ret == 1, "Failed to get glyph index.\n"); + ok(glyph != 0, "Unexpected glyph index.\n"); + + sc = NULL; + hr = ScriptGetGlyphABCWidth(hdc, &sc, glyph, &abc); + ok(hr == S_OK, "Failed to get glyph width, hr %#x.\n", hr); + ok(abc.abcB != 0, "Unexpected width.\n"); + + ret = GetCharWidthI(hdc, glyph, 1, NULL, &width); + ok(ret, "Failed to get char width.\n"); + abc2.abcA = abc2.abcC = 0; + abc2.abcB = width; + ok(!memcmp(&abc, &abc2, sizeof(abc)), "Unexpected width.\n"); + + SelectObject(hdc, prev_hfont); + DeleteObject(hfont);
ScriptFreeCache(&sc); }