Nikolay Sivov : msxml3: IXMLDOMSchemaCollection::get() is a stub for version 6.
Alexandre Julliard
julliard at winehq.org
Fri Jan 20 13:09:28 CST 2012
Module: wine
Branch: master
Commit: ca046f9eb5ca9f0ca4cb05044fcd866dff10c4a7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca046f9eb5ca9f0ca4cb05044fcd866dff10c4a7
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Jan 20 04:00:23 2012 +0300
msxml3: IXMLDOMSchemaCollection::get() is a stub for version 6.
---
dlls/msxml3/domdoc.c | 7 +++-
dlls/msxml3/schema.c | 7 +++-
dlls/msxml3/tests/domdoc.c | 81 ++++++++++++++++++++++++++++++++++++++++++++
dlls/msxml3/tests/schema.c | 36 +++++++++++++++++++
4 files changed, 127 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 47ce60d..8943507 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -2508,10 +2508,13 @@ static HRESULT WINAPI domdoc_put_onTransformNode(
static HRESULT WINAPI domdoc_get_namespaces(
IXMLDOMDocument3* iface,
- IXMLDOMSchemaCollection** schemaCollection )
+ IXMLDOMSchemaCollection** collection )
{
domdoc *This = impl_from_IXMLDOMDocument3( iface );
- FIXME("(%p)->(%p)\n", This, schemaCollection);
+ FIXME("(%p)->(%p): stub\n", This, collection);
+
+ if (!collection) return E_POINTER;
+
return E_NOTIMPL;
}
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 7473dbb..2312f6d 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -1139,10 +1139,13 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri
IXMLDOMNode** node)
{
schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
- xmlChar* name;
cache_entry* entry;
+ xmlChar* name;
+
TRACE("(%p)->(%s %p)\n", This, wine_dbgstr_w(uri), node);
+ if (This->version == MSXML6) return E_NOTIMPL;
+
if (!node)
return E_POINTER;
@@ -1438,7 +1441,7 @@ HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* outer, void** obj)
#else
-HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* pUnkOuter, void** ppObj)
+HRESULT SchemaCache_create(MSXML_VERSION version, IUnknown* outer, void** obj)
{
MESSAGE("This program tried to use a SchemaCache object, but\n"
"libxml2 support was not present at compile time.\n");
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 21809f8..cc01a25 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -11140,6 +11140,86 @@ static void test_nodeValue(void)
IXMLDOMDocument_Release(doc);
}
+static char namespacesA[] =
+"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+" <ns1:elem1 xmlns:ns1=\"http://blah.org\">"
+" <ns1:elem2/>"
+" <ns1:elem3/>"
+" <ns1:elem4/>"
+" <elem5 xmlns=\"http://blahblah.org\"/>"
+" <ns1:elem6>true</ns1:elem6>"
+" </ns1:elem1>";
+
+static void test_get_namespaces(void)
+{
+ IXMLDOMSchemaCollection *collection, *collection2;
+ IXMLDOMDocument2 *doc;
+ IXMLDOMNode *node;
+ VARIANT_BOOL b;
+ HRESULT hr;
+ LONG len;
+
+ doc = create_document(&IID_IXMLDOMDocument2);
+ if (!doc) return;
+
+ /* null pointer */
+ hr = IXMLDOMDocument2_get_namespaces(doc, NULL);
+ EXPECT_HR(hr, E_POINTER);
+
+ /* no document loaded */
+ collection = (void*)0xdeadbeef;
+ hr = IXMLDOMDocument2_get_namespaces(doc, &collection);
+todo_wine
+ EXPECT_HR(hr, S_OK);
+ if (hr != S_OK)
+ {
+ IXMLDOMDocument_Release(doc);
+ return;
+ }
+ EXPECT_REF(collection, 2);
+
+ collection2 = (void*)0xdeadbeef;
+ hr = IXMLDOMDocument2_get_namespaces(doc, &collection2);
+ EXPECT_HR(hr, S_OK);
+ ok(collection == collection2, "got %p\n", collection2);
+ EXPECT_REF(collection, 3);
+ IXMLDOMSchemaCollection_Release(collection);
+
+ len = -1;
+ hr = IXMLDOMSchemaCollection_get_length(collection, &len);
+ EXPECT_HR(hr, S_OK);
+ ok(len == 0, "got %d\n", len);
+ IXMLDOMSchemaCollection_Release(collection);
+
+ /* now with document */
+ hr = IXMLDOMDocument2_loadXML(doc, _bstr_(namespacesA), &b);
+ EXPECT_HR(hr, S_OK);
+
+ hr = IXMLDOMDocument2_get_namespaces(doc, &collection);
+ EXPECT_HR(hr, S_OK);
+
+ len = -1;
+ hr = IXMLDOMSchemaCollection_get_length(collection, &len);
+ EXPECT_HR(hr, S_OK);
+ ok(len == 2, "got %d\n", len);
+
+ /* try to lookup some uris */
+ node = (void*)0xdeadbeef;
+ hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah.org"), &node);
+ EXPECT_HR(hr, S_OK);
+ ok(node == NULL, "got %p\n", node);
+
+ node = (void*)0xdeadbeef;
+ hr = IXMLDOMSchemaCollection_get(collection, _bstr_("http://blah1.org"), &node);
+ EXPECT_HR(hr, S_OK);
+ ok(node == NULL, "got %p\n", node);
+
+ IXMLDOMSchemaCollection_Release(collection);
+
+ IXMLDOMDocument2_Release(doc);
+ free_bstrs();
+}
+
START_TEST(domdoc)
{
IXMLDOMDocument *doc;
@@ -11216,6 +11296,7 @@ START_TEST(domdoc)
test_getAttributeNode();
test_supporterrorinfo();
test_nodeValue();
+ test_get_namespaces();
test_xsltemplate();
diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c
index 59ceac5..e819264 100644
--- a/dlls/msxml3/tests/schema.c
+++ b/dlls/msxml3/tests/schema.c
@@ -2061,6 +2061,41 @@ static void test_dispex(void)
IXMLDOMSchemaCollection_Release(cache);
}
+static void test_get(void)
+{
+ static const WCHAR uriW[] = {'u','r','i',0};
+ IXMLDOMSchemaCollection2 *cache;
+ IXMLDOMNode *node;
+ HRESULT hr;
+ BSTR s;
+
+ cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2);
+ if (!cache) return;
+
+ hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL);
+ EXPECT_HR(hr, E_NOTIMPL);
+
+ s = SysAllocString(uriW);
+ hr = IXMLDOMSchemaCollection2_get(cache, s, &node);
+ EXPECT_HR(hr, E_NOTIMPL);
+ SysFreeString(s);
+
+ IXMLDOMSchemaCollection2_Release(cache);
+
+ cache = create_cache_version(40, &IID_IXMLDOMSchemaCollection2);
+ if (!cache) return;
+
+ hr = IXMLDOMSchemaCollection2_get(cache, NULL, NULL);
+ EXPECT_HR(hr, E_POINTER);
+
+ s = SysAllocString(uriW);
+ hr = IXMLDOMSchemaCollection2_get(cache, s, &node);
+ EXPECT_HR(hr, S_OK);
+ SysFreeString(s);
+
+ IXMLDOMSchemaCollection2_Release(cache);
+}
+
START_TEST(schema)
{
HRESULT r;
@@ -2076,6 +2111,7 @@ START_TEST(schema)
test_XDR_datatypes();
test_validate_on_load();
test_dispex();
+ test_get();
CoUninitialize();
}
More information about the wine-cvs
mailing list