https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8629c57a959c44e03c40…
commit f8629c57a959c44e03c40e8ac92b93b83193ed36
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Mon Feb 4 13:06:57 2019 +0100
Commit: Amine Khaldi <amine.khaldi(a)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);
}