Commit 5cf1fa35 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

urlmon/tests: Add IsEqual test for custom IUri implementation.

parent b857369f
......@@ -8515,7 +8515,225 @@ static void test_IUri_HasProperty(void) {
}
}
struct custom_uri {
IUri IUri_iface;
IUri *uri;
};
static inline struct custom_uri* impl_from_IUri(IUri *iface)
{
return CONTAINING_RECORD(iface, struct custom_uri, IUri_iface);
}
static HRESULT WINAPI custom_uri_QueryInterface(IUri *iface, REFIID iid, void **out)
{
if (IsEqualIID(iid, &IID_IUri) || IsEqualIID(iid, &IID_IUnknown))
{
*out = iface;
IUri_AddRef(iface);
return S_OK;
}
*out = NULL;
return E_NOINTERFACE;
}
static ULONG WINAPI custom_uri_AddRef(IUri *iface)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_AddRef(uri->uri);
}
static ULONG WINAPI custom_uri_Release(IUri *iface)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_Release(uri->uri);
}
static HRESULT WINAPI custom_uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY property, BSTR *value, DWORD flags)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetPropertyBSTR(uri->uri, property, value, flags);
}
static HRESULT WINAPI custom_uri_GetPropertyLength(IUri *iface, Uri_PROPERTY property, DWORD *length, DWORD flags)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetPropertyLength(uri->uri, property, length, flags);
}
static HRESULT WINAPI custom_uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY property, DWORD *value, DWORD flags)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetPropertyDWORD(uri->uri, property, value, flags);
}
static HRESULT WINAPI custom_uri_HasProperty(IUri *iface, Uri_PROPERTY property, BOOL *has_property)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_HasProperty(uri->uri, property, has_property);
}
static HRESULT WINAPI custom_uri_GetAbsoluteUri(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetAuthority(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetDisplayUri(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetDomain(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetExtension(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetFragment(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetHost(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetPassword(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetPath(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetPathAndQuery(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetQuery(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetRawUri(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetAbsoluteUri(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetSchemeName(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetSchemeName(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetUserInfo(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetUserInfo(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetUserName(IUri *iface, BSTR *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetUserName(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetHostType(IUri *iface, DWORD *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetHostType(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetPort(IUri *iface, DWORD *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetPort(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetScheme(IUri *iface, DWORD *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetScheme(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetZone(IUri *iface, DWORD *value)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetZone(uri->uri, value);
}
static HRESULT WINAPI custom_uri_GetProperties(IUri *iface, DWORD *flags)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_GetProperties(uri->uri, flags);
}
static HRESULT WINAPI custom_uri_IsEqual(IUri *iface, IUri *pUri, BOOL *is_equal)
{
struct custom_uri *uri = impl_from_IUri(iface);
return IUri_IsEqual(uri->uri, pUri, is_equal);
}
static const IUriVtbl custom_uri_vtbl =
{
custom_uri_QueryInterface,
custom_uri_AddRef,
custom_uri_Release,
custom_uri_GetPropertyBSTR,
custom_uri_GetPropertyLength,
custom_uri_GetPropertyDWORD,
custom_uri_HasProperty,
custom_uri_GetAbsoluteUri,
custom_uri_GetAuthority,
custom_uri_GetDisplayUri,
custom_uri_GetDomain,
custom_uri_GetExtension,
custom_uri_GetFragment,
custom_uri_GetHost,
custom_uri_GetPassword,
custom_uri_GetPath,
custom_uri_GetPathAndQuery,
custom_uri_GetQuery,
custom_uri_GetRawUri,
custom_uri_GetSchemeName,
custom_uri_GetUserInfo,
custom_uri_GetUserName,
custom_uri_GetHostType,
custom_uri_GetPort,
custom_uri_GetScheme,
custom_uri_GetZone,
custom_uri_GetProperties,
custom_uri_IsEqual,
};
static void test_IUri_IsEqual(void) {
struct custom_uri custom_uri;
IUri *uriA, *uriB;
BOOL equal;
HRESULT hres;
......@@ -8537,9 +8755,21 @@ static void test_IUri_IsEqual(void) {
hres = IUri_IsEqual(uriA, uriB, NULL);
ok(hres == E_POINTER, "Error: IsEqual returned 0x%08x, expected 0x%08x.\n", hres, E_POINTER);
equal = FALSE;
hres = IUri_IsEqual(uriA, uriA, &equal);
ok(hres == S_OK, "Error: IsEqual returned 0x%08x, expected 0x%08x.\n", hres, S_OK);
ok(equal, "Error: Expected equal URIs.\n");
equal = FALSE;
hres = IUri_IsEqual(uriA, uriB, &equal);
ok(hres == S_OK, "Error: IsEqual returned 0x%08x, expected 0x%08x.\n", hres, S_OK);
ok(equal, "Error: Expected equal URIs.\n");
IUri_Release(uriA);
IUri_Release(uriB);
custom_uri.IUri_iface.lpVtbl = &custom_uri_vtbl;
for(i = 0; i < ARRAY_SIZE(equality_tests); ++i) {
uri_equality test = equality_tests[i];
LPWSTR uriA_W, uriB_W;
......@@ -8561,6 +8791,16 @@ static void test_IUri_IsEqual(void) {
ok(hres == S_OK, "Error: IsEqual returned 0x%08x, expected 0x%08x on equality_tests[%d].\n", hres, S_OK, i);
ok(equal == test.equal, "Error: Expected the comparison to be %d on equality_tests[%d].\n", test.equal, i);
}
custom_uri.uri = uriB;
equal = -1;
hres = IUri_IsEqual(uriA, &custom_uri.IUri_iface, &equal);
todo_wine {
ok(hres == S_OK, "Error: IsEqual returned 0x%08x, expected 0x%08x on equality_tests[%d].\n", hres, S_OK, i);
ok(equal == test.equal, "Error: Expected the comparison to be %d on equality_tests[%d].\n", test.equal, i);
}
if(uriA) IUri_Release(uriA);
if(uriB) IUri_Release(uriB);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment