Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
756ae9e3
Commit
756ae9e3
authored
Mar 03, 2011
by
Nikolay Sivov
Committed by
Alexandre Julliard
Mar 04, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msxml3: Test insertBefore() behaviour with node relinking, simplify common test cases.
parent
9463a867
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
133 additions
and
103 deletions
+133
-103
domdoc.c
dlls/msxml3/tests/domdoc.c
+133
-103
No files found.
dlls/msxml3/tests/domdoc.c
View file @
756ae9e3
...
...
@@ -148,6 +148,37 @@ static IDispatch* create_dispevent(void)
return
(
IDispatch
*
)
&
event
->
lpVtbl
;
}
#define EXPECT_CHILDREN(node) _expect_children((IXMLDOMNode*)node, __LINE__)
static
void
_expect_children
(
IXMLDOMNode
*
node
,
int
line
)
{
VARIANT_BOOL
b
;
HRESULT
hr
;
b
=
VARIANT_FALSE
;
hr
=
IXMLDOMNode_hasChildNodes
(
node
,
&
b
);
ok_
(
__FILE__
,
line
)(
hr
==
S_OK
,
"hasChildNodes() failed, 0x%08x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
b
==
VARIANT_TRUE
,
"no children, %d
\n
"
,
b
);
}
#define EXPECT_NO_CHILDREN(node) _expect_no_children((IXMLDOMNode*)node, __LINE__)
static
void
_expect_no_children
(
IXMLDOMNode
*
node
,
int
line
)
{
VARIANT_BOOL
b
;
HRESULT
hr
;
b
=
VARIANT_TRUE
;
hr
=
IXMLDOMNode_hasChildNodes
(
node
,
&
b
);
ok_
(
__FILE__
,
line
)(
hr
==
S_FALSE
,
"hasChildNodes() failed, 0x%08x
\n
"
,
hr
);
ok_
(
__FILE__
,
line
)(
b
==
VARIANT_FALSE
,
"no children, %d
\n
"
,
b
);
}
#define EXPECT_REF(node,ref) _expect_ref((IUnknown*)node, ref, __LINE__)
static
void
_expect_ref
(
IUnknown
*
obj
,
ULONG
ref
,
int
line
)
{
ULONG
rc
=
IUnknown_AddRef
(
obj
);
IUnknown_Release
(
obj
);
ok_
(
__FILE__
,
line
)(
rc
-
1
==
ref
,
"expected refcount %d, got %d
\n
"
,
ref
,
rc
-
1
);
}
static
const
WCHAR
szEmpty
[]
=
{
0
};
static
const
WCHAR
szIncomplete
[]
=
{
...
...
@@ -1619,10 +1650,7 @@ static void test_domnode( void )
ok
(
b
==
VARIANT_TRUE
,
"failed to load XML string
\n
"
);
SysFreeString
(
str
);
b
=
1
;
r
=
IXMLDOMNode_hasChildNodes
(
doc
,
&
b
);
ok
(
r
==
S_OK
,
"hasChildNoes bad return
\n
"
);
ok
(
b
==
VARIANT_TRUE
,
"hasChildNoes wrong result
\n
"
);
EXPECT_CHILDREN
(
doc
);
r
=
IXMLDOMDocument_get_documentElement
(
doc
,
&
element
);
ok
(
r
==
S_OK
,
"should be a document element
\n
"
);
...
...
@@ -1733,10 +1761,7 @@ static void test_domnode( void )
ok
(
r
==
S_OK
,
"get_attributes returned wrong code
\n
"
);
ok
(
map
!=
NULL
,
"should be attributes
\n
"
);
b
=
1
;
r
=
IXMLDOMNode_hasChildNodes
(
element
,
&
b
);
ok
(
r
==
S_OK
,
"hasChildNoes bad return
\n
"
);
ok
(
b
==
VARIANT_TRUE
,
"hasChildNoes wrong result
\n
"
);
EXPECT_CHILDREN
(
element
);
}
else
ok
(
FALSE
,
"no element
\n
"
);
...
...
@@ -1869,10 +1894,7 @@ todo_wine
if
(
next
)
{
b
=
1
;
r
=
IXMLDOMNode_hasChildNodes
(
next
,
&
b
);
ok
(
r
==
S_FALSE
,
"hasChildNoes bad return
\n
"
);
ok
(
b
==
VARIANT_FALSE
,
"hasChildNoes wrong result
\n
"
);
EXPECT_NO_CHILDREN
(
next
);
type
=
NODE_INVALID
;
r
=
IXMLDOMNode_get_nodeType
(
next
,
&
type
);
...
...
@@ -1978,10 +2000,7 @@ todo_wine
r
=
IXMLDOMNode_hasChildNodes
(
node
,
NULL
);
ok
(
r
==
E_INVALIDARG
,
"hasChildNoes bad return
\n
"
);
b
=
1
;
r
=
IXMLDOMNode_hasChildNodes
(
node
,
&
b
);
ok
(
r
==
S_OK
,
"hasChildNoes bad return
\n
"
);
ok
(
b
==
VARIANT_TRUE
,
"hasChildNoes wrong result
\n
"
);
EXPECT_CHILDREN
(
node
);
str
=
NULL
;
r
=
IXMLDOMNode_get_baseName
(
node
,
&
str
);
...
...
@@ -2006,10 +2025,7 @@ todo_wine
ok
(
b
==
VARIANT_TRUE
,
"failed to load XML string
\n
"
);
SysFreeString
(
str
);
b
=
1
;
r
=
IXMLDOMNode_hasChildNodes
(
doc
,
&
b
);
ok
(
r
==
S_OK
,
"hasChildNoes bad return
\n
"
);
ok
(
b
==
VARIANT_TRUE
,
"hasChildNoes wrong result
\n
"
);
EXPECT_CHILDREN
(
doc
);
r
=
IXMLDOMDocument_get_documentElement
(
doc
,
&
element
);
ok
(
r
==
S_OK
,
"should be a document element
\n
"
);
...
...
@@ -2060,10 +2076,11 @@ static void test_refs(void)
ok
(
b
==
VARIANT_TRUE
,
"failed to load XML string
\n
"
);
SysFreeString
(
str
);
ref
=
IXMLDOMDocument_AddRef
(
doc
);
ok
(
ref
==
2
,
"ref %d
\n
"
,
ref
);
ref
=
IXMLDOMDocument_AddRef
(
doc
);
ok
(
ref
==
3
,
"ref %d
\n
"
,
ref
);
IXMLDOMDocument_AddRef
(
doc
);
EXPECT_REF
(
doc
,
2
);
IXMLDOMDocument_AddRef
(
doc
);
EXPECT_REF
(
doc
,
3
);
IXMLDOMDocument_Release
(
doc
);
IXMLDOMDocument_Release
(
doc
);
...
...
@@ -2071,16 +2088,12 @@ static void test_refs(void)
ok
(
r
==
S_OK
,
"should be a document element
\n
"
);
ok
(
element
!=
NULL
,
"should be an element
\n
"
);
ref
=
IXMLDOMDocument_AddRef
(
doc
);
ok
(
ref
==
2
,
"ref %d
\n
"
,
ref
);
IXMLDOMDocument_Release
(
doc
);
EXPECT_REF
(
doc
,
1
);
r
=
IXMLDOMElement_get_childNodes
(
element
,
&
node_list
);
ok
(
r
==
S_OK
,
"rets %08x
\n
"
,
r
);
ref
=
IXMLDOMNodeList_AddRef
(
node_list
);
ok
(
ref
==
2
,
"ref %d
\n
"
,
ref
);
IXMLDOMNodeList_Release
(
node_list
);
EXPECT_REF
(
node_list
,
1
);
IXMLDOMNodeList_get_item
(
node_list
,
0
,
&
node
);
ok
(
r
==
S_OK
,
"rets %08x
\n
"
,
r
);
...
...
@@ -2088,9 +2101,7 @@ static void test_refs(void)
IXMLDOMNodeList_get_item
(
node_list
,
0
,
&
node2
);
ok
(
r
==
S_OK
,
"rets %08x
\n
"
,
r
);
ref
=
IXMLDOMNode_AddRef
(
node
);
ok
(
ref
==
2
,
"ref %d
\n
"
,
ref
);
IXMLDOMNode_Release
(
node
);
EXPECT_REF
(
node
,
1
);
ref
=
IXMLDOMNode_Release
(
node
);
ok
(
ref
==
0
,
"ref %d
\n
"
,
ref
);
...
...
@@ -2105,11 +2116,7 @@ static void test_refs(void)
ref
=
IXMLDOMDocument_Release
(
doc
);
ok
(
ref
==
0
,
"ref %d
\n
"
,
ref
);
ref
=
IXMLDOMElement_AddRef
(
element
);
todo_wine
{
ok
(
ref
==
3
,
"ref %d
\n
"
,
ref
);
}
IXMLDOMElement_Release
(
element
);
todo_wine
EXPECT_REF
(
element
,
2
);
/* IUnknown must be unique however we obtain it */
r
=
IXMLDOMElement_QueryInterface
(
element
,
&
IID_IUnknown
,
(
void
**
)
&
unk
);
...
...
@@ -2449,9 +2456,7 @@ static void test_create(void)
ok
(
r
==
S_OK
,
"returns %08x
\n
"
,
r
);
ok
(
node
==
root
,
"%p %p
\n
"
,
node
,
root
);
ref
=
IXMLDOMNode_AddRef
(
node
);
ok
(
ref
==
3
,
"ref %d
\n
"
,
ref
);
IXMLDOMNode_Release
(
node
);
EXPECT_REF
(
node
,
2
);
ref
=
IXMLDOMNode_Release
(
node
);
ok
(
ref
==
1
,
"ref %d
\n
"
,
ref
);
...
...
@@ -2464,16 +2469,12 @@ static void test_create(void)
ok
(
r
==
S_OK
,
"returns %08x
\n
"
,
r
);
SysFreeString
(
str
);
ref
=
IXMLDOMNode_AddRef
(
node
);
ok
(
ref
==
2
,
"ref = %d
\n
"
,
ref
);
IXMLDOMNode_Release
(
node
);
EXPECT_REF
(
node
,
1
);
r
=
IXMLDOMNode_QueryInterface
(
node
,
&
IID_IUnknown
,
(
void
**
)
&
unk
);
ok
(
r
==
S_OK
,
"returns %08x
\n
"
,
r
);
ref
=
IXMLDOMNode_AddRef
(
unk
);
ok
(
ref
==
3
,
"ref = %d
\n
"
,
ref
);
IXMLDOMNode_Release
(
unk
);
EXPECT_REF
(
unk
,
2
);
V_VT
(
&
var
)
=
VT_EMPTY
;
child
=
NULL
;
...
...
@@ -2481,9 +2482,7 @@ static void test_create(void)
ok
(
r
==
S_OK
,
"returns %08x
\n
"
,
r
);
ok
(
unk
==
(
IUnknown
*
)
child
,
"%p %p
\n
"
,
unk
,
child
);
ref
=
IXMLDOMNode_AddRef
(
unk
);
todo_wine
ok
(
ref
==
5
,
"ref = %d
\n
"
,
ref
);
IXMLDOMNode_Release
(
unk
);
todo_wine
EXPECT_REF
(
unk
,
4
);
IXMLDOMNode_Release
(
child
);
IUnknown_Release
(
unk
);
...
...
@@ -3348,7 +3347,7 @@ static void test_XMLHTTP(void)
VARIANT
dummy
;
VARIANT
async
;
VARIANT
varbody
;
LONG
state
,
status
,
ref
,
bound
;
LONG
state
,
status
,
bound
;
void
*
ptr
;
IDispatch
*
event
;
HRESULT
hr
=
CoCreateInstance
(
&
CLSID_XMLHTTPRequest
,
NULL
,
...
...
@@ -3426,16 +3425,11 @@ static void test_XMLHTTP(void)
ok
(
state
==
READYSTATE_UNINITIALIZED
,
"got %d, expected READYSTATE_UNINITIALIZED
\n
"
,
state
);
event
=
create_dispevent
();
ref
=
IDispatch_AddRef
(
event
);
ok
(
ref
==
2
,
"got %d
\n
"
,
ref
);
IDispatch_Release
(
event
);
EXPECT_REF
(
event
,
1
);
hr
=
IXMLHttpRequest_put_onreadystatechange
(
pXMLHttpRequest
,
event
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IDispatch_AddRef
(
event
);
ok
(
ref
==
3
,
"got %d
\n
"
,
ref
);
IDispatch_Release
(
event
);
EXPECT_REF
(
event
,
2
);
g_unexpectedcall
=
g_expectedcall
=
0
;
...
...
@@ -3589,7 +3583,7 @@ static void test_IXMLDOMDocument2(void)
VARIANT_BOOL
b
;
VARIANT
var
;
HRESULT
r
;
LONG
re
f
,
re
s
;
LONG
res
;
BSTR
str
;
doc
=
create_document
(
&
IID_IXMLDOMDocument
);
...
...
@@ -3652,8 +3646,9 @@ static void test_IXMLDOMDocument2(void)
}
/* we will check if the variant got cleared */
ref
=
IXMLDOMDocument2_AddRef
(
doc2
);
expect_eq
(
ref
,
3
,
int
,
"%d"
);
/* doc, doc2, AddRef*/
IXMLDOMDocument2_AddRef
(
doc2
);
EXPECT_REF
(
doc2
,
3
);
/* doc, doc2, AddRef*/
V_VT
(
&
var
)
=
VT_UNKNOWN
;
V_UNKNOWN
(
&
var
)
=
(
IUnknown
*
)
doc2
;
...
...
@@ -7258,15 +7253,9 @@ static void test_setAttributeNode(void)
IXMLDOMElement_Release
(
elem
);
ok
(
ref2
==
ref1
,
"got %d, expected %d
\n
"
,
ref2
,
ref1
);
b
=
VARIANT_FALSE
;
hr
=
IXMLDOMElement_hasChildNodes
(
elem
,
&
b
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
b
==
VARIANT_TRUE
,
"got %d
\n
"
,
b
);
EXPECT_CHILDREN
(
elem
);
EXPECT_CHILDREN
(
elem2
);
b
=
VARIANT_FALSE
;
hr
=
IXMLDOMElement_hasChildNodes
(
elem2
,
&
b
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
b
==
VARIANT_TRUE
,
"got %d
\n
"
,
b
);
IXMLDOMElement_Release
(
elem2
);
attr2
=
NULL
;
...
...
@@ -7403,10 +7392,23 @@ static void test_createNode(void)
VARIANT
v
,
var
;
BSTR
prefix
,
str
;
HRESULT
hr
;
ULONG
ref
;
doc
=
create_document
(
&
IID_IXMLDOMDocument
);
if
(
!
doc
)
return
;
/* reference count tests */
hr
=
IXMLDOMDocument_createElement
(
doc
,
_bstr_
(
"elem"
),
&
elem
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* initial reference is 2 */
todo_wine
{
EXPECT_REF
(
elem
,
2
);
ref
=
IXMLDOMElement_Release
(
elem
);
ok
(
ref
==
1
,
"got %d
\n
"
,
ref
);
/* it's released already, attempt to release now will crash it */
}
/* NODE_ELEMENT nodes */
/* 1. specified namespace */
V_VT
(
&
v
)
=
VT_I4
;
...
...
@@ -7629,7 +7631,6 @@ static void test_events(void)
HRESULT
hr
;
VARIANT
v
;
IDispatch
*
event
;
ULONG
ref
;
doc
=
create_document
(
&
IID_IXMLDOMDocument
);
if
(
!
doc
)
return
;
...
...
@@ -7660,35 +7661,27 @@ static void test_events(void)
hr
=
IXMLDOMDocument_put_onreadystatechange
(
doc
,
v
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IDispatch_AddRef
(
event
);
IDispatch_Release
(
event
);
ok
(
ref
==
3
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
event
,
2
);
V_VT
(
&
v
)
=
VT_DISPATCH
;
V_DISPATCH
(
&
v
)
=
event
;
hr
=
IXMLDOMDocument_put_onreadystatechange
(
doc
,
v
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IDispatch_AddRef
(
event
);
IDispatch_Release
(
event
);
ok
(
ref
==
3
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
event
,
2
);
/* VT_NULL doesn't reset event handler */
V_VT
(
&
v
)
=
VT_NULL
;
hr
=
IXMLDOMDocument_put_onreadystatechange
(
doc
,
v
);
ok
(
hr
==
DISP_E_TYPEMISMATCH
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IDispatch_AddRef
(
event
);
IDispatch_Release
(
event
);
ok
(
ref
==
3
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
event
,
2
);
V_VT
(
&
v
)
=
VT_DISPATCH
;
V_DISPATCH
(
&
v
)
=
NULL
;
hr
=
IXMLDOMDocument_put_onreadystatechange
(
doc
,
v
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IDispatch_AddRef
(
event
);
IDispatch_Release
(
event
);
ok
(
ref
==
2
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
event
,
1
);
V_VT
(
&
v
)
=
VT_UNKNOWN
;
V_DISPATCH
(
&
v
)
=
NULL
;
...
...
@@ -7819,7 +7812,7 @@ static void test_xsltemplate(void)
IStream
*
stream
;
VARIANT_BOOL
b
;
HRESULT
hr
;
ULONG
ref1
,
ref2
,
ref
;
ULONG
ref1
,
ref2
;
VARIANT
v
;
template
=
create_xsltemplate
(
&
IID_IXSLTemplate
);
...
...
@@ -7877,16 +7870,10 @@ static void test_xsltemplate(void)
hr
=
IXSLTemplate_createProcessor
(
template
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IXSLTemplate_AddRef
(
template
);
IXSLTemplate_Release
(
template
);
ok
(
ref
==
2
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
template
,
1
);
hr
=
IXSLTemplate_createProcessor
(
template
,
&
processor
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IXSLTemplate_AddRef
(
template
);
IXSLTemplate_Release
(
template
);
ok
(
ref
==
3
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
template
,
2
);
/* input no set yet */
V_VT
(
&
v
)
=
VT_BSTR
;
...
...
@@ -7906,9 +7893,7 @@ todo_wine {
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
stream
);
ref
=
IStream_AddRef
(
stream
);
IStream_Release
(
stream
);
ok
(
ref
==
2
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
stream
,
1
);
V_VT
(
&
v
)
=
VT_UNKNOWN
;
V_UNKNOWN
(
&
v
)
=
(
IUnknown
*
)
stream
;
...
...
@@ -7916,9 +7901,7 @@ todo_wine {
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* it seems processor grabs 2 references */
ref
=
IStream_AddRef
(
stream
);
IStream_Release
(
stream
);
todo_wine
ok
(
ref
==
4
,
"got %d
\n
"
,
ref
);
todo_wine
EXPECT_REF
(
stream
,
3
);
V_VT
(
&
v
)
=
VT_EMPTY
;
hr
=
IXSLProcessor_get_output
(
processor
,
&
v
);
...
...
@@ -7926,9 +7909,7 @@ todo_wine {
ok
(
V_VT
(
&
v
)
==
VT_UNKNOWN
,
"got type %d
\n
"
,
V_VT
(
&
v
));
ok
(
V_UNKNOWN
(
&
v
)
==
(
IUnknown
*
)
stream
,
"got %p
\n
"
,
V_UNKNOWN
(
&
v
));
ref
=
IStream_AddRef
(
stream
);
IStream_Release
(
stream
);
todo_wine
ok
(
ref
==
5
,
"got %d
\n
"
,
ref
);
todo_wine
EXPECT_REF
(
stream
,
4
);
VariantClear
(
&
v
);
hr
=
IXSLProcessor_transform
(
processor
,
NULL
);
...
...
@@ -7939,9 +7920,7 @@ todo_wine {
hr
=
IXSLProcessor_put_output
(
processor
,
v
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ref
=
IStream_AddRef
(
stream
);
IStream_Release
(
stream
);
ok
(
ref
==
2
,
"got %d
\n
"
,
ref
);
EXPECT_REF
(
stream
,
1
);
IStream_Release
(
stream
);
...
...
@@ -7987,6 +7966,7 @@ static void test_insertBefore(void)
{
IXMLDOMDocument
*
doc
;
IXMLDOMAttribute
*
attr
;
IXMLDOMElement
*
elem1
,
*
elem2
,
*
elem3
;
IXMLDOMNode
*
node
,
*
newnode
;
HRESULT
hr
;
VARIANT
v
;
...
...
@@ -8084,6 +8064,56 @@ static void test_insertBefore(void)
ok
(
node
==
NULL
,
"got %p
\n
"
,
node
);
IXMLDOMNode_Release
(
newnode
);
/* insertBefore for elements */
hr
=
IXMLDOMDocument_createElement
(
doc
,
_bstr_
(
"elem"
),
&
elem1
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IXMLDOMDocument_createElement
(
doc
,
_bstr_
(
"elem2"
),
&
elem2
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IXMLDOMDocument_createElement
(
doc
,
_bstr_
(
"elem3"
),
&
elem3
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
EXPECT_NO_CHILDREN
(
elem1
);
EXPECT_NO_CHILDREN
(
elem2
);
EXPECT_NO_CHILDREN
(
elem3
);
todo_wine
EXPECT_REF
(
elem2
,
2
);
V_VT
(
&
v
)
=
VT_NULL
;
node
=
NULL
;
hr
=
IXMLDOMElement_insertBefore
(
elem1
,
(
IXMLDOMNode
*
)
elem2
,
v
,
&
node
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
node
==
(
void
*
)
elem2
,
"got %p
\n
"
,
node
);
EXPECT_CHILDREN
(
elem1
);
todo_wine
EXPECT_REF
(
elem2
,
3
);
/* again for already linked node */
V_VT
(
&
v
)
=
VT_NULL
;
node
=
NULL
;
hr
=
IXMLDOMElement_insertBefore
(
elem1
,
(
IXMLDOMNode
*
)
elem2
,
v
,
&
node
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
node
==
(
void
*
)
elem2
,
"got %p
\n
"
,
node
);
EXPECT_CHILDREN
(
elem1
);
/* increments each time */
todo_wine
EXPECT_REF
(
elem2
,
4
);
/* try to add to another element */
V_VT
(
&
v
)
=
VT_NULL
;
node
=
(
void
*
)
0xdeadbeef
;
hr
=
IXMLDOMElement_insertBefore
(
elem3
,
(
IXMLDOMNode
*
)
elem2
,
v
,
&
node
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
node
==
(
void
*
)
elem2
,
"got %p
\n
"
,
node
);
EXPECT_CHILDREN
(
elem3
);
todo_wine
EXPECT_NO_CHILDREN
(
elem1
);
IXMLDOMElement_Release
(
elem1
);
IXMLDOMElement_Release
(
elem2
);
IXMLDOMElement_Release
(
elem3
);
IXMLDOMDocument_Release
(
doc
);
free_bstrs
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment