shell32/tests: Additional tests for IQueryAssociations.
Signed-off-by: Theodore Dubois <tblodt@icloud.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
04a339e770
commit
9e05c66c03
|
@ -100,14 +100,79 @@ static struct assoc_getstring_test getstring_tests[] =
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void getstring_test(LPCWSTR assocName, HKEY progIdKey, ASSOCSTR str, LPCWSTR expected_string, int line_num)
|
||||||
|
{
|
||||||
|
IQueryAssociations *assoc;
|
||||||
|
HRESULT hr;
|
||||||
|
WCHAR *buffer;
|
||||||
|
DWORD len;
|
||||||
|
|
||||||
|
hr = CoCreateInstance(&CLSID_QueryAssociations, NULL, CLSCTX_INPROC_SERVER, &IID_IQueryAssociations, (void*)&assoc);
|
||||||
|
ok(hr == S_OK, "line %d: failed to create IQueryAssociations, 0x%x\n", line_num, hr);
|
||||||
|
hr = IQueryAssociations_Init(assoc, 0, assocName, progIdKey, NULL);
|
||||||
|
ok(hr == S_OK, "line %d: IQueryAssociations::Init failed, 0x%x\n", line_num, hr);
|
||||||
|
|
||||||
|
hr = IQueryAssociations_GetString(assoc, 0, str, NULL, NULL, &len);
|
||||||
|
if (hr != S_FALSE) {
|
||||||
|
if (expected_string) {
|
||||||
|
ok(SUCCEEDED(hr), "line %d: GetString returned 0x%x, expected success\n", line_num, hr);
|
||||||
|
} else {
|
||||||
|
ok(FAILED(hr), "line %d: GetString returned 0x%x, expected failure\n", line_num, hr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||||
|
ok(buffer != NULL, "line %d: out of memory\n", line_num);
|
||||||
|
hr = IQueryAssociations_GetString(assoc, 0, str, NULL, buffer, &len);
|
||||||
|
|
||||||
|
if (expected_string) {
|
||||||
|
ok(lstrcmpW(buffer, expected_string) == 0, "line %d: GetString returned %s, expected %s\n", line_num,
|
||||||
|
wine_dbgstr_w(buffer), wine_dbgstr_w(expected_string));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void test_IQueryAssociations_GetString(void)
|
static void test_IQueryAssociations_GetString(void)
|
||||||
{
|
{
|
||||||
|
static WCHAR test_extensionW[] = {'.','t','e','s','t',0};
|
||||||
|
static WCHAR test_progidW[] = {'t','e','s','t','f','i','l','e',0};
|
||||||
|
static WCHAR DefaultIconW[] = {'D','e','f','a','u','l','t','I','c','o','n',0};
|
||||||
|
/* folder.ico, why not */
|
||||||
|
static WCHAR test_iconW[] = {'s','h','e','l','l','3','2','.','d','l','l',',','1',0};
|
||||||
|
HKEY test_extension_key;
|
||||||
|
HKEY test_progid_key;
|
||||||
|
HKEY test_defaulticon_key;
|
||||||
|
LRESULT r;
|
||||||
|
|
||||||
struct assoc_getstring_test *ptr = getstring_tests;
|
struct assoc_getstring_test *ptr = getstring_tests;
|
||||||
IQueryAssociations *assoc;
|
IQueryAssociations *assoc;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
DWORD len;
|
DWORD len;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
r = RegCreateKeyExW(HKEY_CLASSES_ROOT, test_extensionW, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &test_extension_key, NULL);
|
||||||
|
ok(r == ERROR_SUCCESS, "RegCreateKeyExW(HKCR, \".test\") failed: 0x%lx\n", r);
|
||||||
|
r = RegSetValueExW(test_extension_key, NULL, 0, REG_SZ, (PBYTE)test_progidW, sizeof(test_progidW));
|
||||||
|
ok(r == ERROR_SUCCESS, "RegSetValueExW(HKCR\\.test, NULL, \"testfile\") failed: 0x%lx\n", r);
|
||||||
|
|
||||||
|
/* adding progid key with no information shuld fail to return information */
|
||||||
|
r = RegCreateKeyExW(HKEY_CLASSES_ROOT, test_progidW, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &test_progid_key, NULL);
|
||||||
|
ok(r == ERROR_SUCCESS, "RegCreateKeyExW(HKCR, \"testfile\") failed: 0x%lx\n", r);
|
||||||
|
getstring_test(test_extensionW, NULL, ASSOCSTR_DEFAULTICON, NULL, __LINE__);
|
||||||
|
getstring_test(test_progidW, NULL, ASSOCSTR_DEFAULTICON, NULL, __LINE__);
|
||||||
|
getstring_test(NULL, test_progid_key, ASSOCSTR_DEFAULTICON, NULL, __LINE__);
|
||||||
|
|
||||||
|
/* adding information to the progid should return that information */
|
||||||
|
r = RegCreateKeyExW(test_progid_key, DefaultIconW, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &test_defaulticon_key, NULL);
|
||||||
|
ok(r == ERROR_SUCCESS, "RegCreateKeyExW(HKCR\\testfile\\DefaultIcon) failed: 0x%lx\n", r);
|
||||||
|
r = RegSetValueExW(test_defaulticon_key, NULL, 0, REG_SZ, (PBYTE)test_iconW, sizeof(test_iconW));
|
||||||
|
ok(r == ERROR_SUCCESS, "RegSetValueExW(HKCR\\testfile\\DefaultIcon, NULL, \"folder.ico\") failed: 0x%lx\n", r);
|
||||||
|
getstring_test(test_extensionW, NULL, ASSOCSTR_DEFAULTICON, test_iconW, __LINE__);
|
||||||
|
getstring_test(test_progidW, NULL, ASSOCSTR_DEFAULTICON, test_iconW, __LINE__);
|
||||||
|
getstring_test(NULL, test_progid_key, ASSOCSTR_DEFAULTICON, test_iconW, __LINE__);
|
||||||
|
|
||||||
|
RegDeleteKeyW(HKEY_CLASSES_ROOT, test_extensionW);
|
||||||
|
RegDeleteKeyW(HKEY_CLASSES_ROOT, test_progidW);
|
||||||
|
|
||||||
hr = CoCreateInstance(&CLSID_QueryAssociations, NULL, CLSCTX_INPROC_SERVER, &IID_IQueryAssociations, (void*)&assoc);
|
hr = CoCreateInstance(&CLSID_QueryAssociations, NULL, CLSCTX_INPROC_SERVER, &IID_IQueryAssociations, (void*)&assoc);
|
||||||
ok(hr == S_OK, "failed to create object, 0x%x\n", hr);
|
ok(hr == S_OK, "failed to create object, 0x%x\n", hr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue