scrrun: Store compare method for dictionary.
This commit is contained in:
parent
a8b000c54d
commit
075fe10ba5
|
@ -34,8 +34,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(scrrun);
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
IDictionary IDictionary_iface;
|
IDictionary IDictionary_iface;
|
||||||
|
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
|
||||||
|
CompareMethod method;
|
||||||
} dictionary;
|
} dictionary;
|
||||||
|
|
||||||
static inline dictionary *impl_from_IDictionary(IDictionary *iface)
|
static inline dictionary *impl_from_IDictionary(IDictionary *iface)
|
||||||
|
@ -260,22 +261,24 @@ static HRESULT WINAPI dictionary_RemoveAll(IDictionary *iface)
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dictionary_put_CompareMode(IDictionary *iface, CompareMethod pcomp)
|
static HRESULT WINAPI dictionary_put_CompareMode(IDictionary *iface, CompareMethod method)
|
||||||
{
|
{
|
||||||
dictionary *This = impl_from_IDictionary(iface);
|
dictionary *This = impl_from_IDictionary(iface);
|
||||||
|
|
||||||
FIXME("(%p)->()\n", This);
|
TRACE("(%p)->(%d)\n", This, method);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
This->method = method;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dictionary_get_CompareMode(IDictionary *iface, CompareMethod *pcomp)
|
static HRESULT WINAPI dictionary_get_CompareMode(IDictionary *iface, CompareMethod *method)
|
||||||
{
|
{
|
||||||
dictionary *This = impl_from_IDictionary(iface);
|
dictionary *This = impl_from_IDictionary(iface);
|
||||||
|
|
||||||
FIXME("(%p)->(%p)\n", This, pcomp);
|
TRACE("(%p)->(%p)\n", This, method);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
*method = This->method;
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI dictionary__NewEnum(IDictionary *iface, IUnknown **ppunk)
|
static HRESULT WINAPI dictionary__NewEnum(IDictionary *iface, IUnknown **ppunk)
|
||||||
|
@ -336,6 +339,7 @@ HRESULT WINAPI Dictionary_CreateInstance(IClassFactory *factory,IUnknown *outer,
|
||||||
|
|
||||||
This->IDictionary_iface.lpVtbl = &dictionary_vtbl;
|
This->IDictionary_iface.lpVtbl = &dictionary_vtbl;
|
||||||
This->ref = 1;
|
This->ref = 1;
|
||||||
|
This->method = BinaryCompare;
|
||||||
|
|
||||||
*obj = &This->IDictionary_iface;
|
*obj = &This->IDictionary_iface;
|
||||||
|
|
||||||
|
|
|
@ -44,10 +44,7 @@ static void test_interfaces(void)
|
||||||
|
|
||||||
hr = CoCreateInstance(&CLSID_Dictionary, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
hr = CoCreateInstance(&CLSID_Dictionary, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||||
&IID_IDispatch, (void**)&disp);
|
&IID_IDispatch, (void**)&disp);
|
||||||
if(FAILED(hr)) {
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
win_skip("Could not create FileSystem object: %08x\n", hr);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
VariantInit(&key);
|
VariantInit(&key);
|
||||||
VariantInit(&value);
|
VariantInit(&value);
|
||||||
|
@ -91,12 +88,60 @@ static void test_interfaces(void)
|
||||||
IDispatch_Release(disp);
|
IDispatch_Release(disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_comparemode(void)
|
||||||
|
{
|
||||||
|
CompareMethod method;
|
||||||
|
IDictionary *dict;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
hr = CoCreateInstance(&CLSID_Dictionary, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||||
|
&IID_IDictionary, (void**)&dict);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
if (0) /* crashes on native */
|
||||||
|
hr = IDictionary_get_CompareMode(dict, NULL);
|
||||||
|
|
||||||
|
method = 10;
|
||||||
|
hr = IDictionary_get_CompareMode(dict, &method);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
ok(method == BinaryCompare, "got %d\n", method);
|
||||||
|
|
||||||
|
/* invalid mode value is not checked */
|
||||||
|
hr = IDictionary_put_CompareMode(dict, 10);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
hr = IDictionary_get_CompareMode(dict, &method);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
ok(method == 10, "got %d\n", method);
|
||||||
|
|
||||||
|
hr = IDictionary_put_CompareMode(dict, DatabaseCompare);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
hr = IDictionary_get_CompareMode(dict, &method);
|
||||||
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
|
ok(method == DatabaseCompare, "got %d\n", method);
|
||||||
|
|
||||||
|
IDictionary_Release(dict);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(dictionary)
|
START_TEST(dictionary)
|
||||||
{
|
{
|
||||||
|
IDispatch *disp;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
|
||||||
test_interfaces();
|
hr = CoCreateInstance(&CLSID_Dictionary, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||||
|
&IID_IDispatch, (void**)&disp);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
win_skip("Dictionary object is not supported: %08x\n", hr);
|
||||||
|
CoUninitialize();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
IDispatch_Release(disp);
|
||||||
|
|
||||||
|
test_interfaces();
|
||||||
|
test_comparemode();
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue