[PATCH 5/8] Tests for IXMLDOMText::splitText(), stub is extended a bit
Nikolay Sivov
nsivov at codeweavers.com
Sun Aug 29 16:32:37 CDT 2010
---
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,
--
1.5.6.5
--------------020308070806020400030903--
More information about the wine-patches
mailing list