Guillaume Charifi : oleaut32/tests: Add test for TLB dependencies lookup in resources.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Aug 26 15:20:30 CDT 2014
Module: wine
Branch: master
Commit: 16000c6129bdcf892ac60e2cd092ccfb4d0fd2f5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=16000c6129bdcf892ac60e2cd092ccfb4d0fd2f5
Author: Guillaume Charifi <guillaume.charifi at sfr.fr>
Date: Tue Aug 26 18:02:51 2014 +0200
oleaut32/tests: Add test for TLB dependencies lookup in resources.
---
dlls/oleaut32/tests/typelib.c | 96 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c
index 49057a4..728185a 100644
--- a/dlls/oleaut32/tests/typelib.c
+++ b/dlls/oleaut32/tests/typelib.c
@@ -5509,6 +5509,101 @@ static void test_stub(void)
CoUninitialize();
}
+static void test_dep(void) {
+ HRESULT hr;
+ const char *refFilename;
+ WCHAR refFilenameW[MAX_PATH];
+ ITypeLib *preftLib;
+ ITypeInfo *preftInfo;
+ char filename[MAX_PATH];
+ WCHAR filenameW[MAX_PATH];
+ ICreateTypeLib2 *pctLib;
+ ICreateTypeInfo *pctInfo;
+ ITypeLib *ptLib;
+ ITypeInfo *ptInfo;
+ ITypeInfo *ptInfoExt = NULL;
+ HREFTYPE refType;
+
+ static WCHAR ifacenameW[] = {'I','T','e','s','t','D','e','p',0};
+
+ static const GUID libguid = {0xe0228f26,0x2946,0x478c,{0xb6,0x4a,0x93,0xfe,0xef,0xa5,0x05,0x32}};
+ static const GUID ifaceguid = {0x394376dd,0x3bb8,0x4804,{0x8c,0xcc,0x95,0x59,0x43,0x40,0x04,0xf3}};
+
+ trace("Starting typelib dependency tests\n");
+
+ refFilename = create_test_typelib(2);
+ MultiByteToWideChar(CP_ACP, 0, refFilename, -1, refFilenameW, MAX_PATH);
+
+ hr = LoadTypeLibEx(refFilenameW, REGKIND_NONE, &preftLib);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ITypeLib_GetTypeInfoOfGuid(preftLib, &IID_ISimpleIface, &preftInfo);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ GetTempFileNameA(".", "tlb", 0, filename);
+ MultiByteToWideChar(CP_ACP, 0, filename, -1, filenameW, MAX_PATH);
+
+ if(sizeof(void*) == 8) {
+ hr = CreateTypeLib2(SYS_WIN64, filenameW, &pctLib);
+ ok(hr == S_OK, "got %08x\n", hr);
+ } else {
+ hr = CreateTypeLib2(SYS_WIN32, filenameW, &pctLib);
+ ok(hr == S_OK, "got %08x\n", hr);
+ }
+
+ hr = ICreateTypeLib2_SetGuid(pctLib, &libguid);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeLib2_SetLcid(pctLib, LOCALE_NEUTRAL);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeLib2_CreateTypeInfo(pctLib, ifacenameW, TKIND_INTERFACE, &pctInfo);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeInfo_SetGuid(pctInfo, &ifaceguid);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeInfo_SetTypeFlags(pctInfo, TYPEFLAG_FOLEAUTOMATION);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeInfo_AddRefTypeInfo(pctInfo, preftInfo, &refType);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ hr = ICreateTypeInfo_AddImplType(pctInfo, 0, refType);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ ICreateTypeInfo_Release(pctInfo);
+
+ hr = ICreateTypeLib2_SaveAllChanges(pctLib);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ ICreateTypeLib2_Release(pctLib);
+
+ ITypeInfo_Release(preftInfo);
+ ITypeLib_Release(preftLib);
+
+ DeleteFileW(refFilenameW);
+
+ hr = LoadTypeLibEx(filenameW, REGKIND_NONE, &ptLib);
+ ok(hr == S_OK, "got: %x\n", hr);
+
+ hr = ITypeLib_GetTypeInfoOfGuid(ptLib, &ifaceguid, &ptInfo);
+ ok(hr == S_OK, "got: %x\n", hr);
+
+ hr = ITypeInfo_GetRefTypeOfImplType(ptInfo, 0, &refType);
+ ok(hr == S_OK, "got: %x\n", hr);
+
+ hr = ITypeInfo_GetRefTypeInfo(ptInfo, refType, &ptInfoExt);
+ todo_wine ok(hr == S_OK || broken(hr == TYPE_E_CANTLOADLIBRARY) /* win 2000 */, "got: %x\n", hr);
+
+ ITypeInfo_Release(ptInfo);
+ if(ptInfoExt)
+ ITypeInfo_Release(ptInfoExt);
+ ITypeLib_Release(ptLib);
+
+ DeleteFileW(filenameW);
+}
+
START_TEST(typelib)
{
const char *filename;
@@ -5548,4 +5643,5 @@ START_TEST(typelib)
test_LoadRegTypeLib();
test_GetLibAttr();
test_stub();
+ test_dep();
}
More information about the wine-cvs
mailing list