Nikolay Sivov : msxml3/tests: Tests for IXMLDOMText::splitText(), stub is extended a bit.
Alexandre Julliard
julliard at winehq.org
Mon Aug 30 13:00:41 CDT 2010
Module: wine
Branch: master
Commit: a0e7b3b93acf851b8de56a1d00c115ef8cd6f2c7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0e7b3b93acf851b8de56a1d00c115ef8cd6f2c7
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Aug 30 01:32:37 2010 +0400
msxml3/tests: Tests for IXMLDOMText::splitText(), stub is extended a bit.
---
dlls/msxml3/tests/domdoc.c | 42 +++++++++++++++++++++++++++++++++++++++++-
dlls/msxml3/text.c | 17 +++++++++++++++--
2 files changed, 56 insertions(+), 3 deletions(-)
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 70faa87..5dd0ec6 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -5614,7 +5614,7 @@ static void test_splitText(void)
IXMLDOMCDATASection *cdata;
IXMLDOMElement *root;
IXMLDOMDocument *doc;
- IXMLDOMText *text;
+ IXMLDOMText *text, *text2;
IXMLDOMNode *node;
VARIANT var;
VARIANT_BOOL success;
@@ -5684,6 +5684,46 @@ static void test_splitText(void)
ok(hr == S_OK, "got 0x%08x\n", hr);
IXMLDOMNode_Release(node);
+ /* split new text node */
+ hr = IXMLDOMText_get_length(text, &length);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ node = (void*)0xdeadbeef;
+ hr = IXMLDOMText_get_nextSibling(text, &node);
+ ok(hr == S_FALSE, "got 0x%08x\n", hr);
+ ok(node == 0, "got %p\n", text);
+
+ hr = IXMLDOMText_splitText(text, 0, NULL);
+ ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
+
+ text2 = (void*)0xdeadbeef;
+ /* negative offset */
+ hr = IXMLDOMText_splitText(text, -1, &text2);
+ ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
+ ok(text2 == (void*)0xdeadbeef, "got %p\n", text2);
+
+ text2 = (void*)0xdeadbeef;
+ /* offset outside data */
+ hr = IXMLDOMText_splitText(text, length + 1, &text2);
+ ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
+ ok(text2 == 0, "got %p\n", text2);
+
+ text2 = (void*)0xdeadbeef;
+ /* offset outside data */
+ hr = IXMLDOMText_splitText(text, length, &text2);
+ ok(hr == S_FALSE, "got 0x%08x\n", hr);
+ ok(text2 == 0, "got %p\n", text);
+
+ text2 = 0;
+ hr = IXMLDOMText_splitText(text, 4, &text2);
+ todo_wine ok(hr == S_OK, "got 0x%08x\n", hr);
+ if (text2) IXMLDOMText_Release(text2);
+
+ node = 0;
+ hr = IXMLDOMText_get_nextSibling(text, &node);
+ todo_wine ok(hr == S_OK, "got 0x%08x\n", hr);
+ if (node) IXMLDOMNode_Release(node);
+
IXMLDOMText_Release(text);
IXMLDOMElement_Release(root);
IXMLDOMCDATASection_Release(cdata);
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index a8afd87..a087076 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -726,11 +726,24 @@ static HRESULT WINAPI domtext_splitText(
LONG offset, IXMLDOMText **txtNode)
{
domtext *This = impl_from_IXMLDOMText( iface );
- FIXME("(%p)->(%d %p)\n", This, offset, txtNode);
+ LONG length = 0;
+
+ TRACE("(%p)->(%d %p)\n", This, offset, txtNode);
+
+ if (!txtNode || offset < 0) return E_INVALIDARG;
+
+ *txtNode = NULL;
+
+ IXMLDOMText_get_length(iface, &length);
+
+ if (offset > length) return E_INVALIDARG;
+ if (offset == length) return S_FALSE;
+
+ FIXME("adjacent text nodes are not supported\n");
+
return E_NOTIMPL;
}
-
static const struct IXMLDOMTextVtbl domtext_vtbl =
{
domtext_QueryInterface,
More information about the wine-cvs
mailing list