Nikolay Sivov : comctl32/tests: Simplify a workaround for old module versions, add basic PSM_ADDPAGE test.
Alexandre Julliard
julliard at winehq.org
Wed Jul 6 13:31:10 CDT 2011
Module: wine
Branch: master
Commit: a3ff177d7d668169ab389221aa0fdf582c09cd45
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3ff177d7d668169ab389221aa0fdf582c09cd45
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Jul 6 13:49:14 2011 +0400
comctl32/tests: Simplify a workaround for old module versions, add basic PSM_ADDPAGE test.
---
dlls/comctl32/tests/propsheet.c | 111 ++++++++++++++++++++++++++------------
1 files changed, 76 insertions(+), 35 deletions(-)
diff --git a/dlls/comctl32/tests/propsheet.c b/dlls/comctl32/tests/propsheet.c
index 42cb4c8..c6e3e9f 100644
--- a/dlls/comctl32/tests/propsheet.c
+++ b/dlls/comctl32/tests/propsheet.c
@@ -102,7 +102,7 @@ static void test_title(void)
hpsp[0] = CreatePropertySheetPageA(&psp);
memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(psh);
+ psh.dwSize = CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback);
psh.dwFlags = PSH_MODELESS | PSH_USECALLBACK;
psh.pszCaption = "test caption";
psh.nPages = 1;
@@ -111,12 +111,8 @@ static void test_title(void)
psh.pfnCallback = sheet_callback;
hdlg = (HWND)PropertySheetA(&psh);
- if (hdlg == INVALID_HANDLE_VALUE)
- {
- win_skip("comctl32 4.70 needs dwSize adjustment\n");
- psh.dwSize = sizeof(psh) - sizeof(HBITMAP) - sizeof(HPALETTE) - sizeof(HBITMAP);
- hdlg = (HWND)PropertySheetA(&psh);
- }
+ ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle value %p\n", hdlg);
+
DestroyWindow(hdlg);
}
@@ -139,7 +135,7 @@ static void test_nopage(void)
hpsp[0] = CreatePropertySheetPageA(&psp);
memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(psh);
+ psh.dwSize = CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback);
psh.dwFlags = PSH_MODELESS | PSH_USECALLBACK;
psh.pszCaption = "test caption";
psh.nPages = 1;
@@ -148,12 +144,8 @@ static void test_nopage(void)
psh.pfnCallback = sheet_callback;
hdlg = (HWND)PropertySheetA(&psh);
- if (hdlg == INVALID_HANDLE_VALUE)
- {
- win_skip("comctl32 4.70 needs dwSize adjustment\n");
- psh.dwSize = sizeof(psh) - sizeof(HBITMAP) - sizeof(HPALETTE) - sizeof(HBITMAP);
- hdlg = (HWND)PropertySheetA(&psh);
- }
+ ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle value %p\n", hdlg);
+
ShowWindow(hdlg,SW_NORMAL);
SendMessage(hdlg, PSM_REMOVEPAGE, 0, 0);
RedrawWindow(hdlg,NULL,NULL,RDW_UPDATENOW|RDW_ERASENOW);
@@ -292,19 +284,14 @@ static void test_wiznavigation(void)
/* set up the property sheet dialog */
memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(psh);
+ psh.dwSize = CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback);
psh.dwFlags = PSH_MODELESS | PSH_WIZARD;
psh.pszCaption = "A Wizard";
psh.nPages = 4;
psh.hwndParent = GetDesktopWindow();
U3(psh).phpage = hpsp;
hdlg = (HWND)PropertySheetA(&psh);
- if (hdlg == INVALID_HANDLE_VALUE)
- {
- win_skip("comctl32 4.70 needs dwSize adjustment\n");
- psh.dwSize = sizeof(psh) - sizeof(HBITMAP) - sizeof(HPALETTE) - sizeof(HBITMAP);
- hdlg = (HWND)PropertySheetA(&psh);
- }
+ ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle %p\n", hdlg);
ok(active_page == 0, "Active page should be 0. Is: %d\n", active_page);
@@ -395,7 +382,7 @@ static void test_buttons(void)
hpsp[0] = CreatePropertySheetPageA(&psp);
memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(psh);
+ psh.dwSize = CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback);
psh.dwFlags = PSH_MODELESS | PSH_USECALLBACK;
psh.pszCaption = "test caption";
psh.nPages = 1;
@@ -404,12 +391,7 @@ static void test_buttons(void)
psh.pfnCallback = sheet_callback;
hdlg = (HWND)PropertySheetA(&psh);
- if (hdlg == INVALID_HANDLE_VALUE)
- {
- win_skip("comctl32 4.70 needs dwSize adjustment\n");
- psh.dwSize = sizeof(psh) - sizeof(HBITMAP) - sizeof(HPALETTE) - sizeof(HBITMAP);
- hdlg = (HWND)PropertySheetA(&psh);
- }
+ ok(hdlg != INVALID_HANDLE_VALUE, "got null handle\n");
/* OK button */
button = GetDlgItem(hdlg, IDOK);
@@ -710,7 +692,7 @@ static void test_messages(void)
hpsp[0] = CreatePropertySheetPageA(&psp);
memset(&psh, 0, sizeof(psh));
- psh.dwSize = sizeof(psh);
+ psh.dwSize = CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback);
psh.dwFlags = PSH_NOAPPLYNOW | PSH_WIZARD | PSH_USECALLBACK
| PSH_MODELESS | PSH_USEICONID;
psh.pszCaption = "test caption";
@@ -720,12 +702,8 @@ static void test_messages(void)
psh.pfnCallback = sheet_callback_messages;
hdlg = (HWND)PropertySheetA(&psh);
- if (hdlg == INVALID_HANDLE_VALUE)
- {
- win_skip("comctl32 4.70 needs dwSize adjustment\n");
- psh.dwSize = sizeof(psh) - sizeof(HBITMAP) - sizeof(HPALETTE) - sizeof(HBITMAP);
- hdlg = (HWND)PropertySheetA(&psh);
- }
+ ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle %p\n", hdlg);
+
ShowWindow(hdlg,SW_NORMAL);
ok_sequence(sequences, PROPSHEET_SEQ_INDEX, property_sheet_seq, "property sheet with custom window proc", TRUE);
@@ -733,6 +711,68 @@ static void test_messages(void)
DestroyWindow(hdlg);
}
+static void test_PSM_ADDPAGE(void)
+{
+ HPROPSHEETPAGE hpsp[3];
+ PROPSHEETPAGEA psp;
+ PROPSHEETHEADERA psh;
+ HWND hdlg, tab;
+ BOOL ret;
+ DWORD r;
+
+ memset(&psp, 0, sizeof(psp));
+ psp.dwSize = sizeof(psp);
+ psp.dwFlags = 0;
+ psp.hInstance = GetModuleHandleA(NULL);
+ U(psp).pszTemplate = MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST);
+ U2(psp).pszIcon = NULL;
+ psp.pfnDlgProc = page_dlg_proc_messages;
+ psp.lParam = 0;
+
+ /* two page with the same data */
+ hpsp[0] = CreatePropertySheetPageA(&psp);
+ hpsp[1] = CreatePropertySheetPageA(&psp);
+ hpsp[2] = CreatePropertySheetPageA(&psp);
+
+ memset(&psh, 0, sizeof(psh));
+ psh.dwSize = sizeof(psh);
+ psh.dwFlags = PSH_MODELESS;
+ psh.pszCaption = "test caption";
+ psh.nPages = 1;
+ psh.hwndParent = GetDesktopWindow();
+ U3(psh).phpage = hpsp;
+
+ hdlg = (HWND)PropertySheetA(&psh);
+ ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle %p\n", hdlg);
+
+ /* add pages one by one */
+ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[1]);
+ ok(ret == TRUE, "got %d\n", ret);
+
+ /* try with null and invalid value */
+ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, 0);
+ ok(ret == FALSE, "got %d\n", ret);
+
+if (0)
+{
+ /* crashes on native */
+ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)INVALID_HANDLE_VALUE);
+}
+ /* check item count */
+ tab = (HWND)SendMessageA(hdlg, PSM_GETTABCONTROL, 0, 0);
+
+ r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0);
+ ok(r == 2, "got %d\n", r);
+
+ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[2]);
+ ok(ret == TRUE, "got %d\n", ret);
+
+ r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0);
+ ok(r == 3, "got %d\n", r);
+
+ DestroyWindow(hdlg);
+}
+
START_TEST(propsheet)
{
test_title();
@@ -742,4 +782,5 @@ START_TEST(propsheet)
test_buttons();
test_custom_default_button();
test_messages();
+ test_PSM_ADDPAGE();
}
More information about the wine-cvs
mailing list