[PATCH v2 2/3] hlink/tests: Add tests for navigating from a string reference.
Zebediah Figura
zfigura at codeweavers.com
Fri Sep 15 00:34:11 CDT 2017
v2: use test.winehq.org instead of www.winehq.org
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
dlls/hlink/tests/hlink.c | 77 ++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 65 insertions(+), 12 deletions(-)
diff --git a/dlls/hlink/tests/hlink.c b/dlls/hlink/tests/hlink.c
index 50f61d57f7..d080be9596 100644
--- a/dlls/hlink/tests/hlink.c
+++ b/dlls/hlink/tests/hlink.c
@@ -67,6 +67,9 @@ DEFINE_EXPECT(GetClassID);
DEFINE_EXPECT(Save);
DEFINE_EXPECT(HBC_QueryInterface_IHlinkHistory);
+DEFINE_EXPECT(HBC_QueryInterface_IMarshal);
+DEFINE_EXPECT(HBC_QueryInterface_IdentityUnmarshal);
+DEFINE_EXPECT(HBC_QueryInterface_IUnknown);
DEFINE_EXPECT(HBC_GetObject);
DEFINE_EXPECT(HBC_UpdateHlink);
@@ -77,8 +80,16 @@ DEFINE_EXPECT(HT_GetFriendlyName);
DEFINE_EXPECT(HLF_UpdateHlink);
+DEFINE_GUID(CLSID_IdentityUnmarshal,0x0000001b,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(IID_IHlinkHistory,0x79eac9c8,0xbaf9,0x11ce,0x8c,0x82,0x00,0xaa,0x00,0x4b,0xa9,0x0b);
+static const WCHAR winehq_urlW[] =
+ {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',
+ '/','t','e','s','t','s','/','h','e','l','l','o','.','h','t','m','l',0};
+static const WCHAR winehq_404W[] =
+ {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',
+ '/','t','e','s','t','s','/','f','a','k','e','u','r','l',0};
+
static void test_HlinkIsShortcut(void)
{
UINT i;
@@ -627,9 +638,6 @@ static void test_HlinkParseDisplayName(void)
IBindCtx *bctx;
HRESULT hres;
- static const WCHAR winehq_urlW[] =
- {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g',
- '/','s','i','t','e','/','a','b','o','u','t',0};
static const WCHAR invalid_urlW[] = {'t','e','s','t',':','1','2','3','a','b','c',0};
static const WCHAR clsid_nameW[] = {'c','l','s','i','d',':',
'2','0','D','0','4','F','E','0','-','3','A','E','A','-','1','0','6','9','-','A','2','D','8',
@@ -829,12 +837,17 @@ static HRESULT WINAPI HlinkBrowseContext_QueryInterface(
{
*ppv = NULL;
- if(IsEqualGUID(&IID_IHlinkHistory, riid)) {
+ if (IsEqualGUID(&IID_IHlinkHistory, riid))
CHECK_EXPECT(HBC_QueryInterface_IHlinkHistory);
- return E_NOINTERFACE;
- }
+ else if (IsEqualGUID(&IID_IMarshal, riid))
+ CHECK_EXPECT2(HBC_QueryInterface_IMarshal);
+ else if (IsEqualGUID(&CLSID_IdentityUnmarshal, riid))
+ CHECK_EXPECT(HBC_QueryInterface_IdentityUnmarshal);
+ else if (IsEqualGUID(&IID_IUnknown, riid))
+ CHECK_EXPECT(HBC_QueryInterface_IUnknown);
+ else
+ ok(0, "unexpected interface: %s\n", wine_dbgstr_guid(riid));
- ok(0, "unexpected interface: %s\n", wine_dbgstr_guid(riid));
return E_NOINTERFACE;
}
@@ -859,9 +872,17 @@ static IMoniker Moniker;
static HRESULT WINAPI HlinkBrowseContext_GetObject(IHlinkBrowseContext *iface,
IMoniker *pimk, BOOL fBindIfRootRegistered, IUnknown **ppiunk)
{
+ IBindCtx *bctx;
+ WCHAR *name;
+
CHECK_EXPECT(HBC_GetObject);
- ok(pimk == &Moniker, "pimk != &Moniker\n");
+ CreateBindCtx(0, &bctx);
+ IMoniker_GetDisplayName(pimk, bctx, NULL, &name);
+ ok(!lstrcmpW(winehq_urlW, name) || !lstrcmpW(winehq_404W, name), "got unexpected url\n");
+ CoTaskMemFree(name);
+ IBindCtx_Release(bctx);
+
ok(fBindIfRootRegistered == 1, "fBindIfRootRegistered = %x\n", fBindIfRootRegistered);
*ppiunk = NULL;
return S_FALSE;
@@ -1205,10 +1226,6 @@ static HRESULT WINAPI Moniker_RelativePathTo(IMoniker *iface, IMoniker *pmkOther
static HRESULT WINAPI Moniker_GetDisplayName(IMoniker *iface, IBindCtx *pbc,
IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
{
- static const WCHAR winehq_urlW[] =
- {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g',
- '/','s','i','t','e','/','a','b','o','u','t',0};
-
CHECK_EXPECT2(GetDisplayName);
ok(pbc != NULL, "pbc == NULL\n");
@@ -2206,6 +2223,42 @@ static void test_Hlink_Navigate(void)
CHECK_CALLED(HT_Navigate);
todo_wine CHECK_CALLED(HT_GetFriendlyName);
+ /* Test from string */
+ SET_EXPECT(HBC_GetObject);
+ hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, pbc, NULL, &HlinkBrowseContext);
+ todo_wine ok(hres == INET_E_OBJECT_NOT_FOUND, "Expected INET_E_OBJECT_NOT_FOUND, got %08x\n", hres);
+ todo_wine CHECK_CALLED(HBC_GetObject);
+
+ /* MSDN claims browse context and bind context can't be null, but they can */
+ SET_EXPECT(HBC_GetObject);
+ hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, NULL, NULL, &HlinkBrowseContext);
+ todo_wine ok(hres == INET_E_OBJECT_NOT_FOUND, "Expected INET_E_OBJECT_NOT_FOUND, got %08x\n", hres);
+ todo_wine CHECK_CALLED(HBC_GetObject);
+
+ /* these opens a browser window, so mark them interactive only */
+ if (winetest_interactive)
+ {
+ /* both parameters null */
+ hres = HlinkNavigateToStringReference(winehq_404W, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL);
+ todo_wine ok(hres == DRAGDROP_S_DROP, "Expected DRAGDROP_S_DROP, got %08x\n", hres);
+
+ /* try basic test with valid URL */
+ SET_EXPECT(HBC_GetObject);
+ SET_EXPECT(HBC_QueryInterface_IHlinkHistory);
+ SET_EXPECT(HBC_QueryInterface_IMarshal);
+ SET_EXPECT(HBC_QueryInterface_IdentityUnmarshal);
+ SET_EXPECT(HBC_QueryInterface_IUnknown);
+ hres = HlinkNavigateToStringReference(winehq_urlW, NULL, NULL, 0, NULL, 0, pbc, NULL, &HlinkBrowseContext);
+ todo_wine ok(hres == S_OK, "Expected S_OK, got %08x\n", hres);
+ todo_wine CHECK_CALLED(HBC_GetObject);
+ todo_wine CHECK_CALLED(HBC_QueryInterface_IHlinkHistory);
+ todo_wine CHECK_CALLED(HBC_QueryInterface_IMarshal);
+ todo_wine CHECK_CALLED(HBC_QueryInterface_IdentityUnmarshal);
+ todo_wine CHECK_CALLED(HBC_QueryInterface_IUnknown);
+ }
+ else
+ skip("interactive IHlink_Navigate tests\n");
+
IHlink_Release(hlink);
IBindCtx_Release(pbc);
_bctx = NULL;
--
2.14.1
More information about the wine-patches
mailing list