[UXTHEME] -Add tests for SetWindowTheme to test the behavior that was changed in...
[reactos.git] / rostests / apitests / uxtheme / SetWindowTheme.c
1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for SetWindowTheme
5 * PROGRAMMERS: Giannis Adamopoulos
6 */
7
8 #include <apitest.h>
9 #include <stdio.h>
10 #include <windows.h>
11 #include <uxtheme.h>
12
13 void TestParams(HWND hwnd)
14 {
15 HRESULT hr;
16
17 hr = SetWindowTheme(0, NULL, NULL);
18 ok (hr == E_HANDLE, "Expected E_HANDLE got 0x%lx error\n", hr);
19
20 hr = SetWindowTheme((HWND)0xdeaddead, NULL, NULL);
21 ok (hr == E_HANDLE, "Expected E_HANDLE got 0x%lx error\n", hr);
22
23 hr = SetWindowTheme(hwnd, NULL, NULL);
24 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
25
26 hr = SetWindowTheme(hwnd, L"none", L"none");
27 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
28
29 hr = SetWindowTheme(hwnd, NULL, L"none");
30 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
31
32 hr = SetWindowTheme(hwnd, L"none", NULL);
33 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
34
35 hr = SetWindowTheme(hwnd, L"", L"");
36 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
37 }
38
39 void TestTheme(HWND hwnd)
40 {
41 HRESULT hr;
42 HTHEME htheme1, htheme2;
43
44 hr = SetWindowTheme(hwnd, NULL, NULL);
45 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
46
47 htheme1 = OpenThemeData(hwnd, L"Toolbar");
48 ok (htheme1 != NULL, "OpenThemeData failed\n");
49
50 hr = SetWindowTheme(hwnd, L"", L"");
51 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
52
53 htheme2 = OpenThemeData(hwnd, L"Toolbar");
54 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n");
55
56 hr = SetWindowTheme(hwnd, L"TrayNotify", L"");
57 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
58
59 htheme2 = OpenThemeData(hwnd, L"Toolbar");
60 ok (htheme2 == NULL, "Expected OpenThemeData to fail\n");
61
62 hr = SetWindowTheme(hwnd, L"TrayNotify", NULL);
63 ok (hr == S_OK, "Expected S_OK got 0x%lx error\n", hr);
64
65 htheme2 = OpenThemeData(hwnd, L"Toolbar");
66 ok (htheme2 != NULL, "OpenThemeData failed\n");
67
68 ok(htheme1 != htheme2, "Expected different theme data\n");
69 }
70
71 START_TEST(SetWindowTheme)
72 {
73 HWND hwnd;
74
75 hwnd = CreateWindowW(L"button", L"Test window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 200, 200, 0, NULL, NULL, NULL);
76 ok (hwnd != NULL, "Expected CreateWindowW to succeed\n");
77
78 TestParams(hwnd);
79 TestTheme(hwnd);
80 }