[PATCH 1/1] d2d1/tests: Add some tests for enum property structure.
Nikolay Sivov
wine at gitlab.winehq.org
Fri Jul 1 02:24:47 CDT 2022
From: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/d2d1/tests/d2d1.c | 105 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 105 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index 78f255c1f99..9dfe1e760ba 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -11343,6 +11343,72 @@ static void test_effect_properties(BOOL d3d11)
release_test_context(&ctx);
}
+static void check_enum_property(ID2D1Effect *effect, UINT32 property,
+ const UINT32 *values, UINT32 count)
+{
+ ID2D1Properties *subproperties, *fields_subproperties, *field_subproperties;
+ D2D1_PROPERTY_TYPE prop_type;
+ UINT32 prop_count, value;
+ WCHAR buffer[64];
+ unsigned int i;
+ HRESULT hr;
+
+ prop_type = ID2D1Effect_GetType(effect, property);
+ ok(prop_type == D2D1_PROPERTY_TYPE_ENUM, "Unexpected type %d.\n", prop_type);
+
+ hr = ID2D1Effect_GetSubProperties(effect, property, &subproperties);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ prop_type = ID2D1Properties_GetType(subproperties, D2D1_SUBPROPERTY_FIELDS);
+ ok(prop_type == D2D1_PROPERTY_TYPE_ARRAY, "Unexpected type %d.\n", prop_type);
+
+ /* Number of enum members. */
+ hr = ID2D1Properties_GetValue(subproperties, D2D1_SUBPROPERTY_FIELDS, D2D1_PROPERTY_TYPE_ARRAY,
+ (BYTE *)&value, sizeof(value));
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ok(value == count, "Unexpected value %u.\n", value);
+
+ prop_count = ID2D1Properties_GetPropertyCount(subproperties);
+ ok(!prop_count, "Got unexpected property count %u.\n", count);
+
+ /* Fields is an array of strings providing display names for members. */
+ hr = ID2D1Properties_GetSubProperties(subproperties, D2D1_SUBPROPERTY_FIELDS,
+ &fields_subproperties);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ prop_count = ID2D1Properties_GetPropertyCount(fields_subproperties);
+ ok(prop_count == count, "Got unexpected property count %u.\n", count);
+
+ for (i = 0; i < prop_count; ++i)
+ {
+ winetest_push_context("Test %u", i);
+
+ prop_type = ID2D1Properties_GetType(fields_subproperties, i);
+ ok(prop_type == D2D1_PROPERTY_TYPE_STRING, "Unexpected type %d.\n", prop_type);
+
+ /* Field names are localized. */
+ hr = ID2D1Properties_GetSubProperties(fields_subproperties, i, &field_subproperties);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ prop_count = ID2D1Properties_GetPropertyCount(field_subproperties);
+ ok(prop_count == 1, "Got unexpected property count %u.\n", count);
+
+ prop_type = ID2D1Properties_GetType(field_subproperties, 0);
+ ok(prop_type == D2D1_PROPERTY_TYPE_UINT32, "Unexpected type %d.\n", prop_type);
+ hr = ID2D1Properties_GetPropertyName(field_subproperties, 0, buffer, ARRAY_SIZE(buffer));
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ok(!wcscmp(buffer, L"Index"), "Unexpected name %s.\n", wine_dbgstr_w(buffer));
+ hr = ID2D1Properties_GetValue(field_subproperties, 0, D2D1_PROPERTY_TYPE_UINT32, (BYTE *)&value, sizeof(value));
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ok(value == values[i], "Unexpected value %u, expected %u.\n", value, values[i]);
+
+ ID2D1Properties_Release(field_subproperties);
+
+ winetest_pop_context();
+ }
+
+ ID2D1Properties_Release(fields_subproperties);
+ ID2D1Properties_Release(subproperties);
+}
+
static void test_effect_2d_affine(BOOL d3d11)
{
D2D1_MATRIX_3X2_F rotate, scale, skew;
@@ -11357,6 +11423,7 @@ static void test_effect_2d_affine(BOOL d3d11)
ID2D1Bitmap1 *bitmap;
ID2D1Effect *effect;
ID2D1Image *output;
+ UINT32 value;
BOOL match;
HRESULT hr;
@@ -11400,6 +11467,22 @@ static void test_effect_2d_affine(BOOL d3d11)
"BgEfAQQBIQECASMChAEA"},
};
+ static const unsigned int border_modes[] =
+ {
+ D2D1_BORDER_MODE_SOFT,
+ D2D1_BORDER_MODE_HARD,
+ };
+
+ static const unsigned int interp_modes[] =
+ {
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR,
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC,
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR,
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC,
+ D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC,
+ };
+
memset(image_16x16, 0xff, sizeof(image_16x16));
set_matrix_identity(&rotate);
set_matrix_identity(&scale);
@@ -11432,6 +11515,28 @@ static void test_effect_2d_affine(BOOL d3d11)
count = ID2D1Effect_GetPropertyCount(effect);
todo_wine ok(count == 4, "Got unexpected property count %u.\n", count);
+ hr = ID2D1Effect_GetValue(effect, D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE,
+ D2D1_PROPERTY_TYPE_ENUM, (BYTE *)&value, sizeof(value));
+ todo_wine
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ if (SUCCEEDED(hr))
+ {
+ ok(value == D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR, "Unexpected value %u.\n", value);
+ check_enum_property(effect, D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE, interp_modes,
+ ARRAY_SIZE(interp_modes));
+ }
+
+ hr = ID2D1Effect_GetValue(effect, D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE, D2D1_PROPERTY_TYPE_ENUM,
+ (BYTE *)&value, sizeof(value));
+ todo_wine
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ if (SUCCEEDED(hr))
+ {
+ ok(value == D2D1_BORDER_MODE_SOFT, "Unexpected value %u.\n", value);
+ check_enum_property(effect, D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE, border_modes,
+ ARRAY_SIZE(border_modes));
+ }
+
for (i = 0; i < ARRAY_SIZE(effect_2d_affine_tests); ++i)
{
const struct effect_2d_affine_test *test = &effect_2d_affine_tests[i];
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/357
More information about the wine-devel
mailing list