From f8fa36c181634e12673ee8de8a2c5896242db281 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Tue, 21 Sep 2010 16:40:07 -0500 Subject: [PATCH 05/22] mscoree: Add a test that enumerates .NET runtimes. --- dlls/mscoree/tests/metahost.c | 47 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-) diff --git a/dlls/mscoree/tests/metahost.c b/dlls/mscoree/tests/metahost.c index b79c9b6..27bed7f 100644 --- a/dlls/mscoree/tests/metahost.c +++ b/dlls/mscoree/tests/metahost.c @@ -62,10 +62,57 @@ void cleanup(void) FreeLibrary(hmscoree); } +void test_enumruntimes(void) +{ + IEnumUnknown *runtime_enum; + IUnknown *unk; + DWORD count; + ICLRRuntimeInfo *runtime_info; + HRESULT hr; + WCHAR buf[MAX_PATH]; + + hr = ICLRMetaHost_EnumerateInstalledRuntimes(metahost, &runtime_enum); + ok(hr == S_OK, "EnumerateInstalledRuntimes returned %x\n", hr); + if (FAILED(hr)) return; + + while ((hr = IEnumUnknown_Next(runtime_enum, 1, &unk, &count)) == S_OK) + { + hr = IUnknown_QueryInterface(unk, &IID_ICLRRuntimeInfo, (void**)&runtime_info); + ok(hr == S_OK, "QueryInterface returned %x\n", hr); + + count = 1; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, buf, &count); + ok(hr == HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), "GetVersionString returned %x\n", hr); + ok(count > 1, "GetVersionString returned count %u\n", count); + + count = 0xdeadbeef; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, NULL, &count); + ok(hr == S_OK, "GetVersionString returned %x\n", hr); + ok(count > 1 && count != 0xdeadbeef, "GetVersionString returned count %u\n", count); + + count = MAX_PATH; + hr = ICLRRuntimeInfo_GetVersionString(runtime_info, buf, &count); + ok(hr == S_OK, "GetVersionString returned %x\n", hr); + ok(count > 1, "GetVersionString returned count %u\n", count); + + trace("runtime found: %s\n", wine_dbgstr_w(buf)); + + ICLRRuntimeInfo_Release(runtime_info); + + IUnknown_Release(unk); + } + + ok(hr == S_FALSE, "IEnumUnknown_Next returned %x\n", hr); + + IEnumUnknown_Release(runtime_enum); +} + START_TEST(metahost) { if (!init_pointers()) return; + test_enumruntimes(); + cleanup(); } -- 1.7.0.4