Jan de Mooij : shell32/autocomplete: Add unit tests for autocomplete.
Alexandre Julliard
julliard at winehq.org
Wed Dec 3 05:56:23 CST 2008
Module: wine
Branch: master
Commit: 8c6495cc23c7bf89fecbcbfcdd169326f1dfd8c6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8c6495cc23c7bf89fecbcbfcdd169326f1dfd8c6
Author: Jan de Mooij <jandemooij at gmail.com>
Date: Tue Dec 2 17:57:45 2008 +0100
shell32/autocomplete: Add unit tests for autocomplete.
---
dlls/shell32/tests/Makefile.in | 1 +
dlls/shell32/tests/autocomplete.c | 122 +++++++++++++++++++++++++++++++++++++
2 files changed, 123 insertions(+), 0 deletions(-)
diff --git a/dlls/shell32/tests/Makefile.in b/dlls/shell32/tests/Makefile.in
index 4b1a140..0fc8d74 100644
--- a/dlls/shell32/tests/Makefile.in
+++ b/dlls/shell32/tests/Makefile.in
@@ -7,6 +7,7 @@ IMPORTS = shell32 ole32 oleaut32 user32 advapi32 kernel32
CTESTS = \
appbar.c \
+ autocomplete.c \
generated.c \
shelllink.c \
shellpath.c \
diff --git a/dlls/shell32/tests/autocomplete.c b/dlls/shell32/tests/autocomplete.c
new file mode 100644
index 0000000..782fc35
--- /dev/null
+++ b/dlls/shell32/tests/autocomplete.c
@@ -0,0 +1,122 @@
+/*
+ * Tests for autocomplete
+ *
+ * Copyright 2008 Jan de Mooij
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+
+#include <wine/test.h>
+#include <stdarg.h>
+
+#include "windows.h"
+#include "shobjidl.h"
+#include "shlguid.h"
+#include "initguid.h"
+#include "shldisp.h"
+
+static HWND hMainWnd, hEdit;
+static HINSTANCE hinst;
+static int killfocus_count;
+
+static void test_init(void) {
+ HRESULT r;
+ IAutoComplete* ac;
+ IUnknown *acSource;
+
+ /* AutoComplete instance */
+ r = CoCreateInstance(&CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IAutoComplete, (LPVOID*)&ac);
+ ok(SUCCEEDED(r), "no IID_IAutoComplete (0x%08x)\n", r);
+
+ /* AutoComplete source */
+ r = CoCreateInstance(&CLSID_ACLMulti, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IACList, (LPVOID*)&acSource);
+ ok(SUCCEEDED(r), "no IID_IACList (0x%08x)\n", r);
+
+ /* bind to edit control */
+ r = IAutoComplete_Init(ac, hEdit, acSource, NULL, NULL);
+ ok(SUCCEEDED(r), "Init failed (0x%08x)\n", r);
+}
+static void test_killfocus(void) {
+ /* Test if WM_KILLFOCUS messages are handled properly by checking if
+ * the parent receives an EN_KILLFOCUS message. */
+ SetFocus(hEdit);
+ killfocus_count = 0;
+ SetFocus(0);
+ ok(killfocus_count == 1, "Expected one EN_KILLFOCUS message, got: %d\n", killfocus_count);
+}
+static LRESULT CALLBACK MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
+ switch(msg) {
+ case WM_CREATE:
+ /* create edit control */
+ hEdit = CreateWindowEx(0, "EDIT", "Some text", 0, 10, 10, 300, 300,
+ hWnd, NULL, hinst, NULL);
+ ok(hEdit != NULL, "Can't create edit control\n");
+ break;
+ case WM_COMMAND:
+ if(HIWORD(wParam) == EN_KILLFOCUS)
+ killfocus_count++;
+ break;
+ }
+ return DefWindowProcA(hWnd, msg, wParam, lParam);
+}
+static void createMainWnd(void) {
+ WNDCLASSA wc;
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = GetModuleHandleA(NULL);
+ wc.hIcon = NULL;
+ wc.hCursor = LoadCursorA(NULL, IDC_IBEAM);
+ wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = "MyTestWnd";
+ wc.lpfnWndProc = MyWndProc;
+ RegisterClassA(&wc);
+
+ hMainWnd = CreateWindowExA(0, "MyTestWnd", "Blah", WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, CW_USEDEFAULT, 130, 105, NULL, NULL, GetModuleHandleA(NULL), 0);
+}
+START_TEST(autocomplete) {
+ HRESULT r;
+ MSG msg;
+
+ r = CoInitialize(NULL);
+ ok(SUCCEEDED(r), "CoInitialize failed (0x%08x). Tests aborted.\n", r);
+ if (FAILED(r))
+ return;
+
+ createMainWnd();
+
+ if(!ok(hMainWnd != NULL, "Failed to create parent window. Tests aborted.\n"))
+ return;
+
+ test_init();
+ test_killfocus();
+
+ PostQuitMessage(0);
+ while(GetMessageA(&msg,0,0,0)) {
+ TranslateMessage(&msg);
+ DispatchMessageA(&msg);
+ }
+
+ DestroyWindow(hEdit);
+ DestroyWindow(hMainWnd);
+
+ CoUninitialize();
+}
More information about the wine-cvs
mailing list