Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
70af1f77
Commit
70af1f77
authored
Apr 05, 2022
by
Nikolay Sivov
Committed by
Alexandre Julliard
Apr 05, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xmllite/tests: Use wide string literals for the writer tests.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
9140c673
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
266 additions
and
408 deletions
+266
-408
writer.c
dlls/xmllite/tests/writer.c
+266
-408
No files found.
dlls/xmllite/tests/writer.c
View file @
70af1f77
...
...
@@ -32,8 +32,6 @@
#include "initguid.h"
DEFINE_GUID
(
IID_IXmlWriterOutput
,
0xc1131708
,
0x0f59
,
0x477f
,
0x93
,
0x59
,
0x7d
,
0x33
,
0x24
,
0x51
,
0xbc
,
0x1a
);
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
#define EXPECT_REF(obj, ref) _expect_ref((IUnknown *)obj, ref, __LINE__)
static
void
_expect_ref
(
IUnknown
*
obj
,
ULONG
ref
,
int
line
)
{
...
...
@@ -92,19 +90,6 @@ static void check_output(IStream *stream, const char *expected, BOOL todo, int l
#define CHECK_OUTPUT_TODO(stream, expected) check_output(stream, expected, TRUE, __LINE__)
#define CHECK_OUTPUT_RAW(stream, expected, size) check_output_raw(stream, expected, size, __LINE__)
static
WCHAR
*
strdupAtoW
(
const
char
*
str
)
{
WCHAR
*
ret
=
NULL
;
DWORD
len
;
if
(
!
str
)
return
ret
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
ret
=
malloc
(
len
*
sizeof
(
WCHAR
));
if
(
ret
)
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
return
ret
;
}
static
void
writer_set_property
(
IXmlWriter
*
writer
,
XmlWriterProperty
property
)
{
HRESULT
hr
;
...
...
@@ -116,30 +101,29 @@ static void writer_set_property(IXmlWriter *writer, XmlWriterProperty property)
/* used to test all Write* methods for consistent error state */
static
void
check_writer_state
(
IXmlWriter
*
writer
,
HRESULT
exp_hr
)
{
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
HRESULT
hr
;
/* FIXME: add WriteAttributes */
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
aW
,
NULL
,
aW
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"a"
,
NULL
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
aW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteCharEntity
(
writer
,
aW
[
0
]
);
hr
=
IXmlWriter_WriteCharEntity
(
writer
,
'a'
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteChars
(
writer
,
aW
,
1
);
hr
=
IXmlWriter_WriteChars
(
writer
,
L"a"
,
1
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
aW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
aW
,
NULL
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
L"a"
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
aW
,
NULL
,
aW
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"a"
,
NULL
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -148,40 +132,40 @@ static void check_writer_state(IXmlWriter *writer, HRESULT exp_hr)
hr
=
IXmlWriter_WriteEndElement
(
writer
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteEntityRef
(
writer
,
aW
);
hr
=
IXmlWriter_WriteEntityRef
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteFullEndElement
(
writer
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteName
(
writer
,
aW
);
hr
=
IXmlWriter_WriteName
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
aW
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx, expected %#lx.
\n
"
,
hr
,
exp_hr
);
/* FIXME: add WriteNode */
/* FIXME: add WriteNodeShallow */
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
aW
,
aW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"a"
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteQualifiedName
(
writer
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteQualifiedName
(
writer
,
L"a"
,
NULL
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteRaw
(
writer
,
aW
);
hr
=
IXmlWriter_WriteRaw
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteRawChars
(
writer
,
aW
,
1
);
hr
=
IXmlWriter_WriteRawChars
(
writer
,
L"a"
,
1
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
hr
=
IXmlWriter_WriteString
(
writer
,
aW
);
hr
=
IXmlWriter_WriteString
(
writer
,
L"a"
);
ok
(
hr
==
exp_hr
,
"Unexpected hr %#lx., expected %#lx.
\n
"
,
hr
,
exp_hr
);
/* FIXME: add WriteSurrogateCharEntity */
...
...
@@ -340,25 +324,25 @@ static void test_invalid_output_encoding(IXmlWriter *writer, IUnknown *output)
/* TODO: WriteAttributes */
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
aW
,
NULL
,
aW
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"a"
,
NULL
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
aW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCharEntity
(
writer
,
0x100
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteChars
(
writer
,
aW
,
1
);
hr
=
IXmlWriter_WriteChars
(
writer
,
L"a"
,
1
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
aW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
aW
,
NULL
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
L"a"
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
aW
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"a"
,
NULL
,
NULL
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -367,40 +351,40 @@ static void test_invalid_output_encoding(IXmlWriter *writer, IUnknown *output)
hr
=
IXmlWriter_WriteEndElement
(
writer
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEntityRef
(
writer
,
aW
);
hr
=
IXmlWriter_WriteEntityRef
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteFullEndElement
(
writer
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteName
(
writer
,
aW
);
hr
=
IXmlWriter_WriteName
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
aW
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* TODO: WriteNode */
/* TODO: WriteNodeShallow */
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
aW
,
aW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"a"
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteQualifiedName
(
writer
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteQualifiedName
(
writer
,
L"a"
,
NULL
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteRaw
(
writer
,
aW
);
hr
=
IXmlWriter_WriteRaw
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteRawChars
(
writer
,
aW
,
1
);
hr
=
IXmlWriter_WriteRawChars
(
writer
,
L"a"
,
1
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Yes
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteString
(
writer
,
aW
);
hr
=
IXmlWriter_WriteString
(
writer
,
L"a"
);
ok
(
hr
==
MX_E_ENCODING
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* TODO: WriteSurrogateCharEntity */
...
...
@@ -412,9 +396,6 @@ static void test_invalid_output_encoding(IXmlWriter *writer, IUnknown *output)
static
void
test_writeroutput
(
void
)
{
static
const
WCHAR
utf16W
[]
=
{
'u'
,
't'
,
'f'
,
'-'
,
'1'
,
'6'
,
0
};
static
const
WCHAR
usasciiW
[]
=
{
'u'
,
's'
,
'-'
,
'a'
,
's'
,
'c'
,
'i'
,
'i'
,
0
};
static
const
WCHAR
dummyW
[]
=
{
'd'
,
'u'
,
'm'
,
'm'
,
'y'
,
0
};
static
const
WCHAR
utf16_outputW
[]
=
{
0xfeff
,
'<'
,
'a'
};
IXmlWriterOutput
*
output
;
IXmlWriter
*
writer
;
...
...
@@ -428,7 +409,7 @@ static void test_writeroutput(void)
EXPECT_REF
(
output
,
1
);
IUnknown_Release
(
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
(
&
testoutput
,
NULL
,
utf16W
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
(
&
testoutput
,
NULL
,
L"utf-16"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
unk
=
NULL
;
hr
=
IUnknown_QueryInterface
(
output
,
&
IID_IXmlWriterOutput
,
(
void
**
)
&
unk
);
...
...
@@ -458,7 +439,7 @@ static void test_writeroutput(void)
/* create with us-ascii */
output
=
NULL
;
hr
=
CreateXmlWriterOutputWithEncodingName
(
&
testoutput
,
NULL
,
usasciiW
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
(
&
testoutput
,
NULL
,
L"us-ascii"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
IUnknown_Release
(
output
);
...
...
@@ -475,7 +456,7 @@ static void test_writeroutput(void)
hr
=
IXmlWriter_SetOutput
(
writer
,
output
);
ok
(
hr
==
S_OK
,
"Failed to set writer output, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Write failed, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -505,7 +486,7 @@ static void test_writeroutput(void)
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
output
=
NULL
;
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
dummyW
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"dummy"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
test_invalid_output_encoding
(
writer
,
output
);
...
...
@@ -522,9 +503,6 @@ static void test_writestartdocument(void)
static
const
char
fullprolog
[]
=
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
standalone=
\"
yes
\"
?>"
;
static
const
char
*
prologversion2
=
"<?xml version=
\"
1.0
\"
encoding=
\"
uS-asCii
\"
?>"
;
static
const
char
prologversion
[]
=
"<?xml version=
\"
1.0
\"
?>"
;
static
const
WCHAR
versionW
[]
=
{
'v'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'='
,
'"'
,
'1'
,
'.'
,
'0'
,
'"'
,
0
};
static
const
WCHAR
usasciiW
[]
=
{
'u'
,
'S'
,
'-'
,
'a'
,
's'
,
'C'
,
'i'
,
'i'
,
0
};
static
const
WCHAR
xmlW
[]
=
{
'x'
,
'm'
,
'l'
,
0
};
IXmlWriterOutput
*
output
;
IXmlWriter
*
writer
;
IStream
*
stream
;
...
...
@@ -537,7 +515,7 @@ static void test_writestartdocument(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Yes
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -565,7 +543,7 @@ static void test_writestartdocument(void)
/* now add PI manually, and try to start a document */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Yes
);
...
...
@@ -575,7 +553,7 @@ static void test_writestartdocument(void)
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* another attempt to add 'xml' PI */
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -591,7 +569,7 @@ static void test_writestartdocument(void)
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
output
=
NULL
;
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
usasciiW
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"uS-asCii"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriter
(
&
IID_IXmlWriter
,
(
void
**
)
&
writer
,
NULL
);
...
...
@@ -646,8 +624,6 @@ static void test_flush(void)
static
void
test_omitxmldeclaration
(
void
)
{
static
const
char
prologversion
[]
=
"<?xml version=
\"
1.0
\"
?>"
;
static
const
WCHAR
versionW
[]
=
{
'v'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'='
,
'"'
,
'1'
,
'.'
,
'0'
,
'"'
,
0
};
static
const
WCHAR
xmlW
[]
=
{
'x'
,
'm'
,
'l'
,
0
};
IXmlWriter
*
writer
;
HGLOBAL
hglobal
;
IStream
*
stream
;
...
...
@@ -683,7 +659,7 @@ static void test_omitxmldeclaration(void)
/* now add PI manually, and try to start a document */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -708,7 +684,7 @@ static void test_omitxmldeclaration(void)
CHECK_OUTPUT
(
stream
,
prologversion
);
/* another attempt to add 'xml' PI */
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -723,9 +699,6 @@ static void test_bom(void)
static
const
WCHAR
piW
[]
=
{
0xfeff
,
'<'
,
'?'
,
'x'
,
'm'
,
'l'
,
' '
,
'v'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'='
,
'"'
,
'1'
,
'.'
,
'0'
,
'"'
,
'?'
,
'>'
};
static
const
WCHAR
aopenW
[]
=
{
0xfeff
,
'<'
,
'a'
};
static
const
WCHAR
afullW
[]
=
{
0xfeff
,
'<'
,
'a'
,
' '
,
'/'
,
'>'
};
static
const
WCHAR
versionW
[]
=
{
'v'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'='
,
'"'
,
'1'
,
'.'
,
'0'
,
'"'
,
0
};
static
const
WCHAR
utf16W
[]
=
{
'u'
,
't'
,
'f'
,
'-'
,
'1'
,
'6'
,
0
};
static
const
WCHAR
xmlW
[]
=
{
'x'
,
'm'
,
'l'
,
0
};
static
const
WCHAR
bomW
[]
=
{
0xfeff
};
IXmlWriterOutput
*
output
;
IXmlWriter
*
writer
;
...
...
@@ -736,7 +709,7 @@ static void test_bom(void)
hr
=
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
stream
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
utf16W
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"utf-16"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriter
(
&
IID_IXmlWriter
,
(
void
**
)
&
writer
,
NULL
);
...
...
@@ -763,13 +736,13 @@ static void test_bom(void)
hr
=
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
stream
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
utf16W
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"utf-16"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_SetOutput
(
writer
,
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
xmlW
,
versionW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"xml"
,
L"version=
\"
1.0
\"
"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -784,13 +757,13 @@ static void test_bom(void)
hr
=
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
stream
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
utf16W
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"utf-16"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_SetOutput
(
writer
,
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -805,7 +778,7 @@ static void test_bom(void)
hr
=
CreateStreamOnHGlobal
(
NULL
,
TRUE
,
&
stream
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
utf16W
,
&
output
);
hr
=
CreateXmlWriterOutputWithEncodingName
((
IUnknown
*
)
stream
,
NULL
,
L"utf-16"
,
&
output
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_SetOutput
(
writer
,
output
);
...
...
@@ -813,7 +786,7 @@ static void test_bom(void)
writer_set_property
(
writer
,
XmlWriterProperty_Indent
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
aW
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"a"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -830,67 +803,13 @@ static void test_bom(void)
IXmlWriter_Release
(
writer
);
}
static
HRESULT
write_start_element
(
IXmlWriter
*
writer
,
const
char
*
prefix
,
const
char
*
local
,
const
char
*
uri
)
{
WCHAR
*
prefixW
,
*
localW
,
*
uriW
;
HRESULT
hr
;
prefixW
=
strdupAtoW
(
prefix
);
localW
=
strdupAtoW
(
local
);
uriW
=
strdupAtoW
(
uri
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
prefixW
,
localW
,
uriW
);
free
(
prefixW
);
free
(
localW
);
free
(
uriW
);
return
hr
;
}
static
HRESULT
write_element_string
(
IXmlWriter
*
writer
,
const
char
*
prefix
,
const
char
*
local
,
const
char
*
uri
,
const
char
*
value
)
{
WCHAR
*
prefixW
,
*
localW
,
*
uriW
,
*
valueW
;
HRESULT
hr
;
prefixW
=
strdupAtoW
(
prefix
);
localW
=
strdupAtoW
(
local
);
uriW
=
strdupAtoW
(
uri
);
valueW
=
strdupAtoW
(
value
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
prefixW
,
localW
,
uriW
,
valueW
);
free
(
prefixW
);
free
(
localW
);
free
(
uriW
);
free
(
valueW
);
return
hr
;
}
static
HRESULT
write_string
(
IXmlWriter
*
writer
,
const
char
*
str
)
{
WCHAR
*
strW
;
HRESULT
hr
;
strW
=
strdupAtoW
(
str
);
hr
=
IXmlWriter_WriteString
(
writer
,
strW
);
free
(
strW
);
return
hr
;
}
static
void
test_WriteStartElement
(
void
)
{
static
const
struct
{
const
char
*
prefix
;
const
char
*
local
;
const
char
*
uri
;
const
WCHAR
*
prefix
;
const
WCHAR
*
local
;
const
WCHAR
*
uri
;
const
char
*
output
;
const
char
*
output_partial
;
HRESULT
hr
;
...
...
@@ -899,22 +818,21 @@ static void test_WriteStartElement(void)
}
start_element_tests
[]
=
{
{
"prefix"
,
"local"
,
"uri"
,
"<prefix:local xmlns:prefix=
\"
uri
\"
/>"
,
"<prefix:local"
},
{
NULL
,
"local"
,
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
""
,
"local"
,
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
""
,
"local"
,
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
L"prefix"
,
L"local"
,
L
"uri"
,
"<prefix:local xmlns:prefix=
\"
uri
\"
/>"
,
"<prefix:local"
},
{
NULL
,
L"local"
,
L
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
L""
,
L"local"
,
L
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
L""
,
L"local"
,
L
"uri"
,
"<local xmlns=
\"
uri
\"
/>"
,
"<local"
},
{
"prefix"
,
NULL
,
NULL
,
NULL
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
"uri"
,
NULL
,
NULL
,
E_INVALIDARG
},
{
L
"prefix"
,
NULL
,
NULL
,
NULL
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
L
"uri"
,
NULL
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
E_INVALIDARG
},
{
NULL
,
"prefix:local"
,
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
"pre:fix"
,
"local"
,
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
":local"
,
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
":"
,
"local"
,
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
"local"
,
"http://www.w3.org/2000/xmlns/"
,
NULL
,
NULL
,
WR_E_XMLNSPREFIXDECLARATION
},
{
"prefix"
,
"local"
,
"http://www.w3.org/2000/xmlns/"
,
NULL
,
NULL
,
WR_E_XMLNSURIDECLARATION
},
{
NULL
,
L"prefix:local"
,
L
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
L"pre:fix"
,
L"local"
,
L
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
L":local"
,
L
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
L":"
,
L"local"
,
L
"uri"
,
NULL
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
L"local"
,
L
"http://www.w3.org/2000/xmlns/"
,
NULL
,
NULL
,
WR_E_XMLNSPREFIXDECLARATION
},
{
L"prefix"
,
L"local"
,
L
"http://www.w3.org/2000/xmlns/"
,
NULL
,
NULL
,
WR_E_XMLNSURIDECLARATION
},
};
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
unsigned
int
i
;
...
...
@@ -923,12 +841,12 @@ static void test_WriteStartElement(void)
hr
=
CreateXmlWriter
(
&
IID_IXmlWriter
,
(
void
**
)
&
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Yes
);
...
...
@@ -945,7 +863,7 @@ static void test_WriteStartElement(void)
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
aW
,
aW
);
hr
=
IXmlWriter_WriteProcessingInstruction
(
writer
,
L"a"
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
IStream_Release
(
stream
);
...
...
@@ -955,27 +873,27 @@ static void test_WriteStartElement(void)
hr
=
CreateXmlWriter
(
&
IID_IXmlWriter
,
(
void
**
)
&
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"b"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
L
"value"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
"prefix"
,
"a"
,
"uri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
L"prefix"
,
L"a"
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"b"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Failed to write element string, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"c"
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L
"c"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element string, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"d"
,
"uri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"d"
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
""
,
"e"
,
"uri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
L""
,
L"e"
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
"prefix2"
,
"f"
,
"uri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
L"prefix2"
,
L"f"
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1001,7 +919,7 @@ static void test_WriteStartElement(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Failed to start document, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_e
lement
(
writer
,
start_element_tests
[
i
].
prefix
,
start_element_tests
[
i
].
local
,
hr
=
IXmlWriter_WriteStartE
lement
(
writer
,
start_element_tests
[
i
].
prefix
,
start_element_tests
[
i
].
local
,
start_element_tests
[
i
].
uri
);
ok
(
hr
==
start_element_tests
[
i
].
hr
,
"%u: unexpected hr %#lx.
\n
"
,
i
,
hr
);
...
...
@@ -1031,39 +949,39 @@ static void test_WriteElementString(void)
{
static
const
struct
{
const
char
*
prefix
;
const
char
*
local
;
const
char
*
uri
;
const
char
*
value
;
const
WCHAR
*
prefix
;
const
WCHAR
*
local
;
const
WCHAR
*
uri
;
const
WCHAR
*
value
;
const
char
*
output
;
HRESULT
hr
;
int
todo
;
}
element_string_tests
[]
=
{
{
"prefix"
,
"local"
,
"uri"
,
"value"
,
"<prefix:local xmlns:prefix=
\"
uri
\"
>value</prefix:local>"
},
{
NULL
,
"local"
,
"uri"
,
"value"
,
"<local xmlns=
\"
uri
\"
>value</local>"
},
{
""
,
"local"
,
"uri"
,
"value"
,
"<local xmlns=
\"
uri
\"
>value</local>"
},
{
"prefix"
,
"local"
,
"uri"
,
NULL
,
"<prefix:local xmlns:prefix=
\"
uri
\"
/>"
},
{
NULL
,
"local"
,
"uri"
,
NULL
,
"<local xmlns=
\"
uri
\"
/>"
},
{
""
,
"local"
,
"uri"
,
NULL
,
"<local xmlns=
\"
uri
\"
/>"
},
{
NULL
,
"local"
,
NULL
,
NULL
,
"<local />"
},
{
"prefix"
,
"local"
,
"uri"
,
""
,
"<prefix:local xmlns:prefix=
\"
uri
\"
></prefix:local>"
},
{
NULL
,
"local"
,
"uri"
,
""
,
"<local xmlns=
\"
uri
\"
></local>"
},
{
""
,
"local"
,
"uri"
,
""
,
"<local xmlns=
\"
uri
\"
></local>"
},
{
NULL
,
"local"
,
NULL
,
""
,
"<local></local>"
},
{
""
,
"local"
,
"http://www.w3.org/2000/xmlns/"
,
NULL
,
"<local xmlns=
\"
http://www.w3.org/2000/xmlns/
\"
/>"
},
{
"prefix"
,
NULL
,
NULL
,
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
"uri"
,
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
NULL
,
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
"prefix:local"
,
"uri"
,
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
":local"
,
"uri"
,
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
":"
,
"local"
,
"uri"
,
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
"prefix"
,
"local"
,
NULL
,
"value"
,
NULL
,
WR_E_NSPREFIXWITHEMPTYNSURI
},
{
"prefix"
,
"local"
,
""
,
"value"
,
NULL
,
WR_E_NSPREFIXWITHEMPTYNSURI
},
{
NULL
,
"local"
,
"http://www.w3.org/2000/xmlns/"
,
"value"
,
NULL
,
WR_E_XMLNSPREFIXDECLARATION
},
{
"prefix"
,
"local"
,
"http://www.w3.org/2000/xmlns/"
,
"value"
,
NULL
,
WR_E_XMLNSURIDECLARATION
},
{
L"prefix"
,
L"local"
,
L"uri"
,
L
"value"
,
"<prefix:local xmlns:prefix=
\"
uri
\"
>value</prefix:local>"
},
{
NULL
,
L"local"
,
L"uri"
,
L
"value"
,
"<local xmlns=
\"
uri
\"
>value</local>"
},
{
L""
,
L"local"
,
L"uri"
,
L
"value"
,
"<local xmlns=
\"
uri
\"
>value</local>"
},
{
L"prefix"
,
L"local"
,
L
"uri"
,
NULL
,
"<prefix:local xmlns:prefix=
\"
uri
\"
/>"
},
{
NULL
,
L"local"
,
L
"uri"
,
NULL
,
"<local xmlns=
\"
uri
\"
/>"
},
{
L""
,
L"local"
,
L
"uri"
,
NULL
,
"<local xmlns=
\"
uri
\"
/>"
},
{
NULL
,
L
"local"
,
NULL
,
NULL
,
"<local />"
},
{
L"prefix"
,
L"local"
,
L"uri"
,
L
""
,
"<prefix:local xmlns:prefix=
\"
uri
\"
></prefix:local>"
},
{
NULL
,
L"local"
,
L"uri"
,
L
""
,
"<local xmlns=
\"
uri
\"
></local>"
},
{
L""
,
L"local"
,
L"uri"
,
L
""
,
"<local xmlns=
\"
uri
\"
></local>"
},
{
NULL
,
L"local"
,
NULL
,
L
""
,
"<local></local>"
},
{
L""
,
L"local"
,
L
"http://www.w3.org/2000/xmlns/"
,
NULL
,
"<local xmlns=
\"
http://www.w3.org/2000/xmlns/
\"
/>"
},
{
L"prefix"
,
NULL
,
NULL
,
L
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
L"uri"
,
L
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
NULL
,
NULL
,
L
"value"
,
NULL
,
E_INVALIDARG
},
{
NULL
,
L"prefix:local"
,
L"uri"
,
L
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
NULL
,
L":local"
,
L"uri"
,
L
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
L":"
,
L"local"
,
L"uri"
,
L
"value"
,
NULL
,
WC_E_NAMECHARACTER
},
{
L"prefix"
,
L"local"
,
NULL
,
L
"value"
,
NULL
,
WR_E_NSPREFIXWITHEMPTYNSURI
},
{
L"prefix"
,
L"local"
,
L""
,
L
"value"
,
NULL
,
WR_E_NSPREFIXWITHEMPTYNSURI
},
{
NULL
,
L"local"
,
L"http://www.w3.org/2000/xmlns/"
,
L
"value"
,
NULL
,
WR_E_XMLNSPREFIXDECLARATION
},
{
L"prefix"
,
L"local"
,
L"http://www.w3.org/2000/xmlns/"
,
L
"value"
,
NULL
,
WR_E_XMLNSURIDECLARATION
},
};
IXmlWriter
*
writer
;
IStream
*
stream
;
...
...
@@ -1073,48 +991,48 @@ static void test_WriteElementString(void)
hr
=
CreateXmlWriter
(
&
IID_IXmlWriter
,
(
void
**
)
&
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"b"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
L
"value"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"b"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"b"
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L
"b"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix"
,
"b"
,
"uri"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix"
,
L"b"
,
L
"uri"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
"prefix"
,
"c"
,
"uri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
L"prefix"
,
L"c"
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix"
,
"d"
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix"
,
L
"d"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix2"
,
"d"
,
"uri"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix2"
,
L"d"
,
L
"uri"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"e"
,
"uri"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"e"
,
L
"uri"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix"
,
"f"
,
"uri2"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix"
,
L"f"
,
L
"uri2"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
NULL
,
"g"
,
"uri3"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"g"
,
L
"uri3"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix"
,
"h"
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix"
,
L
"h"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
"prefix_i"
,
"i"
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L"prefix_i"
,
L
"i"
,
NULL
,
NULL
);
ok
(
hr
==
WR_E_NSPREFIXWITHEMPTYNSURI
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_string
(
writer
,
""
,
"j"
,
"uri"
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
L""
,
L"j"
,
L
"uri"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to write element, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1143,7 +1061,7 @@ static void test_WriteElementString(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Failed to start document, hr %#lx.
\n
"
,
hr
);
hr
=
write_element_s
tring
(
writer
,
element_string_tests
[
i
].
prefix
,
element_string_tests
[
i
].
local
,
hr
=
IXmlWriter_WriteElementS
tring
(
writer
,
element_string_tests
[
i
].
prefix
,
element_string_tests
[
i
].
local
,
element_string_tests
[
i
].
uri
,
element_string_tests
[
i
].
value
);
ok
(
hr
==
element_string_tests
[
i
].
hr
,
"%u: unexpected hr %#lx.
\n
"
,
i
,
hr
);
...
...
@@ -1180,10 +1098,10 @@ static void test_WriteEndElement(void)
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndElement
(
writer
);
...
...
@@ -1203,8 +1121,6 @@ static void test_WriteEndElement(void)
static
void
test_writeenddocument
(
void
)
{
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
static
const
WCHAR
bW
[]
=
{
'b'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HGLOBAL
hglobal
;
...
...
@@ -1229,16 +1145,16 @@ static void test_writeenddocument(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_SetOutput
(
writer
,
(
IUnknown
*
)
stream
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
bW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -1262,9 +1178,6 @@ static void test_writeenddocument(void)
static
void
test_WriteComment
(
void
)
{
static
const
WCHAR
closeW
[]
=
{
'-'
,
'-'
,
'>'
,
0
};
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
static
const
WCHAR
bW
[]
=
{
'b'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1274,7 +1187,7 @@ static void test_WriteComment(void)
writer_set_property
(
writer
,
XmlWriterProperty_OmitXmlDeclaration
);
hr
=
IXmlWriter_WriteComment
(
writer
,
aW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"a"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
...
...
@@ -1282,19 +1195,19 @@ static void test_WriteComment(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
aW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"a"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
bW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
aW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"a"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
closeW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"-->"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1308,10 +1221,6 @@ static void test_WriteComment(void)
static
void
test_WriteCData
(
void
)
{
static
const
WCHAR
closeW
[]
=
{
']'
,
']'
,
'>'
,
0
};
static
const
WCHAR
close2W
[]
=
{
'a'
,
']'
,
']'
,
'>'
,
'b'
,
0
};
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
static
const
WCHAR
bW
[]
=
{
'b'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1321,24 +1230,24 @@ static void test_WriteCData(void)
writer_set_property
(
writer
,
XmlWriterProperty_OmitXmlDeclaration
);
hr
=
IXmlWriter_WriteCData
(
writer
,
aW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
bW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
aW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
closeW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"]]>"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCData
(
writer
,
close2W
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a]]>b"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1359,8 +1268,7 @@ static void test_WriteCData(void)
static
void
test_WriteRaw
(
void
)
{
static
const
WCHAR
rawW
[]
=
{
'a'
,
'<'
,
':'
,
0
};
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
static
const
WCHAR
rawW
[]
=
L"a<:"
;
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1391,7 +1299,7 @@ static void test_WriteRaw(void)
hr
=
IXmlWriter_WriteRaw
(
writer
,
rawW
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
aW
,
NULL
,
aW
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"a"
,
NULL
,
L"a"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Yes
);
...
...
@@ -1417,7 +1325,6 @@ static void test_WriteRaw(void)
static
void
test_writer_state
(
void
)
{
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1440,7 +1347,7 @@ static void test_writer_state(void)
/* WriteAttributeString */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
aW
,
NULL
,
aW
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"a"
,
NULL
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
check_writer_state
(
writer
,
WR_E_INVALIDACTION
);
...
...
@@ -1467,7 +1374,7 @@ static void test_writer_state(void)
/* WriteCData */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteCData
(
writer
,
aW
);
hr
=
IXmlWriter_WriteCData
(
writer
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
check_writer_state
(
writer
,
WR_E_INVALIDACTION
);
...
...
@@ -1476,7 +1383,7 @@ static void test_writer_state(void)
/* WriteName */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteName
(
writer
,
aW
);
hr
=
IXmlWriter_WriteName
(
writer
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
check_writer_state
(
writer
,
WR_E_INVALIDACTION
);
...
...
@@ -1485,7 +1392,7 @@ static void test_writer_state(void)
/* WriteNmToken */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
aW
);
hr
=
IXmlWriter_WriteNmToken
(
writer
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
check_writer_state
(
writer
,
WR_E_INVALIDACTION
);
...
...
@@ -1494,7 +1401,7 @@ static void test_writer_state(void)
/* WriteString */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteString
(
writer
,
aW
);
hr
=
IXmlWriter_WriteString
(
writer
,
L"a"
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
check_writer_state
(
writer
,
WR_E_INVALIDACTION
);
...
...
@@ -1505,9 +1412,6 @@ static void test_writer_state(void)
static
void
test_indentation
(
void
)
{
static
const
WCHAR
commentW
[]
=
{
'c'
,
'o'
,
'm'
,
'm'
,
'e'
,
'n'
,
't'
,
0
};
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
static
const
WCHAR
bW
[]
=
{
'b'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1523,13 +1427,13 @@ static void test_indentation(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteComment
(
writer
,
commentW
);
hr
=
IXmlWriter_WriteComment
(
writer
,
L"comment"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
bW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -1549,13 +1453,13 @@ static void test_indentation(void)
/* WriteElementString */
stream
=
writer_set_output
(
writer
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
bW
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
bW
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteElementString
(
writer
,
NULL
,
L"b"
,
NULL
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndElement
(
writer
);
...
...
@@ -1575,35 +1479,14 @@ static void test_indentation(void)
IXmlWriter_Release
(
writer
);
}
static
HRESULT
write_attribute_string
(
IXmlWriter
*
writer
,
const
char
*
prefix
,
const
char
*
local
,
const
char
*
uri
,
const
char
*
value
)
{
WCHAR
*
prefixW
,
*
localW
,
*
uriW
,
*
valueW
;
HRESULT
hr
;
prefixW
=
strdupAtoW
(
prefix
);
localW
=
strdupAtoW
(
local
);
uriW
=
strdupAtoW
(
uri
);
valueW
=
strdupAtoW
(
value
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
prefixW
,
localW
,
uriW
,
valueW
);
free
(
prefixW
);
free
(
localW
);
free
(
uriW
);
free
(
valueW
);
return
hr
;
}
static
void
test_WriteAttributeString
(
void
)
{
static
const
struct
{
const
char
*
prefix
;
const
char
*
local
;
const
char
*
uri
;
const
char
*
value
;
const
WCHAR
*
prefix
;
const
WCHAR
*
local
;
const
WCHAR
*
uri
;
const
WCHAR
*
value
;
const
char
*
output
;
const
char
*
output_partial
;
HRESULT
hr
;
...
...
@@ -1613,62 +1496,62 @@ static void test_WriteAttributeString(void)
}
attribute_tests
[]
=
{
{
NULL
,
"a"
,
NULL
,
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
""
,
"a"
,
NULL
,
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
NULL
,
"a"
,
""
,
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
""
,
"a"
,
""
,
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
"prefix"
,
"local"
,
"uri"
,
"b"
,
"<e prefix:local=
\"
b
\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:local=
\"
b
\"
"
},
{
NULL
,
"a"
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e xmlns:a=
\"
defuri
\"
/>"
,
"<e xmlns:a=
\"
defuri
\"
"
},
{
"xmlns"
,
"a"
,
NULL
,
"uri"
,
"<e xmlns:a=
\"
uri
\"
/>"
,
"<e xmlns:a=
\"
uri
\"
"
},
{
"xmlns"
,
"a"
,
""
,
"uri"
,
"<e xmlns:a=
\"
uri
\"
/>"
,
"<e xmlns:a=
\"
uri
\"
"
},
{
"prefix"
,
"xmlns"
,
"uri"
,
"value"
,
"<e prefix:xmlns=
\"
value
\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"
value
\"
"
},
{
"prefix"
,
"xmlns"
,
"uri"
,
NULL
,
"<e prefix:xmlns=
\"\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"\"
"
},
{
"prefix"
,
"xmlns"
,
"uri"
,
""
,
"<e prefix:xmlns=
\"\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"\"
"
},
{
"prefix"
,
"xmlns"
,
NULL
,
"uri"
,
"<e xmlns=
\"
uri
\"
/>"
,
"<e xmlns=
\"
uri
\"
"
},
{
"prefix"
,
"xmlns"
,
""
,
"uri"
,
"<e xmlns=
\"
uri
\"
/>"
,
"<e xmlns=
\"
uri
\"
"
},
{
"xml"
,
"space"
,
NULL
,
"preserve"
,
"<e xml:space=
\"
preserve
\"
/>"
,
"<e xml:space=
\"
preserve
\"
"
},
{
"xml"
,
"space"
,
""
,
"preserve"
,
"<e xml:space=
\"
preserve
\"
/>"
,
"<e xml:space=
\"
preserve
\"
"
},
{
"xml"
,
"space"
,
NULL
,
"default"
,
"<e xml:space=
\"
default
\"
/>"
,
"<e xml:space=
\"
default
\"
"
},
{
"xml"
,
"space"
,
""
,
"default"
,
"<e xml:space=
\"
default
\"
/>"
,
"<e xml:space=
\"
default
\"
"
},
{
"xml"
,
"a"
,
NULL
,
"value"
,
"<e xml:a=
\"
value
\"
/>"
,
"<e xml:a=
\"
value
\"
"
},
{
"xml"
,
"a"
,
""
,
"value"
,
"<e xml:a=
\"
value
\"
/>"
,
"<e xml:a=
\"
value
\"
"
},
{
NULL
,
L"a"
,
NULL
,
L
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
L""
,
L"a"
,
NULL
,
L
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
NULL
,
L"a"
,
L""
,
L
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
L""
,
L"a"
,
L""
,
L
"b"
,
"<e a=
\"
b
\"
/>"
,
"<e a=
\"
b
\"
"
},
{
L"prefix"
,
L"local"
,
L"uri"
,
L
"b"
,
"<e prefix:local=
\"
b
\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:local=
\"
b
\"
"
},
{
NULL
,
L"a"
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e xmlns:a=
\"
defuri
\"
/>"
,
"<e xmlns:a=
\"
defuri
\"
"
},
{
L"xmlns"
,
L"a"
,
NULL
,
L
"uri"
,
"<e xmlns:a=
\"
uri
\"
/>"
,
"<e xmlns:a=
\"
uri
\"
"
},
{
L"xmlns"
,
L"a"
,
L""
,
L
"uri"
,
"<e xmlns:a=
\"
uri
\"
/>"
,
"<e xmlns:a=
\"
uri
\"
"
},
{
L"prefix"
,
L"xmlns"
,
L"uri"
,
L
"value"
,
"<e prefix:xmlns=
\"
value
\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"
value
\"
"
},
{
L"prefix"
,
L"xmlns"
,
L
"uri"
,
NULL
,
"<e prefix:xmlns=
\"\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"\"
"
},
{
L"prefix"
,
L"xmlns"
,
L"uri"
,
L
""
,
"<e prefix:xmlns=
\"\"
xmlns:prefix=
\"
uri
\"
/>"
,
"<e prefix:xmlns=
\"\"
"
},
{
L"prefix"
,
L"xmlns"
,
NULL
,
L
"uri"
,
"<e xmlns=
\"
uri
\"
/>"
,
"<e xmlns=
\"
uri
\"
"
},
{
L"prefix"
,
L"xmlns"
,
L""
,
L
"uri"
,
"<e xmlns=
\"
uri
\"
/>"
,
"<e xmlns=
\"
uri
\"
"
},
{
L"xml"
,
L"space"
,
NULL
,
L
"preserve"
,
"<e xml:space=
\"
preserve
\"
/>"
,
"<e xml:space=
\"
preserve
\"
"
},
{
L"xml"
,
L"space"
,
L""
,
L
"preserve"
,
"<e xml:space=
\"
preserve
\"
/>"
,
"<e xml:space=
\"
preserve
\"
"
},
{
L"xml"
,
L"space"
,
NULL
,
L
"default"
,
"<e xml:space=
\"
default
\"
/>"
,
"<e xml:space=
\"
default
\"
"
},
{
L"xml"
,
L"space"
,
L""
,
L
"default"
,
"<e xml:space=
\"
default
\"
/>"
,
"<e xml:space=
\"
default
\"
"
},
{
L"xml"
,
L"a"
,
NULL
,
L
"value"
,
"<e xml:a=
\"
value
\"
/>"
,
"<e xml:a=
\"
value
\"
"
},
{
L"xml"
,
L"a"
,
L""
,
L
"value"
,
"<e xml:a=
\"
value
\"
/>"
,
"<e xml:a=
\"
value
\"
"
},
/* Autogenerated prefix names. */
{
NULL
,
"a"
,
"defuri"
,
NULL
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
NULL
,
"a"
,
"defuri"
,
"b"
,
"<e p1:a=
\"
b
\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"
b
\"
"
,
S_OK
,
1
,
1
,
1
},
{
""
,
"a"
,
"defuri"
,
NULL
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
NULL
,
"a"
,
"defuri"
,
""
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
""
,
"a"
,
"defuri"
,
"b"
,
"<e p1:a=
\"
b
\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"
b
\"
"
,
S_OK
,
1
,
1
,
1
},
{
NULL
,
L"a"
,
L
"defuri"
,
NULL
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
NULL
,
L"a"
,
L"defuri"
,
L
"b"
,
"<e p1:a=
\"
b
\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"
b
\"
"
,
S_OK
,
1
,
1
,
1
},
{
L""
,
L"a"
,
L
"defuri"
,
NULL
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
NULL
,
L"a"
,
L"defuri"
,
L
""
,
"<e p1:a=
\"\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"\"
"
,
S_OK
,
1
,
1
,
1
},
{
L""
,
L"a"
,
L"defuri"
,
L
"b"
,
"<e p1:a=
\"
b
\"
xmlns:p1=
\"
defuri
\"
/>"
,
"<e p1:a=
\"
b
\"
"
,
S_OK
,
1
,
1
,
1
},
/* Failing cases. */
{
NULL
,
NULL
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
""
,
"a"
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
1
,
1
,
1
},
{
""
,
NULL
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
""
,
""
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
,
1
,
1
,
1
},
{
NULL
,
""
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
,
1
,
1
,
1
},
{
"prefix"
,
"a"
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSURIDECLARATION
,
1
,
1
,
1
},
{
"prefix"
,
NULL
,
"http://www.w3.org/2000/xmlns/"
,
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
"prefix"
,
NULL
,
NULL
,
"b"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
"prefix"
,
NULL
,
"uri"
,
NULL
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
"xml"
,
NULL
,
NULL
,
"value"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
"xmlns"
,
"a"
,
"defuri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
},
{
"xmlns"
,
"a"
,
"b"
,
"uri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
},
{
NULL
,
"xmlns"
,
"uri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
0
,
0
,
1
},
{
"xmlns"
,
NULL
,
"uri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
0
,
0
,
1
},
{
"pre:fix"
,
"local"
,
"uri"
,
"b"
,
"<e />"
,
"<e"
,
WC_E_NAMECHARACTER
},
{
"pre:fix"
,
NULL
,
"uri"
,
"b"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
"prefix"
,
"lo:cal"
,
"uri"
,
"b"
,
"<e />"
,
"<e"
,
WC_E_NAMECHARACTER
},
{
"xmlns"
,
NULL
,
NULL
,
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
"xmlns"
,
NULL
,
""
,
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
"xmlns"
,
""
,
NULL
,
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
"xmlns"
,
""
,
""
,
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
"xml"
,
"space"
,
""
,
"value"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
"xml"
,
"space"
,
NULL
,
"value"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
"xml"
,
"a"
,
"uri"
,
"value"
,
"<e />"
,
"<e"
,
WR_E_XMLPREFIXDECLARATION
},
{
"xml"
,
"space"
,
NULL
,
"preServe"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
"xml"
,
"space"
,
NULL
,
"defAult"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
"xml"
,
"space"
,
NULL
,
NULL
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
"xml"
,
"space"
,
NULL
,
""
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
NULL
,
NULL
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L""
,
L"a"
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
1
,
1
,
1
},
{
L""
,
NULL
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L""
,
L""
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
,
1
,
1
,
1
},
{
NULL
,
L""
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
,
1
,
1
,
1
},
{
L"prefix"
,
L"a"
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSURIDECLARATION
,
1
,
1
,
1
},
{
L"prefix"
,
NULL
,
L"http://www.w3.org/2000/xmlns/"
,
L
"defuri"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L"prefix"
,
NULL
,
NULL
,
L
"b"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L"prefix"
,
NULL
,
L
"uri"
,
NULL
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L"xml"
,
NULL
,
NULL
,
L
"value"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L"xmlns"
,
L"a"
,
L
"defuri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
},
{
L"xmlns"
,
L"a"
,
L"b"
,
L
"uri"
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
},
{
NULL
,
L"xmlns"
,
L
"uri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
0
,
0
,
1
},
{
L"xmlns"
,
NULL
,
L
"uri"
,
NULL
,
"<e />"
,
"<e"
,
WR_E_XMLNSPREFIXDECLARATION
,
0
,
0
,
1
},
{
L"pre:fix"
,
L"local"
,
L"uri"
,
L
"b"
,
"<e />"
,
"<e"
,
WC_E_NAMECHARACTER
},
{
L"pre:fix"
,
NULL
,
L"uri"
,
L
"b"
,
"<e />"
,
"<e"
,
E_INVALIDARG
},
{
L"prefix"
,
L"lo:cal"
,
L"uri"
,
L
"b"
,
"<e />"
,
"<e"
,
WC_E_NAMECHARACTER
},
{
L"xmlns"
,
NULL
,
NULL
,
L
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
L"xmlns"
,
NULL
,
L""
,
L
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
L"xmlns"
,
L""
,
NULL
,
L
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
L"xmlns"
,
L""
,
L""
,
L
"uri"
,
"<e />"
,
"<e"
,
WR_E_NSPREFIXDECLARED
},
{
L"xml"
,
L"space"
,
L""
,
L
"value"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
L"xml"
,
L"space"
,
NULL
,
L
"value"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
L"xml"
,
L"a"
,
L"uri"
,
L
"value"
,
"<e />"
,
"<e"
,
WR_E_XMLPREFIXDECLARATION
},
{
L"xml"
,
L"space"
,
NULL
,
L
"preServe"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
L"xml"
,
L"space"
,
NULL
,
L
"defAult"
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
L"xml"
,
L
"space"
,
NULL
,
NULL
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
{
L"xml"
,
L"space"
,
NULL
,
L
""
,
"<e />"
,
"<e"
,
WR_E_INVALIDXMLSPACE
},
};
IXmlWriter
*
writer
;
...
...
@@ -1688,10 +1571,10 @@ static void test_WriteAttributeString(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Failed to start document, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"e"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"e"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_s
tring
(
writer
,
attribute_tests
[
i
].
prefix
,
attribute_tests
[
i
].
local
,
hr
=
IXmlWriter_WriteAttributeS
tring
(
writer
,
attribute_tests
[
i
].
prefix
,
attribute_tests
[
i
].
local
,
attribute_tests
[
i
].
uri
,
attribute_tests
[
i
].
value
);
todo_wine_if
(
attribute_tests
[
i
].
todo_hr
)
ok
(
hr
==
attribute_tests
[
i
].
hr
,
"%u: unexpected hr %#lx, expected %#lx.
\n
"
,
i
,
hr
,
attribute_tests
[
i
].
hr
);
...
...
@@ -1717,32 +1600,32 @@ static void test_WriteAttributeString(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
"p"
,
"a"
,
"outeruri"
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
L"p"
,
L"a"
,
L
"outeruri"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"prefix"
,
"local"
,
"uri"
,
"b"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"prefix"
,
L"local"
,
L"uri"
,
L
"b"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
NULL
,
"a"
,
NULL
,
"b"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"a"
,
NULL
,
L
"b"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"xmlns"
,
"prefix"
,
NULL
,
"uri"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"xmlns"
,
L"prefix"
,
NULL
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"p"
,
"attr"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"p"
,
L"attr"
,
NULL
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Failed to write attribute string, hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"prefix"
,
"local"
,
NULL
,
"b"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"prefix"
,
L"local"
,
NULL
,
L
"b"
);
todo_wine
ok
(
hr
==
WR_E_DUPLICATEATTRIBUTE
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
NULL
,
"attr2"
,
"outeruri"
,
"value"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"attr2"
,
L"outeruri"
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Failed to write attribute string, hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"pr"
,
"attr3"
,
"outeruri"
,
"value"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"pr"
,
L"attr3"
,
L"outeruri"
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Failed to write attribute string, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -1764,13 +1647,13 @@ static void test_WriteAttributeString(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"e"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"e"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"xmlns"
,
"prefix"
,
NULL
,
"uri"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"xmlns"
,
L"prefix"
,
NULL
,
L
"uri"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
"prefix"
,
"attr"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
L"prefix"
,
L"attr"
,
NULL
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -1789,7 +1672,6 @@ static void test_WriteAttributeString(void)
static
void
test_WriteFullEndElement
(
void
)
{
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1806,7 +1688,7 @@ static void test_WriteFullEndElement(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteFullEndElement
(
writer
);
...
...
@@ -1831,10 +1713,10 @@ static void test_WriteFullEndElement(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteFullEndElement
(
writer
);
...
...
@@ -1857,7 +1739,6 @@ static void test_WriteFullEndElement(void)
static
void
test_WriteCharEntity
(
void
)
{
static
const
WCHAR
aW
[]
=
{
'a'
,
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
HRESULT
hr
;
...
...
@@ -1873,13 +1754,13 @@ static void test_WriteCharEntity(void)
hr
=
IXmlWriter_WriteStartDocument
(
writer
,
XmlStandalone_Omit
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteCharEntity
(
writer
,
0x100
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
aW
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndDocument
(
writer
);
...
...
@@ -1906,31 +1787,31 @@ static void test_WriteString(void)
writer_set_property
(
writer
,
XmlWriterProperty_OmitXmlDeclaration
);
hr
=
write_string
(
writer
,
"a"
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
"a"
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_s
tring
(
writer
,
NULL
);
hr
=
IXmlWriter_WriteS
tring
(
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_string
(
writer
,
""
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
""
);
ok
(
hr
==
E_UNEXPECTED
,
"Unexpected hr %#lx.
\n
"
,
hr
);
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_s
tring
(
writer
,
NULL
);
hr
=
IXmlWriter_WriteS
tring
(
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_string
(
writer
,
""
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
""
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_string
(
writer
,
"a"
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
"a"
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* WriteString automatically escapes markup characters */
hr
=
write_string
(
writer
,
"<&
\"
>="
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
"<&
\"
>="
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1942,10 +1823,10 @@ static void test_WriteString(void)
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
write_s
tring
(
writer
,
NULL
);
hr
=
IXmlWriter_WriteS
tring
(
writer
,
NULL
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1954,7 +1835,7 @@ static void test_WriteString(void)
CHECK_OUTPUT
(
stream
,
"<b"
);
hr
=
write_string
(
writer
,
""
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
""
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -1974,13 +1855,13 @@ static void test_WriteString(void)
writer_set_property
(
writer
,
XmlWriterProperty_Indent
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_string
(
writer
,
"text"
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
"text"
);
ok
(
hr
==
S_OK
,
"Failed to write a string, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -2015,10 +1896,10 @@ static void test_WriteString(void)
stream
=
writer_set_output
(
writer
);
hr
=
write_start_element
(
writer
,
NULL
,
"a"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"a"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_start_element
(
writer
,
NULL
,
"b"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"b"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndElement
(
writer
);
...
...
@@ -2031,10 +1912,10 @@ static void test_WriteString(void)
"<a>
\r\n
"
" <b />"
);
hr
=
write_start_element
(
writer
,
NULL
,
"c"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"c"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_attribute_string
(
writer
,
NULL
,
"attr"
,
NULL
,
"value"
);
hr
=
IXmlWriter_WriteAttributeString
(
writer
,
NULL
,
L"attr"
,
NULL
,
L
"value"
);
ok
(
hr
==
S_OK
,
"Failed to write attribute string, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -2045,7 +1926,7 @@ static void test_WriteString(void)
" <b />
\r\n
"
" <c attr=
\"
value
\"
"
);
hr
=
write_string
(
writer
,
"text"
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
"text"
);
ok
(
hr
==
S_OK
,
"Failed to write a string, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_Flush
(
writer
);
...
...
@@ -2067,10 +1948,10 @@ static void test_WriteString(void)
" <b />
\r\n
"
" <c attr=
\"
value
\"
>text</c>"
);
hr
=
write_start_element
(
writer
,
NULL
,
"d"
,
NULL
);
hr
=
IXmlWriter_WriteStartElement
(
writer
,
NULL
,
L
"d"
,
NULL
);
ok
(
hr
==
S_OK
,
"Failed to start element, hr %#lx.
\n
"
,
hr
);
hr
=
write_string
(
writer
,
""
);
hr
=
IXmlWriter_WriteString
(
writer
,
L
""
);
ok
(
hr
==
S_OK
,
"Failed to write a string, hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteEndElement
(
writer
);
...
...
@@ -2102,60 +1983,37 @@ static void test_WriteString(void)
IStream_Release
(
stream
);
}
static
HRESULT
write_doctype
(
IXmlWriter
*
writer
,
const
char
*
name
,
const
char
*
pubid
,
const
char
*
sysid
,
const
char
*
subset
)
{
WCHAR
*
nameW
,
*
pubidW
,
*
sysidW
,
*
subsetW
;
HRESULT
hr
;
nameW
=
strdupAtoW
(
name
);
pubidW
=
strdupAtoW
(
pubid
);
sysidW
=
strdupAtoW
(
sysid
);
subsetW
=
strdupAtoW
(
subset
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
nameW
,
pubidW
,
sysidW
,
subsetW
);
free
(
nameW
);
free
(
pubidW
);
free
(
sysidW
);
free
(
subsetW
);
return
hr
;
}
static
void
test_WriteDocType
(
void
)
{
static
const
struct
{
const
char
*
name
;
const
char
*
pubid
;
const
char
*
sysid
;
const
char
*
subset
;
const
WCHAR
*
name
;
const
WCHAR
*
pubid
;
const
WCHAR
*
sysid
;
const
WCHAR
*
subset
;
const
char
*
output
;
}
doctype_tests
[]
=
{
{
"a"
,
""
,
NULL
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
>"
},
{
"a"
,
NULL
,
NULL
,
NULL
,
"<!DOCTYPE a>"
},
{
"a"
,
NULL
,
""
,
NULL
,
"<!DOCTYPE a SYSTEM
\"\"
>"
},
{
"a"
,
""
,
""
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
>"
},
{
"a"
,
"pubid"
,
""
,
NULL
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
>"
},
{
"a"
,
"pubid"
,
NULL
,
NULL
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
>"
},
{
"a"
,
""
,
"sysid"
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"
sysid
\"
>"
},
{
"a"
,
NULL
,
NULL
,
""
,
"<!DOCTYPE a []>"
},
{
"a"
,
NULL
,
NULL
,
"subset"
,
"<!DOCTYPE a [subset]>"
},
{
"a"
,
""
,
NULL
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
[subset]>"
},
{
"a"
,
NULL
,
""
,
"subset"
,
"<!DOCTYPE a SYSTEM
\"\"
[subset]>"
},
{
"a"
,
""
,
""
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
[subset]>"
},
{
"a"
,
"pubid"
,
NULL
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
[subset]>"
},
{
"a"
,
"pubid"
,
""
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
[subset]>"
},
{
"a"
,
NULL
,
"sysid"
,
"subset"
,
"<!DOCTYPE a SYSTEM
\"
sysid
\"
[subset]>"
},
{
"a"
,
""
,
"sysid"
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"
sysid
\"
[subset]>"
},
{
"a"
,
"pubid"
,
"sysid"
,
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"
sysid
\"
[subset]>"
},
{
L"a"
,
L
""
,
NULL
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
>"
},
{
L
"a"
,
NULL
,
NULL
,
NULL
,
"<!DOCTYPE a>"
},
{
L"a"
,
NULL
,
L
""
,
NULL
,
"<!DOCTYPE a SYSTEM
\"\"
>"
},
{
L"a"
,
L""
,
L
""
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
>"
},
{
L"a"
,
L"pubid"
,
L
""
,
NULL
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
>"
},
{
L"a"
,
L
"pubid"
,
NULL
,
NULL
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
>"
},
{
L"a"
,
L""
,
L
"sysid"
,
NULL
,
"<!DOCTYPE a PUBLIC
\"\"
\"
sysid
\"
>"
},
{
L"a"
,
NULL
,
NULL
,
L
""
,
"<!DOCTYPE a []>"
},
{
L"a"
,
NULL
,
NULL
,
L
"subset"
,
"<!DOCTYPE a [subset]>"
},
{
L"a"
,
L""
,
NULL
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
[subset]>"
},
{
L"a"
,
NULL
,
L""
,
L
"subset"
,
"<!DOCTYPE a SYSTEM
\"\"
[subset]>"
},
{
L"a"
,
L""
,
L""
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"\"
[subset]>"
},
{
L"a"
,
L"pubid"
,
NULL
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
[subset]>"
},
{
L"a"
,
L"pubid"
,
L""
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"\"
[subset]>"
},
{
L"a"
,
NULL
,
L"sysid"
,
L
"subset"
,
"<!DOCTYPE a SYSTEM
\"
sysid
\"
[subset]>"
},
{
L"a"
,
L""
,
L"sysid"
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"\"
\"
sysid
\"
[subset]>"
},
{
L"a"
,
L"pubid"
,
L"sysid"
,
L
"subset"
,
"<!DOCTYPE a PUBLIC
\"
pubid
\"
\"
sysid
\"
[subset]>"
},
};
static
const
WCHAR
pubidW
[]
=
{
'p'
,
0x100
,
'i'
,
'd'
,
0
};
static
const
WCHAR
nameW
[]
=
{
'-'
,
'a'
,
0
};
static
const
WCHAR
emptyW
[]
=
{
0
};
IXmlWriter
*
writer
;
IStream
*
stream
;
unsigned
int
i
;
...
...
@@ -2169,15 +2027,15 @@ static void test_WriteDocType(void)
hr
=
IXmlWriter_WriteDocType
(
writer
,
NULL
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
emptyW
,
NULL
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
L""
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* Name validation. */
hr
=
IXmlWriter_WriteDocType
(
writer
,
nameW
,
NULL
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
L"-a"
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
WC_E_NAMECHARACTER
,
"Unexpected hr %#lx.
\n
"
,
hr
);
/* Pubid validation. */
hr
=
IXmlWriter_WriteDocType
(
writer
,
aW
,
pubidW
,
NULL
,
NULL
);
hr
=
IXmlWriter_WriteDocType
(
writer
,
L"a"
,
pubidW
,
NULL
,
NULL
);
ok
(
hr
==
WC_E_PUBLICID
,
"Unexpected hr %#lx.
\n
"
,
hr
);
IStream_Release
(
stream
);
...
...
@@ -2186,7 +2044,7 @@ static void test_WriteDocType(void)
{
stream
=
writer_set_output
(
writer
);
hr
=
write_doct
ype
(
writer
,
doctype_tests
[
i
].
name
,
doctype_tests
[
i
].
pubid
,
doctype_tests
[
i
].
sysid
,
hr
=
IXmlWriter_WriteDocT
ype
(
writer
,
doctype_tests
[
i
].
name
,
doctype_tests
[
i
].
pubid
,
doctype_tests
[
i
].
sysid
,
doctype_tests
[
i
].
subset
);
ok
(
hr
==
S_OK
,
"%u: failed to write doctype, hr %#lx.
\n
"
,
i
,
hr
);
...
...
@@ -2195,7 +2053,7 @@ static void test_WriteDocType(void)
CHECK_OUTPUT
(
stream
,
doctype_tests
[
i
].
output
);
hr
=
write_doct
ype
(
writer
,
doctype_tests
[
i
].
name
,
doctype_tests
[
i
].
pubid
,
doctype_tests
[
i
].
sysid
,
hr
=
IXmlWriter_WriteDocT
ype
(
writer
,
doctype_tests
[
i
].
name
,
doctype_tests
[
i
].
pubid
,
doctype_tests
[
i
].
sysid
,
doctype_tests
[
i
].
subset
);
ok
(
hr
==
WR_E_INVALIDACTION
,
"Unexpected hr %#lx.
\n
"
,
hr
);
...
...
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