[PATCH 1/2] uxtheme/tests: Add IsThemePartDefined() tests.
Zhiyi Zhang
zzhang at codeweavers.com
Tue Mar 1 01:06:27 CST 2022
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
dlls/uxtheme/tests/system.c | 75 +++++++++++++++++++++++++++++++++----
1 file changed, 68 insertions(+), 7 deletions(-)
diff --git a/dlls/uxtheme/tests/system.c b/dlls/uxtheme/tests/system.c
index c70e6c27361..59631f01fe9 100644
--- a/dlls/uxtheme/tests/system.c
+++ b/dlls/uxtheme/tests/system.c
@@ -277,20 +277,80 @@ static void test_IsThemed(void)
{
BOOL bThemeActive;
BOOL bAppThemed;
- BOOL bTPDefined;
bThemeActive = IsThemeActive();
trace("Theming is %s\n", (bThemeActive) ? "active" : "inactive");
bAppThemed = IsAppThemed();
trace("Test executable is %s\n", (bAppThemed) ? "themed" : "not themed");
+}
- SetLastError(0xdeadbeef);
- bTPDefined = IsThemePartDefined(NULL, 0 , 0);
- ok( bTPDefined == FALSE, "Expected FALSE\n");
- ok( GetLastError() == E_HANDLE,
- "Expected E_HANDLE, got 0x%08x\n",
- GetLastError());
+static void test_IsThemePartDefined(void)
+{
+ BOOL is_theme_active, ret;
+ HTHEME theme = NULL;
+ DWORD error;
+ HWND hwnd;
+ int i;
+
+ static const struct
+ {
+ const WCHAR *class_name;
+ int part;
+ int state;
+ BOOL defined;
+ DWORD error;
+ BOOL todo;
+ }
+ tests[] =
+ {
+ {NULL, 0, 0, FALSE, E_HANDLE},
+ {NULL, 0xdeadbeef, 0, FALSE, E_HANDLE},
+ {L"Button", 0xdeadbeef, 0, FALSE, NO_ERROR},
+ {L"Button", BP_PUSHBUTTON, 0, TRUE, NO_ERROR},
+ {L"Button", BP_PUSHBUTTON, PBS_NORMAL, FALSE, NO_ERROR},
+ {L"Button", BP_PUSHBUTTON, PBS_DEFAULTED_ANIMATING, FALSE, NO_ERROR},
+ {L"Button", BP_PUSHBUTTON, PBS_DEFAULTED_ANIMATING + 1, FALSE, NO_ERROR},
+ {L"Edit", EP_EDITTEXT, 0, TRUE, NO_ERROR, TRUE},
+ {L"Edit", EP_EDITTEXT, ETS_NORMAL, FALSE, NO_ERROR},
+ {L"Edit", EP_EDITTEXT, ETS_FOCUSED, FALSE, NO_ERROR},
+ };
+
+ is_theme_active = IsThemeActive();
+ hwnd = CreateWindowA(WC_STATICA, "", WS_POPUP, 0, 0, 1, 1, 0, 0, 0, NULL);
+ ok(hwnd != NULL, "CreateWindowA failed, error %#x.\n", GetLastError());
+
+ for (i = 0; i < ARRAY_SIZE(tests); ++i)
+ {
+ if (!is_theme_active && tests[i].class_name)
+ continue;
+
+ winetest_push_context("class %s part %d state %d", wine_dbgstr_w(tests[i].class_name),
+ tests[i].part, tests[i].state);
+
+ if (tests[i].class_name)
+ {
+ theme = OpenThemeData(hwnd, tests[i].class_name);
+ ok(theme != NULL, "OpenThemeData failed, error %#x.\n", GetLastError());
+ }
+
+ SetLastError(0xdeadbeef);
+ ret = IsThemePartDefined(theme, tests[i].part, tests[i].state);
+ error = GetLastError();
+ todo_wine_if(tests[i].todo)
+ ok(ret == tests[i].defined, "Expected %d.\n", tests[i].defined);
+ todo_wine_if(error == 0xdeadbeef && tests[i].error == NO_ERROR)
+ ok(error == tests[i].error, "Expected %#x, got %#x.\n", tests[i].error, error);
+
+ if (theme)
+ {
+ CloseThemeData(theme);
+ theme = NULL;
+ }
+ winetest_pop_context();
+ }
+
+ DestroyWindow(hwnd);
}
static void test_GetWindowTheme(void)
@@ -2205,6 +2265,7 @@ START_TEST(system)
*/
test_IsThemed();
+ test_IsThemePartDefined();
test_GetWindowTheme();
test_SetWindowTheme();
test_OpenThemeData();
--
2.32.0
More information about the wine-devel
mailing list