25 #define ok_hex2(file, line, key, expression, result) \ 27 int _value = (expression); \ 28 ok_(file, line)(_value == (result), "Wrong value for '%s', expected: " #result " (0x%x), got: 0x%x for %c\n", \ 29 #expression, (int)(result), _value, (char)key); \ 32 #define ok_wstri(x, y) \ 33 ok(lstrcmpiW(x, y) == 0, "Wrong string. Expected '%S', got '%S'\n", y, x) 43 DEFINE_GUID(IID_IACLCustomMRU, 0xf729fc5e, 0x8769, 0x4f3e, 0xbd, 0xb2, 0xd7, 0xb5, 0x0f, 0xd2, 0x27, 0x5b);
47 #define INTERFACE IACLCustomMRU 70 #define verify_mru(mru, ...) verify_mru_(__FILE__, __LINE__, mru, __VA_ARGS__, NULL) 134 hr = CustomMRU->AddMRUString(
L"FIRST_ENTRY");
138 hr = CustomMRU->AddMRUString(
L"SECOND_ENTRY");
140 verify_mru(CustomMRU,
L"ba",
L"FIRST_ENTRY",
L"SECOND_ENTRY");
142 hr = CustomMRU->AddMRUString(
L"THIRD_ENTRY");
144 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
147 hr = CustomMRU->AddMRUString(
L"FOURTH_ENTRY");
149 verify_mru(CustomMRU,
L"acb",
L"FOURTH_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
152 hr = CustomMRU->AddMRUString(
L"FIFTH_ENTRY");
154 verify_mru(CustomMRU,
L"bac",
L"FOURTH_ENTRY",
L"FIFTH_ENTRY",
L"THIRD_ENTRY");
163 hr = CustomMRU->AddMRUString(
L"FIRST_ENTRY");
165 hr = CustomMRU->AddMRUString(
L"SECOND_ENTRY");
167 hr = CustomMRU->AddMRUString(
L"THIRD_ENTRY");
182 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
185 hr = CustomMRU->AddMRUString(
L"FIRST_ENTRY");
188 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
202 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
206 hr = CustomMRU->AddMRUString(
L"FIRST_ENTRY");
209 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
211 hr = CustomMRU->AddMRUString(
L"SOMETHING_ELSE");
214 verify_mru(CustomMRU,
L"bac",
L"FIRST_ENTRY",
L"SOMETHING_ELSE",
L"THIRD_ENTRY");
232 for (
int n = 0;
n < 30; ++
n)
237 hr = CustomMRU->AddMRUString(tmp);
241 verify_mru(CustomMRU,
L"a}|{zyxwvutsrqponmlkjihgfedcb",
L"29",
242 L"1",
L"2",
L"3",
L"4",
L"5",
L"6",
L"7",
L"8",
L"9",
243 L"10",
L"11",
L"12",
L"13",
L"14",
L"15",
L"16",
L"17",
L"18",
L"19",
244 L"20",
L"21",
L"22",
L"23",
L"24",
L"25",
L"26",
L"27",
L"28");
260 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
273 hr = CustomMRU->AddMRUString(
L"FOURTH_ENTRY");
275 verify_mru(CustomMRU,
L"acb",
L"FOURTH_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
288 hr = CustomMRU->AddMRUString(
L"FIFTH_ENTRY");
290 verify_mru(CustomMRU,
L"bac",
L"FOURTH_ENTRY",
L"FIFTH_ENTRY",
L"THIRD_ENTRY");
303 key.SetStringValue(
L"MRUList",
L"b**");
312 verify_mru(CustomMRU,
L"b**",
L"FOURTH_ENTRY",
L"FIFTH_ENTRY",
L"THIRD_ENTRY");
323 hr = CustomMRU->AddMRUString(
L"SIXTH_ENTRY");
336 verify_mru(CustomMRU,
L"cba",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
346 key.SetStringValue(
L"MRUList",
L"baccccc");
353 verify_mru(CustomMRU,
L"baccccc",
L"FIRST_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
363 hr = CustomMRU->AddMRUString(
L"FOURTH_ENTRY");
365 verify_mru(CustomMRU,
L"a",
L"FOURTH_ENTRY",
L"SECOND_ENTRY",
L"THIRD_ENTRY");
380 hr = CustomMRU->AddMRUString(
L"FIRST_ENTRY");
387 key.SetStringValue(
L"MRUList",
L"aaa");
400 hr = CustomMRU->AddMRUString(
L"SECOND_ENTRY");
402 verify_mru(CustomMRU,
L"ba",
L"FIRST_ENTRY",
L"SECOND_ENTRY");
405 #define TYPED_URLS_KEY L"Software\\Microsoft\\Internet Explorer\\TypedURLs" 415 key.DeleteValue(
L"url1");
419 key.DeleteValue(
L"url2");
442 key.SetStringValue(
L"url1",
L"aaa");
443 key.SetStringValue(
L"url2",
L"bbb");
452 skip(
"IACLCustomMRU was NULL\n");
458 hr = CustomMRU->QueryInterface(
IID_PPV_ARG(IACList, &ACList));
462 hr = ACList->Expand(
L"C:");
464 hr = ACList->Expand(
L"C:\\");
466 hr = ACList->Expand(
L"C:\\Program Files");
468 hr = ACList->Expand(
L"C:\\Program Files\\");
470 hr = ACList->Expand(
L"http://");
472 hr = ACList->Expand(
L"https://");
474 hr = ACList->Expand(
L"https://google.co.jp/");
483 hr = ACList->Expand(
L"C:");
485 hr = ACList->Expand(
L"C:\\");
487 hr = ACList->Expand(
L"C:\\Program Files");
489 hr = ACList->Expand(
L"C:\\Program Files\\");
491 hr = ACList->Expand(
L"http://");
493 hr = ACList->Expand(
L"https://");
495 hr = ACList->Expand(
L"https://google.co.jp/");
504 skip(
"IEnumString was NULL\n");
510 hr = pEnum->Clone(&pEnumClone);
516 #define INVALID_LPOLESTR ((LPOLESTR)(LONG_PTR)0xDEADBEEF) 519 hr = pEnum->Next(2, apsz, &
c);
528 hr = pEnum->Next(0, &psz, &
c);
535 hr = pEnum->Next(1, &psz, &
c);
541 hr = CustomMRU->AddMRUString(
L"https://google.co.jp");
543 hr = CustomMRU->AddMRUString(
L"C:");
545 hr = CustomMRU->AddMRUString(
L"C:\\");
VOID WINAPI CoTaskMemFree(LPVOID ptr)
static void RestoreTypedURLs(const CStringW &url1, const CStringW &url2)
#define HKEY_CURRENT_USER
static HRESULT QueryInterface(REFIID, void **)
ULONG DbgPrint(PCH Format,...)
static void test_IACLCustomMRU_Continue()
DECLARE_INTERFACE_IID_(IACLCustomMRU, IUnknown, "F729FC5E-8769-4F3E-BDB2-D7B50FD2275B")
void __cdecl Format(UINT nFormatID,...)
#define IID_PPV_ARG(Itype, ppType)
static void verify_mru_(const char *file, int line, IACLCustomMRU *mru, PCWSTR MRUString,...)
#define ok_hex(expression, result)
static const WCHAR url2[]
LONG DeleteSubKey(LPCTSTR lpszSubKey)
static void test_IACLCustomMRU_TypedURLs()
#define ok_int(expression, result)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFKEY * Key
static const WCHAR url1[]
DEFINE_GUID(IID_IACLCustomMRU, 0xf729fc5e, 0x8769, 0x4f3e, 0xbd, 0xb2, 0xd7, 0xb5, 0x0f, 0xd2, 0x27, 0x5b)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
static void test_IACLCustomMRU_Basics()
static const WCHAR szTestPath[]
LONG Open(HKEY hKeyParent, LPCTSTR lpszKeyName, REGSAM samDesired=KEY_READ|KEY_WRITE)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
static void Cleanup_Testdata()
static void FillDefault(IACLCustomMRU *CustomMRU)
static void test_IACLCustomMRU_UpdateOrder()
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
BOOL Initialize(HINSTANCE hInstance)
#define verify_mru(mru,...)
#define ok_hex2(file, line, key, expression, result)
static ULONG WINAPI AddRef(IStream *iface)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
static void test_IACLCustomMRU_ExtraChars()
base of all file and directory entries
START_TEST(IACLCustomMRU)