Paul Vriens : shell32/tests: Don't crash on missing class implementations.
Module: wine Branch: master Commit: c88aea3b0c61209f6aa45d0f5dabb5df5fe72f1a URL: http://source.winehq.org/git/wine.git/?a=commit;h=c88aea3b0c61209f6aa45d0f5d... Author: Paul Vriens <Paul.Vriens.Wine(a)gmail.com> Date: Mon Mar 9 14:08:52 2009 +0100 shell32/tests: Don't crash on missing class implementations. --- dlls/shell32/tests/autocomplete.c | 18 ++++++++++++++++-- 1 files changed, 16 insertions(+), 2 deletions(-) diff --git a/dlls/shell32/tests/autocomplete.c b/dlls/shell32/tests/autocomplete.c index 782fc35..20315c7 100644 --- a/dlls/shell32/tests/autocomplete.c +++ b/dlls/shell32/tests/autocomplete.c @@ -33,7 +33,7 @@ static HWND hMainWnd, hEdit; static HINSTANCE hinst; static int killfocus_count; -static void test_init(void) { +static BOOL test_init(void) { HRESULT r; IAutoComplete* ac; IUnknown *acSource; @@ -41,16 +41,28 @@ static void test_init(void) { /* AutoComplete instance */ r = CoCreateInstance(&CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER, &IID_IAutoComplete, (LPVOID*)&ac); + if (r == REGDB_E_CLASSNOTREG) + { + win_skip("CLSID_AutoComplete is not registered\n"); + return FALSE; + } ok(SUCCEEDED(r), "no IID_IAutoComplete (0x%08x)\n", r); /* AutoComplete source */ r = CoCreateInstance(&CLSID_ACLMulti, NULL, CLSCTX_INPROC_SERVER, &IID_IACList, (LPVOID*)&acSource); + if (r == REGDB_E_CLASSNOTREG) + { + win_skip("CLSID_ACLMulti is not registered\n"); + return FALSE; + } 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); + + return TRUE; } static void test_killfocus(void) { /* Test if WM_KILLFOCUS messages are handled properly by checking if @@ -106,7 +118,8 @@ START_TEST(autocomplete) { if(!ok(hMainWnd != NULL, "Failed to create parent window. Tests aborted.\n")) return; - test_init(); + if (!test_init()) + goto cleanup; test_killfocus(); PostQuitMessage(0); @@ -115,6 +128,7 @@ START_TEST(autocomplete) { DispatchMessageA(&msg); } +cleanup: DestroyWindow(hEdit); DestroyWindow(hMainWnd);
participants (1)
-
Alexandre Julliard