Nikolay Sivov : dwrite/tests: Extend tests for synthesized axis values.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 16:59:12 CDT 2021


Module: wine
Branch: master
Commit: 6fea399a84e730908db30c112af4106530d71683
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6fea399a84e730908db30c112af4106530d71683

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Mar 15 10:36:48 2021 +0300

dwrite/tests: Extend tests for synthesized axis values.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/tests/font.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 65 insertions(+), 1 deletion(-)

diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c
index c14c557c92a..7aa871dcd3c 100644
--- a/dlls/dwrite/tests/font.c
+++ b/dlls/dwrite/tests/font.c
@@ -7822,10 +7822,31 @@ static void test_HasCharacter(void)
     ok(ref == 0, "factory not released, %u\n", ref);
 }
 
+static BOOL has_main_axis_values(const DWRITE_FONT_AXIS_VALUE *values, unsigned int count)
+{
+    BOOL has_wght = FALSE, has_wdth = FALSE, has_ital = FALSE, has_slnt = FALSE;
+    unsigned int i;
+
+    for (i = 0; i < count; ++i)
+    {
+        if (values[i].axisTag == DWRITE_FONT_AXIS_TAG_WEIGHT)
+            has_wght = TRUE;
+        else if (values[i].axisTag == DWRITE_FONT_AXIS_TAG_WIDTH)
+            has_wdth = TRUE;
+        else if (values[i].axisTag == DWRITE_FONT_AXIS_TAG_ITALIC)
+            has_ital = TRUE;
+        else if (values[i].axisTag == DWRITE_FONT_AXIS_TAG_SLANT)
+            has_slnt = TRUE;
+    }
+
+    return has_wght && has_wdth && has_ital && has_slnt;
+}
+
 static void test_CreateFontFaceReference(void)
 {
     IDWriteFontFaceReference *ref, *ref1, *ref3;
     IDWriteFontFace3 *fontface, *fontface1;
+    DWRITE_FONT_AXIS_VALUE axis_values[16];
     IDWriteFontCollection1 *collection;
     IDWriteFontFile *file, *file1;
     IDWriteFactory3 *factory;
@@ -7978,7 +7999,15 @@ todo_wine
                     (void **)&ref2)))
             {
                 UINT32 axis_count = IDWriteFontFaceReference1_GetFontAxisValueCount(ref2);
-                ok(axis_count > 0, "Unexpected axis value count.\n");
+            todo_wine
+                ok(axis_count >= 4, "Unexpected axis value count.\n");
+
+                hr = IDWriteFontFaceReference1_GetFontAxisValues(ref2, axis_values, ARRAY_SIZE(axis_values));
+                ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+
+            todo_wine
+                ok(has_main_axis_values(axis_values, axis_count), "Unexpected axis returned.\n");
+
                 IDWriteFontFaceReference1_Release(ref2);
             }
 
@@ -9394,9 +9423,11 @@ static void test_AnalyzeContainerType(void)
 static void test_fontsetbuilder(void)
 {
     IDWriteFontFaceReference *ref, *ref2, *ref3;
+    IDWriteFontFaceReference1 *ref1;
     IDWriteFontCollection1 *collection;
     IDWriteFontSetBuilder1 *builder1;
     IDWriteFontSetBuilder *builder;
+    DWRITE_FONT_AXIS_VALUE axis_values[4];
     IDWriteFactory3 *factory;
     UINT32 count, i, refcount;
     IDWriteFontSet *fontset;
@@ -9436,6 +9467,39 @@ static void test_fontsetbuilder(void)
         count = IDWriteFontSet_GetFontCount(fontset);
         ok(count == 2, "Unexpected font count %u.\n", count);
 
+        hr = IDWriteFontSet_GetFontFaceReference(fontset, 0, &ref);
+        ok(hr == S_OK, "Unexpected hr %#x.\n",hr);
+
+        hr = IDWriteFontFaceReference_QueryInterface(ref, &IID_IDWriteFontFaceReference1, (void **)&ref1);
+        ok(hr == S_OK, "Unexpected hr %#x.\n",hr);
+
+        count = IDWriteFontFaceReference1_GetFontAxisValueCount(ref1);
+    todo_wine
+        ok(count == 4, "Unexpected axis count %u.\n", count);
+
+    if (count == 4)
+    {
+        hr = IDWriteFontFaceReference1_GetFontAxisValues(ref1, axis_values, ARRAY_SIZE(axis_values));
+        ok(hr == S_OK, "Unexpected hr %#x.\n",hr);
+
+        ok(axis_values[0].axisTag == DWRITE_FONT_AXIS_TAG_WEIGHT, "Unexpected tag[0] %s.\n",
+                wine_dbgstr_an((char *)&axis_values[0].axisTag, 4));
+        ok(axis_values[0].value == 500.0f, "Unexpected value[0] %f.\n", axis_values[0].value);
+        ok(axis_values[1].axisTag == DWRITE_FONT_AXIS_TAG_WIDTH, "Unexpected tag[1] %s.\n",
+                wine_dbgstr_an((char *)&axis_values[1].axisTag, 4));
+        ok(axis_values[1].value == 100.0f, "Unexpected value[1] %f.\n", axis_values[1].value);
+        ok(axis_values[2].axisTag == DWRITE_FONT_AXIS_TAG_ITALIC, "Unexpected tag[2] %s.\n",
+                wine_dbgstr_an((char *)&axis_values[2].axisTag, 4));
+        ok(axis_values[2].value == 0.0f, "Unexpected value[2] %f.\n", axis_values[2].value);
+        ok(axis_values[3].axisTag == DWRITE_FONT_AXIS_TAG_SLANT, "Unexpected tag[3] %s.\n",
+                wine_dbgstr_an((char *)&axis_values[3].axisTag, 4));
+        ok(axis_values[3].value == 0.0f, "Unexpected value[3] %f.\n", axis_values[3].value);
+    }
+
+        IDWriteFontFaceReference1_Release(ref1);
+
+        IDWriteFontFaceReference_Release(ref);
+
         IDWriteFontSet_Release(fontset);
 
         IDWriteFontFile_Release(file);




More information about the wine-cvs mailing list