From: Vibhav Pant <vpant@codeweavers.com> Signed-off-by: Vibhav Pant <vpant@codeweavers.com> --- dlls/rometadata/tests/rometadata.c | 28 ++++++++++++++++++++++++++++ dlls/rometadata/tests/test-enum.idl | 10 ++++++++++ 2 files changed, 38 insertions(+) diff --git a/dlls/rometadata/tests/rometadata.c b/dlls/rometadata/tests/rometadata.c index f05e116a9fd..b07cbd02009 100644 --- a/dlls/rometadata/tests/rometadata.c +++ b/dlls/rometadata/tests/rometadata.c @@ -970,6 +970,7 @@ static void test_IMetaDataImport(void) { tdInterface | tdAbstract | tdWindowsRuntime, "ITest2", "Wine.Test", 0x1000000, "Windows.Foundation.UniversalApiContract", 0x30000 }, { tdPublic | tdSealed | tdWindowsRuntime, "Test2", "Wine.Test", 0x100000b, "Windows.Foundation.UniversalApiContract", 0x30000 }, { tdPublic | tdInterface | tdAbstract | tdWindowsRuntime, "ITest3", "Wine.Test", 0x1000000, "Windows.Foundation.UniversalApiContract", 0x10000 }, + { tdPublic | tdInterface | tdAbstract | tdWindowsRuntime, "ITest4", "Wine.Test", 0x1000000, "Windows.Foundation.UniversalApiContract", 0x10000 }, }; static const struct method_props test2_methods[2] = { @@ -1015,6 +1016,8 @@ static void test_IMetaDataImport(void) mdMethodDef *methoddef_tokens, methoddef; mdFieldDef *fielddef_tokens, fielddef; HCORENUM henum = NULL, henum2 = NULL; + mdInterfaceImpl impl = mdTokenNil; + mdTypeRef typeref = mdTokenNil; IMetaDataDispenser *dispenser; mdProperty *property_tokens; IMetaDataImport *md_import; @@ -1543,6 +1546,31 @@ static void test_IMetaDataImport(void) winetest_pop_context(); } IMetaDataImport_CloseEnum(md_import, henum); + + hr = IMetaDataImport_FindTypeDefByName(md_import, L"Wine.Test.ITest4", mdTokenNil, &typedef1); + ok(hr == S_OK, "got hr %#lx\n", hr); + + henum = NULL; + buf_count = 0; + hr = IMetaDataImport_EnumInterfaceImpls(md_import, &henum, typedef1, &impl, 1, &buf_count); + todo_wine ok(hr == S_OK, "got hr %#lx\n", hr); + todo_wine ok(buf_count == 1, "got buf_count %lu\n", buf_count); + todo_wine test_token(md_import, impl, mdtInterfaceImpl, FALSE); + IMetaDataImport_CloseEnum(md_import, henum); + + token = typedef2 = mdTokenNil; + hr = IMetaDataImport_GetInterfaceImplProps(md_import, impl, &typedef2, &token); + todo_wine ok(hr == S_OK, "got hr %#lx\n", hr); + todo_wine test_token(md_import, typedef2, mdtTypeDef, FALSE); + todo_wine test_token(md_import, token, mdtTypeRef, FALSE); + todo_wine ok(typedef2 == typedef1, "got typedef2 %s != %s\n", debugstr_mdToken(typedef2), debugstr_mdToken(typedef1)); + + hr = IMetaDataImport_FindTypeRef(md_import, mdtModule | 1, L"Wine.Test.ITest3", &typeref); + todo_wine ok(hr == S_OK, "got hr %#lx\n", hr); + todo_wine test_token(md_import, typeref, mdtTypeRef, FALSE); + todo_wine_if(token != mdTokenNil) + ok(token == typeref, "got token %s != %s\n", debugstr_mdToken(token), debugstr_mdToken(typeref)); + IMetaDataImport_Release(md_import); } diff --git a/dlls/rometadata/tests/test-enum.idl b/dlls/rometadata/tests/test-enum.idl index 386ca917105..bdc764532c9 100644 --- a/dlls/rometadata/tests/test-enum.idl +++ b/dlls/rometadata/tests/test-enum.idl @@ -85,4 +85,14 @@ namespace Wine.Test { [propget] HRESULT Prop5([out, retval] int *a); [propput] HRESULT Prop5([in] int a); } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + uuid(deadbeef-dead-beef-dead-deadbeef0004) + ] + interface ITest4 : IInspectable + requires Wine.Test.ITest3 + { + HRESULT Method1(); + } } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11719