Mikołaj Zalewski : comctl32: treeview: Add a test showing that a pszText of NULL is equivalent to LPSTR_CALLBACK.
Alexandre Julliard
julliard at winehq.org
Tue Jan 20 08:27:39 CST 2009
Module: wine
Branch: master
Commit: 390e1dfa282e1735c86f1d01fc17b5d8d5bda287
URL: http://source.winehq.org/git/wine.git/?a=commit;h=390e1dfa282e1735c86f1d01fc17b5d8d5bda287
Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date: Mon Jan 19 22:29:45 2009 +0100
comctl32: treeview: Add a test showing that a pszText of NULL is equivalent to LPSTR_CALLBACK.
---
dlls/comctl32/tests/treeview.c | 70 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 0 deletions(-)
diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c
index 5e2746c..0e85014 100644
--- a/dlls/comctl32/tests/treeview.c
+++ b/dlls/comctl32/tests/treeview.c
@@ -32,6 +32,8 @@
#include "wine/test.h"
#include "msg.h"
+const char *TEST_CALLBACK_TEXT = "callback_text";
+
#define NUM_MSG_SEQUENCES 1
#define LISTVIEW_SEQ_INDEX 0
@@ -264,6 +266,64 @@ static void FillRoot(void)
ok(!strcmp(sequence, "AB."), "Item creation\n");
}
+static void TestCallback(void)
+{
+ HTREEITEM hRoot;
+ HTREEITEM hItem1, hItem2;
+ TVINSERTSTRUCTA ins;
+ TVITEM tvi;
+ CHAR test_string[] = "Test_string";
+ CHAR buf[128];
+ LRESULT ret;
+
+ TreeView_DeleteAllItems(hTree);
+ ins.hParent = TVI_ROOT;
+ ins.hInsertAfter = TVI_ROOT;
+ U(ins).item.mask = TVIF_TEXT;
+ U(ins).item.pszText = LPSTR_TEXTCALLBACK;
+ hRoot = TreeView_InsertItem(hTree, &ins);
+ assert(hRoot);
+
+ tvi.hItem = hRoot;
+ tvi.mask = TVIF_TEXT;
+ tvi.pszText = buf;
+ tvi.cchTextMax = sizeof(buf)/sizeof(buf[0]);
+ ret = TreeView_GetItem(hTree, &tvi);
+ ok(ret == 1, "ret");
+ ok(strcmp(tvi.pszText, TEST_CALLBACK_TEXT) == 0, "Callback item text mismatch %s vs %s\n",
+ tvi.pszText, TEST_CALLBACK_TEXT);
+
+ ins.hParent = hRoot;
+ ins.hInsertAfter = TVI_FIRST;
+ U(ins).item.mask = TVIF_TEXT;
+ U(ins).item.pszText = test_string;
+ hItem1 = TreeView_InsertItem(hTree, &ins);
+ assert(hItem1);
+
+ tvi.hItem = hItem1;
+ TreeView_GetItem(hTree, &tvi);
+ ok(strcmp(tvi.pszText, test_string) == 0, "Item text mismatch %s vs %s\n",
+ tvi.pszText, test_string);
+
+ /* undocumented: pszText of NULL also means LPSTR_CALLBACK: */
+ tvi.pszText = NULL;
+ ret = TreeView_SetItem(hTree, &tvi);
+ ok(ret == 1, "Expected SetItem return 1, got %ld\n", ret);
+ tvi.pszText = buf;
+ TreeView_GetItem(hTree, &tvi);
+ todo_wine ok(strcmp(tvi.pszText, TEST_CALLBACK_TEXT) == 0, "Item text mismatch %s vs %s\n",
+ tvi.pszText, TEST_CALLBACK_TEXT);
+
+ U(ins).item.pszText = NULL;
+ hItem2 = TreeView_InsertItem(hTree, &ins);
+ assert(hItem2);
+ tvi.hItem = hItem2;
+ memset(buf, 0, sizeof(buf));
+ TreeView_GetItem(hTree, &tvi);
+ todo_wine ok(strcmp(tvi.pszText, TEST_CALLBACK_TEXT) == 0, "Item text mismatch %s vs %s\n",
+ tvi.pszText, TEST_CALLBACK_TEXT);
+}
+
static void DoTest1(void)
{
BOOL r;
@@ -664,6 +724,13 @@ static LRESULT CALLBACK MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa
IdentifyItem(pTreeView->itemOld.hItem);
IdentifyItem(pTreeView->itemNew.hItem);
return 0;
+ case TVN_GETDISPINFOA: {
+ NMTVDISPINFOA *disp = (NMTVDISPINFOA *)lParam;
+ if (disp->item.mask & TVIF_TEXT) {
+ lstrcpyn(disp->item.pszText, TEST_CALLBACK_TEXT, disp->item.cchTextMax);
+ }
+ return 0;
+ }
}
}
return 0;
@@ -746,6 +813,9 @@ START_TEST(treeview)
/* Sequences tested inside due to number */
TestGetSet();
+ /* Clears all the previous items */
+ TestCallback();
+
PostMessageA(hMainWnd, WM_CLOSE, 0, 0);
while(GetMessageA(&msg,0,0,0)) {
TranslateMessage(&msg);
More information about the wine-cvs
mailing list