Author: akhaldi
Date: Sat Apr 26 18:50:38 2014
New Revision: 63008
URL:
http://svn.reactos.org/svn/reactos?rev=63008&view=rev
Log:
[ATL_WINETEST]
* Sync with Wine 1.7.17.
CORE-8080
Modified:
trunk/rostests/winetests/atl/CMakeLists.txt
trunk/rostests/winetests/atl/atl_ax.c
trunk/rostests/winetests/atl/module.c
trunk/rostests/winetests/atl/registrar.c
Modified: trunk/rostests/winetests/atl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/atl/CMakeLists.…
==============================================================================
--- trunk/rostests/winetests/atl/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/winetests/atl/CMakeLists.txt [iso-8859-1] Sat Apr 26 18:50:38 2014
@@ -1,3 +1,4 @@
+add_definitions(-D_ATL_VER=_ATL_VER_30)
list(APPEND SOURCE
atl_ax.c
@@ -8,5 +9,5 @@
add_executable(atl_winetest ${SOURCE})
target_link_libraries(atl_winetest wine uuid)
set_module_type(atl_winetest win32cui)
-add_importlibs(atl_winetest ole32 user32 atl msvcrt kernel32 ntdll advapi32)
+add_importlibs(atl_winetest ole32 user32 atl advapi32 msvcrt kernel32)
add_cd_file(TARGET atl_winetest DESTINATION reactos/bin FOR all)
Modified: trunk/rostests/winetests/atl/atl_ax.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/atl/atl_ax.c?re…
==============================================================================
--- trunk/rostests/winetests/atl/atl_ax.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/atl/atl_ax.c [iso-8859-1] Sat Apr 26 18:50:38 2014
@@ -40,6 +40,7 @@
//#include <olectl.h>
//#include <ocidl.h>
#include <exdisp.h>
+#include <wine/atlbase.h>
static HRESULT (WINAPI *pAtlAxAttachControl)(IUnknown *, HWND, IUnknown **);
@@ -55,12 +56,12 @@
WNDCLASSA wndclassA;
wndclassA.style = 0;
- wndclassA.lpfnWndProc = DefWindowProc;
+ wndclassA.lpfnWndProc = DefWindowProcA;
wndclassA.cbClsExtra = 0;
wndclassA.cbWndExtra = 0;
wndclassA.hInstance = GetModuleHandleA(NULL);
wndclassA.hIcon = NULL;
- wndclassA.hCursor = LoadCursorA(NULL, IDC_ARROW);
+ wndclassA.hCursor = LoadCursorA(NULL, (LPSTR)IDC_ARROW);
wndclassA.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
wndclassA.lpszMenuName = NULL;
wndclassA.lpszClassName = "WineAtlTestClass";
@@ -101,15 +102,11 @@
hr = pAtlAxAttachControl(pObj, NULL, NULL);
ok(hr == S_FALSE, "Expected AtlAxAttachControl to return S_FALSE, got
0x%08x\n", hr);
- pContainer = (IUnknown *)0xdeadbeef;
+ pContainer = NULL;
hr = pAtlAxAttachControl(pObj, NULL, &pContainer);
ok(hr == S_FALSE, "Expected AtlAxAttachControl to return S_FALSE, got
0x%08x\n", hr);
- ok(pContainer != (IUnknown *)0xdeadbeef &&
- pContainer != NULL,
- "Expected the output container pointer to be initialized to non-NULL, got
%p\n", pContainer);
-
- if (pContainer != (IUnknown *)0xdeadbeef && pContainer != NULL)
- IUnknown_Release(pContainer);
+ ok(pContainer != NULL, "got %p\n", pContainer);
+ IUnknown_Release(pContainer);
hr = pAtlAxAttachControl(pObj, hwnd, NULL);
ok(hr == S_OK, "Expected AtlAxAttachControl to return S_OK, got 0x%08x\n",
hr);
@@ -117,6 +114,24 @@
IUnknown_Release(pObj);
DestroyWindow(hwnd);
+}
+
+static void test_ax_win(void)
+{
+ BOOL ret;
+ WNDCLASSEXW wcex;
+ static const WCHAR AtlAxWin[] =
{'A','t','l','A','x','W','i','n',0};
+ static HMODULE hinstance = 0;
+
+ ret = AtlAxWinInit();
+ ok(ret, "AtlAxWinInit failed\n");
+
+ hinstance = GetModuleHandleA(NULL);
+ memset(&wcex, 0, sizeof(wcex));
+ wcex.cbSize = sizeof(wcex);
+ ret = GetClassInfoExW(hinstance, AtlAxWin, &wcex);
+ ok(ret, "AtlAxWin has not registered\n");
+ ok(wcex.style == CS_GLOBALCLASS, "wcex.style %08x\n", wcex.style);
}
START_TEST(atl_ax)
@@ -133,5 +148,7 @@
else
win_skip("AtlAxAttachControl is not available\n");
+ test_ax_win();
+
CoUninitialize();
}
Modified: trunk/rostests/winetests/atl/module.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/atl/module.c?re…
==============================================================================
--- trunk/rostests/winetests/atl/module.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/atl/module.c [iso-8859-1] Sat Apr 26 18:50:38 2014
@@ -29,84 +29,138 @@
#define COBJMACROS
#include <wine/test.h>
-//#include <windef.h>
-//#include <winbase.h>
-//#include <winuser.h>
-//#include <wingdi.h>
-//#include <winnls.h>
-//#include <winerror.h>
-//#include <winnt.h>
-//#include <wtypes.h>
+
#include <objbase.h>
-//#include <olectl.h>
-//#include <ocidl.h>
-struct _ATL_OBJMAP_ENTRYW;
-struct _AtlCreateWndData;
-struct _ATL_TERMFUNC_ELEM;
-
-struct _ATL_MODULEW
-{
- UINT cbSize;
- HINSTANCE m_hInst;
- HINSTANCE m_hInstResource;
- HINSTANCE m_hInstTypeLib;
- struct _ATL_OBJMAP_ENTRYW* m_pObjMap;
- LONG m_nLockCnt;
- HANDLE m_hHeap;
- union
- {
- CRITICAL_SECTION m_csTypeInfoHolder;
- CRITICAL_SECTION m_csStaticDataInit;
- } u;
- CRITICAL_SECTION m_csWindowCreate;
- CRITICAL_SECTION m_csObjMap;
-
- DWORD dwAtlBuildVer;
- struct _AtlCreateWndData* m_pCreateWndList;
- BOOL m_bDestroyHeap;
- GUID* pguidVer;
- DWORD m_dwHeaps;
- HANDLE* m_phHeaps;
- int m_nHeap;
- struct _ATL_TERMFUNC_ELEM* m_pTermFuncs;
-};
-
-HRESULT WINAPI AtlModuleInit(struct _ATL_MODULEW* pM, struct _ATL_OBJMAP_ENTRYW* p,
HINSTANCE h);
+#include <wine/atlbase.h>
#define MAXSIZE 512
static void test_StructSize(void)
{
- struct _ATL_MODULEW *tst;
- HRESULT hres;
- int i;
+ _ATL_MODULEW *tst;
+ HRESULT hres;
+ int i;
- tst = HeapAlloc (GetProcessHeap(),HEAP_ZERO_MEMORY,MAXSIZE);
+ tst = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, MAXSIZE);
- for (i=0;i<MAXSIZE;i++) {
- tst->cbSize = i;
- hres = AtlModuleInit(tst, NULL, NULL);
+ for (i=0;i<MAXSIZE;i++) {
+ tst->cbSize = i;
+ hres = AtlModuleInit(tst, NULL, NULL);
- switch (i) {
- case FIELD_OFFSET( struct _ATL_MODULEW, dwAtlBuildVer ):
- case sizeof(struct _ATL_MODULEW):
+ switch (i) {
+ case FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer):
+ case sizeof(_ATL_MODULEW):
#ifdef _WIN64
- case sizeof(struct _ATL_MODULEW) + sizeof(void *):
+ case sizeof(_ATL_MODULEW) + sizeof(void *):
#endif
- ok (hres == S_OK, "AtlModuleInit with %d failed (0x%x).\n", i, (int)hres);
- break;
- default:
- ok (FAILED(hres) ||
- broken((i > FIELD_OFFSET( struct _ATL_MODULEW,
dwAtlBuildVer )) && (hres == S_OK)), /* Win95 */
- "AtlModuleInit with %d succeeded? (0x%x).\n", i,
(int)hres);
- break;
- }
- }
+ ok (hres == S_OK, "AtlModuleInit with %d failed (0x%x).\n", i,
(int)hres);
+ break;
+ default:
+ ok (FAILED(hres), "AtlModuleInit with %d succeeded? (0x%x).\n", i,
(int)hres);
+ break;
+ }
+ }
- HeapFree (GetProcessHeap(), 0, tst);
+ HeapFree (GetProcessHeap(), 0, tst);
+}
+
+static void test_winmodule(void)
+{
+ _AtlCreateWndData create_data[3];
+ _ATL_MODULEW winmod;
+ void *p;
+ HRESULT hres;
+
+ winmod.cbSize = sizeof(winmod);
+ winmod.m_pCreateWndList = (void*)0xdeadbeef;
+ winmod.m_csWindowCreate.LockCount = 0xdeadbeef;
+ hres = AtlModuleInit(&winmod, NULL, NULL);
+ ok(hres == S_OK, "AtlModuleInit failed: %08x\n", hres);
+ ok(!winmod.m_pCreateWndList, "winmod.m_pCreateWndList = %p\n",
winmod.m_pCreateWndList);
+ ok(winmod.m_csWindowCreate.LockCount == -1, "winmod.m_csWindowCreate.LockCount =
%d\n",
+ winmod.m_csWindowCreate.LockCount);
+
+ AtlModuleAddCreateWndData(&winmod, create_data, (void*)0xdead0001);
+ ok(winmod.m_pCreateWndList == create_data, "winmod.m_pCreateWndList !=
create_data\n");
+ ok(create_data[0].m_pThis == (void*)0xdead0001, "unexpected
create_data[0].m_pThis %p\n", create_data[0].m_pThis);
+ ok(create_data[0].m_dwThreadID == GetCurrentThreadId(), "unexpected
create_data[0].m_dwThreadID %x\n",
+ create_data[0].m_dwThreadID);
+ ok(!create_data[0].m_pNext, "unexpected create_data[0].m_pNext %p\n",
create_data[0].m_pNext);
+
+ AtlModuleAddCreateWndData(&winmod, create_data+1, (void*)0xdead0002);
+ ok(winmod.m_pCreateWndList == create_data+1, "winmod.m_pCreateWndList !=
create_data\n");
+ ok(create_data[1].m_pThis == (void*)0xdead0002, "unexpected
create_data[1].m_pThis %p\n", create_data[1].m_pThis);
+ ok(create_data[1].m_dwThreadID == GetCurrentThreadId(), "unexpected
create_data[1].m_dwThreadID %x\n",
+ create_data[1].m_dwThreadID);
+ ok(create_data[1].m_pNext == create_data, "unexpected create_data[1].m_pNext
%p\n", create_data[1].m_pNext);
+
+ AtlModuleAddCreateWndData(&winmod, create_data+2, (void*)0xdead0003);
+ ok(winmod.m_pCreateWndList == create_data+2, "winmod.m_pCreateWndList !=
create_data\n");
+ ok(create_data[2].m_pThis == (void*)0xdead0003, "unexpected
create_data[2].m_pThis %p\n", create_data[2].m_pThis);
+ ok(create_data[2].m_dwThreadID == GetCurrentThreadId(), "unexpected
create_data[2].m_dwThreadID %x\n",
+ create_data[2].m_dwThreadID);
+ ok(create_data[2].m_pNext == create_data+1, "unexpected create_data[2].m_pNext
%p\n", create_data[2].m_pNext);
+
+ p = AtlModuleExtractCreateWndData(&winmod);
+ ok(p == (void*)0xdead0003, "unexpected AtlModuleExtractCreateWndData result
%p\n", p);
+ ok(winmod.m_pCreateWndList == create_data+1, "winmod.m_pCreateWndList !=
create_data\n");
+ ok(create_data[2].m_pNext == create_data+1, "unexpected create_data[2].m_pNext
%p\n", create_data[2].m_pNext);
+
+ create_data[1].m_dwThreadID = 0xdeadbeef;
+
+ p = AtlModuleExtractCreateWndData(&winmod);
+ ok(p == (void*)0xdead0001, "unexpected AtlModuleExtractCreateWndData result
%p\n", p);
+ ok(winmod.m_pCreateWndList == create_data+1, "winmod.m_pCreateWndList !=
create_data\n");
+ ok(!create_data[0].m_pNext, "unexpected create_data[0].m_pNext %p\n",
create_data[0].m_pNext);
+ ok(!create_data[1].m_pNext, "unexpected create_data[1].m_pNext %p\n",
create_data[1].m_pNext);
+
+ p = AtlModuleExtractCreateWndData(&winmod);
+ ok(!p, "unexpected AtlModuleExtractCreateWndData result %p\n", p);
+ ok(winmod.m_pCreateWndList == create_data+1, "winmod.m_pCreateWndList !=
create_data\n");
+}
+
+static DWORD cb_val;
+
+static void WINAPI term_callback(DWORD dw)
+{
+ cb_val = dw;
+}
+
+static void test_term(void)
+{
+ _ATL_MODULEW test;
+ HRESULT hres;
+
+ test.cbSize = sizeof(_ATL_MODULEW);
+
+ hres = AtlModuleInit(&test, NULL, NULL);
+ ok (hres == S_OK, "AtlModuleInit failed (0x%x).\n", (int)hres);
+
+ hres = AtlModuleAddTermFunc(&test, term_callback, 0x22);
+ ok (hres == S_OK, "AtlModuleAddTermFunc failed (0x%x).\n", (int)hres);
+
+ cb_val = 0xdeadbeef;
+ hres = AtlModuleTerm(&test);
+ ok (hres == S_OK, "AtlModuleTerm failed (0x%x).\n", (int)hres);
+ ok (cb_val == 0x22, "wrong callback value (0x%x).\n", (int)cb_val);
+
+ test.cbSize = FIELD_OFFSET(_ATL_MODULEW, dwAtlBuildVer);
+
+ hres = AtlModuleInit(&test, NULL, NULL);
+ ok (hres == S_OK, "AtlModuleInit failed (0x%x).\n", (int)hres);
+
+ hres = AtlModuleAddTermFunc(&test, term_callback, 0x23);
+ ok (hres == S_OK, "AtlModuleAddTermFunc failed (0x%x).\n", (int)hres);
+
+ cb_val = 0xdeadbeef;
+ hres = AtlModuleTerm(&test);
+ ok (hres == S_OK, "AtlModuleTerm failed (0x%x).\n", (int)hres);
+ ok (cb_val == 0xdeadbeef, "wrong callback value (0x%x).\n", (int)cb_val);
}
START_TEST(module)
{
- test_StructSize();
+ test_StructSize();
+ test_winmodule();
+ test_term();
}
Modified: trunk/rostests/winetests/atl/registrar.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/atl/registrar.c…
==============================================================================
--- trunk/rostests/winetests/atl/registrar.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/atl/registrar.c [iso-8859-1] Sat Apr 26 18:50:38 2014
@@ -44,7 +44,7 @@
#include <atliface.h>
static const char textA[] =
-"HKCR \n"
+"HKCU \n"
"{ \n"
" ForceRemove eebf73c4-50fd-478f-bbcf-db212221227a \n"
" { \n"
@@ -74,7 +74,7 @@
hr = CoCreateInstance(&CLSID_Registrar, NULL, CLSCTX_INPROC_SERVER,
&IID_IRegistrar, (void**)®istrar);
if (FAILED(hr))
{
- skip("creating IRegistrar failed, hr = 0x%08X\n", hr);
+ win_skip("creating IRegistrar failed, hr = 0x%08X\n", hr);
return;
}
@@ -90,9 +90,14 @@
MultiByteToWideChar(CP_ACP, 0, textA, -1, textW, count);
hr = IRegistrar_StringRegister(registrar, textW);
- ok(SUCCEEDED(hr), "IRegistrar_StringRegister failed, hr = 0x%08X\n",
hr);
+ ok(hr == S_OK, "StringRegister failed: %08x\n", hr);
+ if (FAILED(hr))
+ {
+ IRegistrar_Release(registrar);
+ return;
+ }
- lret = RegOpenKeyA(HKEY_CLASSES_ROOT,
"eebf73c4-50fd-478f-bbcf-db212221227a", &key);
+ lret = RegOpenKeyA(HKEY_CURRENT_USER,
"eebf73c4-50fd-478f-bbcf-db212221227a", &key);
ok(lret == ERROR_SUCCESS, "error %d opening registry key\n", lret);
size = sizeof(dword);
@@ -148,8 +153,9 @@
hres = CoCreateInstance(&CLSID_Registrar, (IUnknown*)0xdeadbeef,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
&IID_IUnknown, (void**)&unk);
- ok(hres == CLASS_E_NOAGGREGATION, "CoCreateInstance failed: %08x, expected
CLASS_E_NOAGGREGATION\n", hres);
- ok(!unk, "unk = %p\n", unk);
+ ok(hres == CLASS_E_NOAGGREGATION || broken(hres == E_INVALIDARG),
+ "CoCreateInstance failed: %08x, expected CLASS_E_NOAGGREGATION\n",
hres);
+ ok(!unk || unk == (IUnknown*)0xdeadbeef, "unk = %p\n", unk);
}
START_TEST(registrar)