Module: wine Branch: master Commit: b49f9f609a9882372e2876ac5647a9452bf899d8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b49f9f609a9882372e2876ac56...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Jul 6 09:06:38 2015 +0300
dwrite/tests: Test that pair kerning affects shaping.
---
dlls/dwrite/tests/layout.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index 6e55c60..232f127 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -1839,13 +1839,15 @@ if (0) /* crashes on native */
static void test_SetPairKerning(void) { - static const WCHAR strW[] = {'a','b','c','d',0}; + static const WCHAR strW[] = {'a','e',0x0300,'d',0}; /* accent grave */ + DWRITE_CLUSTER_METRICS clusters[4]; IDWriteTextLayout1 *layout1; IDWriteTextFormat *format; IDWriteTextLayout *layout; DWRITE_TEXT_RANGE range; IDWriteFactory *factory; BOOL kerning; + UINT32 count; HRESULT hr;
factory = create_factory(); @@ -1881,9 +1883,22 @@ if (0) { /* crashes on native */ hr = IDWriteTextLayout1_GetPairKerning(layout1, 0, &kerning, &range); ok(hr == S_OK, "got 0x%08x\n", hr); ok(!kerning, "got %d\n", kerning); + ok(range.length == ~0u, "got %u\n", range.length);
+ count = 0; + hr = IDWriteTextLayout1_GetClusterMetrics(layout1, clusters, 4, &count); + ok(hr == S_OK, "got 0x%08x\n", hr); +todo_wine + ok(count == 3, "got %u\n", count); +if (count == 3) { + ok(clusters[0].length == 1, "got %u\n", clusters[0].length); + ok(clusters[1].length == 2, "got %u\n", clusters[1].length); + ok(clusters[2].length == 1, "got %u\n", clusters[2].length); +} + /* pair kerning flag participates in itemization - combining characters + breaks */ range.startPosition = 0; - range.length = 1; + range.length = 2; hr = IDWriteTextLayout1_SetPairKerning(layout1, 2, range); ok(hr == S_OK, "got 0x%08x\n", hr);
@@ -1892,6 +1907,15 @@ if (0) { /* crashes on native */ ok(hr == S_OK, "got 0x%08x\n", hr); ok(kerning == TRUE, "got %d\n", kerning);
+ count = 0; + hr = IDWriteTextLayout1_GetClusterMetrics(layout1, clusters, 4, &count); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(count == 4, "got %u\n", count); + ok(clusters[0].length == 1, "got %u\n", clusters[0].length); + ok(clusters[1].length == 1, "got %u\n", clusters[1].length); + ok(clusters[2].length == 1, "got %u\n", clusters[2].length); + ok(clusters[3].length == 1, "got %u\n", clusters[3].length); + IDWriteTextLayout1_Release(layout1); IDWriteFactory_Release(factory); }