* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include <stdio.h>
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+//#include <stdio.h>
#include <assert.h>
#define COBJMACROS
-#include "initguid.h"
-#include "windows.h"
-#include "ole2.h"
-#include "msxml2.h"
-#include "msxml2did.h"
-#include "dispex.h"
+#include <wine/test.h>
+
+#include <initguid.h>
+//#include "windows.h"
+#include <winnls.h>
+#include <ole2.h>
+#include <msxml2.h>
+#undef CLSID_DOMDocument
+#include <msxml2did.h>
+#include <dispex.h>
-#include "wine/test.h"
+
+DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
#define EXPECT_HR(hr,hr_exp) \
ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)
while (ptr->query)
{
IXMLDOMNode* node = NULL;
- VARIANT type, testv;
+ VARIANT type;
/* check data types without the schema */
- memset(&testv, -1, sizeof(VARIANT));
- V_VT(&testv) = VT_NULL;
- V_BSTR(&testv) = NULL;
-
hr = IXMLDOMDocument2_selectSingleNode(doc, _bstr_(ptr->query), &node);
EXPECT_HR(hr, S_OK);
ok(node != NULL, "expected node\n");
- memset(&type, -1, sizeof(VARIANT));
V_VT(&type) = VT_EMPTY;
+ V_BSTR(&type) = (void*)-1;
hr = IXMLDOMNode_get_dataType(node, &type);
EXPECT_HR(hr, S_FALSE);
ok(V_VT(&type) == VT_NULL, "got type %i\n", V_VT(&type));
/* when returning VT_NULL, the pointer is set to NULL */
- ok(!memcmp(&testv, &type, sizeof(VARIANT)), "got %p\n", V_BSTR(&type));
+ ok(V_BSTR(&type) == NULL, "got %p\n", V_BSTR(&type));
VariantClear(&type);
hr = IXMLDOMNode_get_nodeTypedValue(node, &type);
static void test_obj_dispex(IUnknown *obj)
{
+ static const WCHAR testW[] = {'t','e','s','t','p','r','o','p',0};
static const WCHAR starW[] = {'*',0};
DISPID dispid = DISPID_SAX_XMLREADER_GETFEATURE;
IDispatchEx *dispex;
hr = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault, DISPID_XMLDOM_SCHEMACOLLECTION_ADD, &dispid);
EXPECT_HR(hr, E_NOTIMPL);
+ unk = (IUnknown*)0xdeadbeef;
hr = IDispatchEx_GetNameSpaceParent(dispex, &unk);
EXPECT_HR(hr, E_NOTIMPL);
- if (hr == S_OK && unk) IUnknown_Release(unk);
+ ok(unk == (IUnknown*)0xdeadbeef, "got %p\n", unk);
+
+ name = SysAllocString(testW);
+ hr = IDispatchEx_GetDispID(dispex, name, fdexNameEnsure, &dispid);
+ ok(hr == DISP_E_UNKNOWNNAME, "got 0x%08x\n", hr);
+ SysFreeString(name);
IDispatchEx_Release(dispex);
}
static void test_dispex(void)
{
IXMLDOMSchemaCollection *cache;
+ IDispatchEx *dispex;
IUnknown *unk;
HRESULT hr;
+ DISPPARAMS dispparams;
+ VARIANT arg, ret;
cache = create_cache(&IID_IXMLDOMSchemaCollection);
if (!cache) return;
test_obj_dispex(unk);
IUnknown_Release(unk);
+ hr = IXMLDOMSchemaCollection_QueryInterface(cache, &IID_IDispatchEx, (void**)&dispex);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ V_VT(&arg) = VT_I4;
+ V_I4(&arg) = 0;
+ dispparams.cArgs = 1;
+ dispparams.cNamedArgs = 0;
+ dispparams.rgdispidNamedArgs = NULL;
+ dispparams.rgvarg = &arg;
+
+ V_VT(&ret) = VT_EMPTY;
+ V_DISPATCH(&ret) = (void*)0x1;
+ hr = IDispatchEx_Invoke(dispex, DISPID_VALUE, &IID_NULL, 0, DISPATCH_METHOD, &dispparams, &ret, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "got 0x%08x\n", hr);
+ ok(V_VT(&ret) == VT_EMPTY, "got %d\n", V_VT(&ret));
+ ok(V_DISPATCH(&ret) == (void*)0x1, "got %p\n", V_DISPATCH(&ret));
+
+ IDispatchEx_Release(dispex);
IXMLDOMSchemaCollection_Release(cache);
+
+ cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection);
+ if (cache)
+ {
+ test_obj_dispex((IUnknown*)cache);
+ IXMLDOMSchemaCollection_Release(cache);
+ }
}
static void test_get(void)
if (!cache) return;
hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL);
- EXPECT_HR(hr, E_NOTIMPL);
+ ok(hr == E_NOTIMPL || hr == E_POINTER /* win8 */, "got %08x\n", hr);
hr = IXMLDOMSchemaCollection2_get(cache, _bstr_("uri"), &node);
EXPECT_HR(hr, E_NOTIMPL);