Hagop Hagopian : comctl32: Adding getter-setter tests for tab control.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 12 08:28:34 CDT 2007
Module: wine
Branch: master
Commit: 89c790702503447463c7a3bbd359dec6af4bd981
URL: http://source.winehq.org/git/wine.git/?a=commit;h=89c790702503447463c7a3bbd359dec6af4bd981
Author: Hagop Hagopian <shaitani at gmail.com>
Date: Sun Mar 11 13:21:12 2007 -0800
comctl32: Adding getter-setter tests for tab control.
---
dlls/comctl32/tests/tab.c | 252 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 252 insertions(+), 0 deletions(-)
diff --git a/dlls/comctl32/tests/tab.c b/dlls/comctl32/tests/tab.c
index 5960964..094faae 100644
--- a/dlls/comctl32/tests/tab.c
+++ b/dlls/comctl32/tests/tab.c
@@ -1,6 +1,7 @@
/* Unit test suite for tab control.
*
* Copyright 2003 Vitaliy Margolen
+ * Copyright 2007 Hagop Hagopian
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -20,6 +21,7 @@
#include <assert.h>
#include <windows.h>
#include <commctrl.h>
+#include <stdio.h>
#include "wine/test.h"
@@ -27,6 +29,11 @@
#define TAB_DEFAULT_WIDTH 96
#define TAB_PADDING_X 6
#define EXTRA_ICON_PADDING 3
+#define MAX_TABLEN 32
+
+#define expect(expected, got) ok ( expected == got, "Expected %d, got %d\n", expected, got)
+#define expect_str(expected, got)\
+ ok ( strcmp(expected, got) == 0, "Expected '%s', got '%s'\n", expected, got)
#define TabWidthPadded(padd_x, num) (DEFAULT_MIN_TAB_WIDTH - (TAB_PADDING_X - (padd_x)) * num)
@@ -94,6 +101,87 @@ create_tabcontrol (DWORD style, DWORD mask)
return handle;
}
+static HWND createFilledTabControl(DWORD style, DWORD mask, INT nTabs)
+{
+ HWND tabHandle;
+ TCITEM tcNewTab;
+ INT i;
+
+ tabHandle = CreateWindow (
+ WC_TABCONTROLA,
+ "TestTab",
+ WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style,
+ 0, 0, 300, 100,
+ NULL, NULL, NULL, 0);
+
+ assert(tabHandle);
+
+ SetWindowLong(tabHandle, GWL_STYLE, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_FOCUSNEVER | style);
+ SendMessage (tabHandle, WM_SETFONT, 0, (LPARAM) hFont);
+
+ tcNewTab.mask = mask;
+
+ for (i = 0; i < nTabs; i++)
+ {
+ char tabName[MAX_TABLEN];
+
+ sprintf(tabName, "Tab %d", i+1);
+ tcNewTab.pszText = tabName;
+ tcNewTab.iImage = i;
+ SendMessage (tabHandle, TCM_INSERTITEM, i, (LPARAM) &tcNewTab);
+ }
+
+ if (winetest_interactive)
+ {
+ ShowWindow (tabHandle, SW_SHOW);
+ RedrawWindow (tabHandle, NULL, 0, RDW_UPDATENOW);
+ Sleep (1000);
+ }
+
+ return tabHandle;
+}
+
+static HWND create_tooltip (HWND hTab, char toolTipText[])
+{
+ HWND hwndTT;
+
+ TOOLINFO ti;
+ LPTSTR lptstr = toolTipText;
+ RECT rect;
+
+ /* Creating a tooltip window*/
+ hwndTT = CreateWindowEx(
+ WS_EX_TOPMOST,
+ TOOLTIPS_CLASS,
+ NULL,
+ WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+ hTab, NULL, 0, NULL);
+
+ SetWindowPos(
+ hwndTT,
+ HWND_TOPMOST,
+ 0, 0, 0, 0,
+ SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+
+ GetClientRect (hTab, &rect);
+
+ /* Initialize members of toolinfo*/
+ ti.cbSize = sizeof(TOOLINFO);
+ ti.uFlags = TTF_SUBCLASS;
+ ti.hwnd = hTab;
+ ti.hinst = 0;
+ ti.uId = 0;
+ ti.lpszText = lptstr;
+
+ ti.rect = rect;
+
+ /* Add toolinfo structure to the tooltip control */
+ SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
+
+ return hwndTT;
+}
+
static void test_tab(INT nMinTabWidth)
{
HWND hwTab;
@@ -223,6 +311,167 @@ static void test_tab(INT nMinTabWidth)
DeleteObject(hFont);
}
+static void test_getters_setters(INT nTabs)
+{
+ HWND hTab;
+ RECT rTab;
+ INT nTabsRetrieved;
+ INT rowCount;
+
+ hTab = createFilledTabControl(TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs);
+ ok(hTab != NULL, "Failed to create tab control\n");
+
+ todo_wine{
+ expect(DEFAULT_MIN_TAB_WIDTH, (int)SendMessage(hTab, TCM_SETMINTABWIDTH, 0, -1));
+ }
+ /* Testing GetItemCount */
+ nTabsRetrieved = SendMessage(hTab, TCM_GETITEMCOUNT, 0, 0);
+ expect(nTabs, nTabsRetrieved);
+
+ /* Testing GetRowCount */
+ rowCount = SendMessage(hTab, TCM_GETROWCOUNT, 0, 0);
+ expect(1, rowCount);
+
+ /* Testing GetItemRect */
+ ok(SendMessage(hTab, TCM_GETITEMRECT, 0, (LPARAM) &rTab), "GetItemRect failed.\n");
+ CheckSize(hTab, TAB_DEFAULT_WIDTH, -1 , "Default Width");
+
+ /* Testing CurFocus */
+ {
+ INT focusIndex;
+
+ /* Testing CurFocus with largest appropriate value */
+ SendMessage(hTab, TCM_SETCURFOCUS, nTabs-1, 0);
+ focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
+ expect(nTabs-1, focusIndex);
+
+ /* Testing CurFocus with negative value */
+ SendMessage(hTab, TCM_SETCURFOCUS, -10, 0);
+ focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
+ todo_wine{
+ expect(-1, focusIndex);
+ }
+
+ /* Testing CurFocus with value larger than number of tabs */
+ focusIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0);
+ todo_wine{
+ expect(-1, focusIndex);
+ }
+ SendMessage(hTab, TCM_SETCURFOCUS, nTabs+1, 0);
+ focusIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
+ todo_wine{
+ expect(1, focusIndex);
+ }
+ }
+
+ /* Testing CurSel */
+ {
+ INT selectionIndex;
+
+ /* Testing CurSel with largest appropriate value */
+ selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs-1, 0);
+ expect(1, selectionIndex);
+ selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
+ expect(nTabs-1, selectionIndex);
+
+ /* Testing CurSel with negative value */
+ SendMessage(hTab, TCM_SETCURSEL, -10, 0);
+ selectionIndex = SendMessage(hTab, TCM_GETCURSEL, 0, 0);
+ todo_wine{
+ expect(-1, selectionIndex);
+ }
+
+ /* Testing CurSel with value larger than number of tabs */
+ selectionIndex = SendMessage(hTab, TCM_SETCURSEL, 1, 0);
+ todo_wine{
+ expect(-1, selectionIndex);
+ }
+ selectionIndex = SendMessage(hTab, TCM_SETCURSEL, nTabs+1, 0);
+ expect(-1, selectionIndex);
+ selectionIndex = SendMessage(hTab, TCM_GETCURFOCUS, 0, 0);
+ todo_wine{
+ expect(1, selectionIndex);
+ }
+ }
+
+ /* Testing ExtendedStyle */
+ {
+ DWORD prevExtendedStyle;
+ DWORD extendedStyle;
+
+ /* Testing Flat Seperators */
+ extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
+ prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_FLATSEPARATORS);
+ expect(extendedStyle, prevExtendedStyle);
+
+ extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
+ todo_wine{
+ expect(TCS_EX_FLATSEPARATORS, extendedStyle);
+ }
+
+ /* Testing Register Drop */
+ prevExtendedStyle = SendMessage(hTab, TCM_SETEXTENDEDSTYLE, 0, TCS_EX_REGISTERDROP);
+ expect(extendedStyle, prevExtendedStyle);
+
+ extendedStyle = SendMessage(hTab, TCM_GETEXTENDEDSTYLE, 0, 0);
+ todo_wine{
+ expect(TCS_EX_REGISTERDROP, extendedStyle);
+ }
+ }
+
+ /* Testing UnicodeFormat */
+ {
+ INT unicodeFormat;
+
+ unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
+ todo_wine{
+ expect(0, unicodeFormat);
+ }
+ unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0);
+ expect(1, unicodeFormat);
+
+ unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, FALSE, 0);
+ expect(1, unicodeFormat);
+ unicodeFormat = SendMessage(hTab, TCM_GETUNICODEFORMAT, 0, 0);
+ expect(0, unicodeFormat);
+
+ unicodeFormat = SendMessage(hTab, TCM_SETUNICODEFORMAT, TRUE, 0);
+ expect(0, unicodeFormat);
+ }
+
+ /* Testing GetSet Item */
+ {
+ TCITEM tcItem;
+ char szText[32] = "New Label";
+
+ tcItem.mask = TCIF_TEXT;
+ tcItem.pszText = &szText[0];
+ tcItem.cchTextMax = sizeof(szText);
+
+ ok ( SendMessage(hTab, TCM_SETITEM, 0, (LPARAM) &tcItem), "Setting new item failed.\n");
+ ok ( SendMessage(hTab, TCM_GETITEM, 0, (LPARAM) &tcItem), "Getting item failed.\n");
+ expect_str("New Label", tcItem.pszText);
+
+ ok ( SendMessage(hTab, TCM_GETITEM, 1, (LPARAM) &tcItem), "Getting item failed.\n");
+ expect_str("Tab 2", tcItem.pszText);
+ }
+
+ /* Testing GetSet ToolTip */
+ {
+ HWND toolTip;
+ char toolTipText[32] = "ToolTip Text Test";
+
+ toolTip = create_tooltip(hTab, toolTipText);
+ SendMessage(hTab, TCM_SETTOOLTIPS, (LPARAM) toolTip, 0);
+ ok (toolTip == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.");
+
+ SendMessage(hTab, TCM_SETTOOLTIPS, (LPARAM) NULL, 0);
+ ok (NULL == (HWND) SendMessage(hTab,TCM_GETTOOLTIPS,0,0), "ToolTip was set incorrectly.");
+ }
+
+ DestroyWindow(hTab);
+}
+
START_TEST(tab)
{
LOGFONTA logfont;
@@ -246,4 +495,7 @@ START_TEST(tab)
test_tab(54);
trace ("Testing with MinWidth set to 94\n");
test_tab(94);
+
+ /* Testing getters and setters with 5 tabs */
+ test_getters_setters(5);
}
More information about the wine-cvs
mailing list