[v2 PATCH 2/5] dwrite/tests: Add some tests for text format properties.
Nikolay Sivov
nsivov at codeweavers.com
Thu Jan 21 07:36:51 CST 2021
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dwrite/tests/layout.c | 94 ++++++++++++++++++++++++++++++++++++--
1 file changed, 91 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 52f17820e5e..eb47997f22f 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -190,11 +190,17 @@ static IDWriteTextAnalysisSourceVtbl analysissourcevtbl = {
static IDWriteTextAnalysisSource analysissource = { &analysissourcevtbl };
+static void *create_factory_iid(REFIID riid)
+{
+ IUnknown *factory = NULL;
+ DWriteCreateFactory(DWRITE_FACTORY_TYPE_ISOLATED, riid, &factory);
+ return factory;
+}
+
static IDWriteFactory *create_factory(void)
{
- IDWriteFactory *factory;
- HRESULT hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_ISOLATED, &IID_IDWriteFactory, (IUnknown**)&factory);
- ok(hr == S_OK, "got 0x%08x\n", hr);
+ IDWriteFactory *factory = create_factory_iid(&IID_IDWriteFactory);
+ ok(factory != NULL, "Failed to create factory.\n");
return factory;
}
@@ -5860,6 +5866,87 @@ static void test_automatic_font_axes(void)
IDWriteFactory_Release(factory);
}
+static void test_text_format_axes(void)
+{
+ IDWriteFontCollection *collection;
+ IDWriteFontCollection2 *collection2;
+ DWRITE_FONT_AXIS_VALUE axis;
+ IDWriteTextFormat3 *format3;
+ DWRITE_FONT_STRETCH stretch;
+ DWRITE_FONT_WEIGHT weight;
+ IDWriteTextFormat *format;
+ IDWriteFactory6 *factory;
+ DWRITE_FONT_STYLE style;
+ DWRITE_FONT_FAMILY_MODEL model;
+ unsigned int count;
+ HRESULT hr;
+
+ factory = create_factory_iid(&IID_IDWriteFactory6);
+
+ if (!factory)
+ {
+ win_skip("Text format does not support variations.\n");
+ return;
+ }
+
+ hr = IDWriteFactory6_CreateTextFormat(factory, L"test_family", NULL, NULL, 0, 10.0f, L"en-us", &format3);
+todo_wine
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+if (SUCCEEDED(hr))
+{
+ hr = IDWriteTextFormat3_GetFontCollection(format3, &collection);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IDWriteFontCollection_QueryInterface(collection, &IID_IDWriteFontCollection2, (void **)&collection2);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ model = IDWriteFontCollection2_GetFontFamilyModel(collection2);
+ ok(model == DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC, "Unexpected model %d.\n", model);
+
+ IDWriteFontCollection_Release(collection);
+ IDWriteFontCollection2_Release(collection2);
+
+ count = IDWriteTextFormat3_GetFontAxisValueCount(format3);
+ ok(!count, "Unexpected axis count %u.\n", count);
+
+ stretch = IDWriteTextFormat3_GetFontStretch(format3);
+ ok(stretch == DWRITE_FONT_STRETCH_NORMAL, "Unexpected font stretch %d.\n", stretch);
+
+ style = IDWriteTextFormat3_GetFontStyle(format3);
+ ok(style == DWRITE_FONT_STYLE_NORMAL, "Unexpected font style %d.\n", style);
+
+ weight = IDWriteTextFormat3_GetFontWeight(format3);
+ ok(weight == DWRITE_FONT_WEIGHT_NORMAL, "Unexpected font weight %d.\n", weight);
+
+ /* Regular properties are not set from axis values. */
+ axis.axisTag = DWRITE_FONT_AXIS_TAG_WEIGHT;
+ axis.value = 200.0f;
+ hr = IDWriteTextFormat3_SetFontAxisValues(format3, &axis, 1);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ weight = IDWriteTextFormat3_GetFontWeight(format3);
+ ok(weight == DWRITE_FONT_WEIGHT_NORMAL, "Unexpected font weight %d.\n", weight);
+
+ IDWriteTextFormat3_Release(format3);
+}
+ hr = IDWriteFactory_CreateTextFormat((IDWriteFactory *)factory, L"test_family", NULL,
+ DWRITE_FONT_WEIGHT_BOLD, DWRITE_FONT_STYLE_ITALIC, DWRITE_FONT_STRETCH_EXPANDED,
+ 10.0f, L"en-us", &format);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ hr = IDWriteTextFormat_QueryInterface(format, &IID_IDWriteTextFormat3, (void **)&format3);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+ count = IDWriteTextFormat3_GetFontAxisValueCount(format3);
+ ok(!count, "Unexpected axis count %u.\n", count);
+
+ IDWriteTextFormat3_Release(format3);
+ IDWriteTextFormat_Release(format);
+
+ IDWriteFactory6_Release(factory);
+}
+
START_TEST(layout)
{
IDWriteFactory *factory;
@@ -5912,6 +5999,7 @@ START_TEST(layout)
test_GetOverhangMetrics();
test_tab_stops();
test_automatic_font_axes();
+ test_text_format_axes();
IDWriteFactory_Release(factory);
}
--
2.29.2
More information about the wine-devel
mailing list