[PATCH 1/6] usp10/tests: Some tests for ScriptCacheGetHeight() caching behaviour
Aric Stewart
aric at codeweavers.com
Mon Oct 2 10:31:24 CDT 2017
Signed-off-by: Aric Stewart <aric at codeweavers.com>
On 10/2/17 2:46 AM, Nikolay Sivov wrote:
> Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
> ---
> dlls/usp10/tests/usp10.c | 67 +++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 63 insertions(+), 4 deletions(-)
>
> diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c
> index 524c47ff0a..cd129ff394 100644
> --- a/dlls/usp10/tests/usp10.c
> +++ b/dlls/usp10/tests/usp10.c
> @@ -3440,11 +3440,27 @@ static void test_ScriptStringXtoCP_CPtoX(HDC hdc)
> }
> }
>
> +static HWND create_test_window(void)
> +{
> + HWND hwnd = CreateWindowExA(0, "Static", "", WS_POPUP, 0, 0, 100, 100, 0, 0, 0, NULL);
> + ok(hwnd != NULL, "Failed to create test window.\n");
> +
> + ShowWindow(hwnd, SW_SHOW);
> + UpdateWindow(hwnd);
> +
> + return hwnd;
> +}
> +
> static void test_ScriptCacheGetHeight(HDC hdc)
> {
> - HRESULT hr;
> + HFONT hfont, prev_hfont;
> SCRIPT_CACHE sc = NULL;
> - LONG height;
> + LONG height, height2;
> + TEXTMETRICW tm;
> + LOGFONTA lf;
> + HRESULT hr;
> + HWND hwnd;
> + HDC hdc2;
>
> hr = ScriptCacheGetHeight(NULL, NULL, NULL);
> ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got 0x%08x\n", hr);
> @@ -3455,11 +3471,54 @@ static void test_ScriptCacheGetHeight(HDC hdc)
> hr = ScriptCacheGetHeight(NULL, &sc, &height);
> ok(hr == E_PENDING, "expected E_PENDING, got 0x%08x\n", hr);
>
> - height = 0;
> + height = 123;
> + hr = ScriptCacheGetHeight(hdc, NULL, &height);
> + ok(hr == E_INVALIDARG, "Uexpected hr %#x.\n", hr);
> + ok(height == 123, "Unexpected height.\n");
> +
> + memset(&tm, 0, sizeof(tm));
> + GetTextMetricsW(hdc, &tm);
> + ok(tm.tmHeight > 0, "Unexpected tmHeight %u.\n", tm.tmHeight);
>
> + height = 0;
> hr = ScriptCacheGetHeight(hdc, &sc, &height);
> ok(hr == S_OK, "expected S_OK, got 0x%08x\n", hr);
> - ok(height > 0, "expected height > 0\n");
> + ok(height == tm.tmHeight, "expected height > 0\n");
> +
> + /* Try again with NULL dc. */
> + height2 = 0;
> + hr = ScriptCacheGetHeight(NULL, &sc, &height2);
> + ok(hr == S_OK, "Failed to get cached height, hr %#x.\n", hr);
> + ok(height2 == height, "Unexpected height %u.\n", height2);
> +
> + hwnd = create_test_window();
> +
> + hdc2 = GetDC(hwnd);
> + ok(hdc2 != NULL, "Failed to get window dc.\n");
> +
> + memset(&lf, 0, sizeof(LOGFONTA));
> + lstrcpyA(lf.lfFaceName, "Tahoma");
> + lf.lfHeight = -32;
> +
> + hfont = CreateFontIndirectA(&lf);
> + ok(hfont != NULL, "Failed to create font.\n");
> +
> + prev_hfont = SelectObject(hdc2, hfont);
> +
> + memset(&tm, 0, sizeof(tm));
> + GetTextMetricsW(hdc2, &tm);
> + ok(tm.tmHeight > height, "Unexpected tmHeight %u.\n", tm.tmHeight);
> +
> + height2 = 0;
> + hr = ScriptCacheGetHeight(hdc2, &sc, &height2);
> + ok(hr == S_OK, "Failed to get cached height, hr %#x.\n", hr);
> + ok(height2 == height, "Unexpected height.\n");
> +
> + SelectObject(hdc2, prev_hfont);
> + DeleteObject(hfont);
> +
> + ReleaseDC(hwnd, hdc2);
> + DestroyWindow(hwnd);
>
> ScriptFreeCache(&sc);
> }
>
More information about the wine-patches
mailing list