34DEFINE_GUID(IID_IXmlReaderInput, 0x0b3ccc9b, 0x9214, 0x428b, 0xa2, 0xae, 0xef, 0x3a, 0xa8, 0x71, 0xaf, 0xda);
36static const char xmldecl_full[] =
"\xef\xbb\xbf<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
37static const char xmldecl_short[] =
"<?xml version=\"1.0\"?><RegistrationInfo/>";
61 UINT pos_broken,
int _line_)
66 IXmlReader_GetLineNumber(
reader, &
l);
67 IXmlReader_GetLinePosition(
reader, &
p);
69 if (line_broken == ~0
u && pos_broken == ~0
u)
72 broken_state =
broken((line_broken == ~0
u ?
line : line_broken) ==
l &&
73 (pos_broken == ~0
u ?
pos : pos_broken) ==
p);
75 ok_(__FILE__, _line_)((
l ==
line &&
pos ==
p) || broken_state,
76 "Expected (%d,%d), got (%d,%d)\n",
line,
pos,
l,
p);
78#define TEST_READER_POSITION(reader, line, pos) \
79 test_reader_pos(reader, line, pos, ~0u, ~0u, __LINE__)
80#define TEST_READER_POSITION2(reader, line, pos, line_broken, pos_broken) \
81 test_reader_pos(reader, line, pos, line_broken, pos_broken, __LINE__)
91 &IID_ISequentialStream,
98 &IID_ISequentialStream,
106 &IID_ISequentialStream,
133#define ok_iids(got, exp, brk, todo) ok_iids_(got, exp, brk, todo, __LINE__)
137 static const char* state_names[] = {
138 "XmlReadState_Initial",
139 "XmlReadState_Interactive",
140 "XmlReadState_Error",
141 "XmlReadState_EndOfFile",
142 "XmlReadState_Closed"
145 static const char unknown[] =
"unknown";
154 return state_names[
state];
162 static const char* type_names[] = {
164 "XmlNodeType_Element",
165 "XmlNodeType_Attribute",
169 "XmlNodeType_ProcessingInstruction",
170 "XmlNodeType_Comment",
172 "XmlNodeType_DocumentType",
174 "XmlNodeType_Whitespace",
176 "XmlNodeType_EndElement",
178 "XmlNodeType_XmlDeclaration"
181 static const char unknown[] =
"unknown";
196 return type_names[
type];
202#define set_input_string(a,b) _set_input_string(__LINE__,a,b);
216#define read_node(a,b) _read_node(__LINE__,a,b)
227 ok_(__FILE__,
line)(
type == expected_type,
"read type %d, expected %d\n",
type, expected_type);
230#define next_attribute(a) _next_attribute(__LINE__,a)
234 hr = IXmlReader_MoveToNextAttribute(
reader);
238#define move_to_element(a) _move_to_element(__LINE__,a)
242 hr = IXmlReader_MoveToElement(
reader);
256 broken_state =
FALSE;
264#define TEST_READER_STATE(reader, state) test_read_state(reader, state, state, __LINE__)
265#define TEST_READER_STATE2(reader, state, brk) test_read_state(reader, state, brk, __LINE__)
267#define reader_value(a,b) _reader_value(__LINE__,a,b)
270 const WCHAR *
str = (
void*)0xdeadbeef;
281#define reader_name(a,b) _reader_name(__LINE__,a,b)
284 const WCHAR *
str = (
void*)0xdeadbeef;
295#define reader_prefix(a,b) _reader_prefix(__LINE__,a,b)
298 const WCHAR *
str = (
void*)0xdeadbeef;
309#define reader_namespace(a,b) _reader_namespace(__LINE__,a,b)
312 const WCHAR *
str = (
void*)0xdeadbeef;
323#define reader_qname(a,b) _reader_qname(a,b,__LINE__)
326 const WCHAR *
str = (
void*)0xdeadbeef;
337#define read_value_char(a,b) _read_value_char(a,b,__LINE__)
347 ok_(__FILE__,
line)(
c == expected_char,
"got %x\n",
c);
366 IUnknown_AddRef(iface);
412 *ppObj = &
input->IUnknown_iface;
443 static const char xml[] =
"<!-- comment -->";
451 *
pread =
sizeof(xml) / 2;
458 ok(0,
"unexpected call\n");
478 IXmlResolver_AddRef(iface);
499 ok(0,
"unexpected call\n");
534 hr = IUnknown_QueryInterface(unk, &IID_IXmlReader, (
void **)&
reader);
537 IXmlReader_Release(
reader);
538 IUnknown_Release(unk);
542 IXmlReader_Release(
reader);
550 hr = IXmlReader_GetNodeType(
reader, &nodetype);
561 resolver = (
void*)0xdeadbeef;
564 ok(resolver ==
NULL,
"got %p\n", resolver);
576 IXmlResolver_Release(resolver);
609 IUnknown_Release(
input);
611 IXmlReader_Release(
reader);
633 ok(
ref == 2,
"Expected 2, got %ld.\n",
ref);
638 hr = IUnknown_QueryInterface(reader_input, &IID_IStream, (
void**)&stream2);
641 hr = IUnknown_QueryInterface(reader_input, &IID_ISequentialStream, (
void**)&stream2);
646 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
653 ref = IUnknown_AddRef(reader_input);
654 ok(
ref == 2,
"Expected 2, got %ld.\n",
ref);
655 IUnknown_Release(reader_input);
657 hr = IXmlReader_SetInput(
reader, reader_input);
663 hr = IXmlReader_GetNodeType(
reader, &nodetype);
668 ref = IUnknown_AddRef(reader_input);
669 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
670 IUnknown_Release(reader_input);
673 ok(
ref == 4,
"Expected 4, got %ld.\n",
ref);
682 IXmlReader_Release(
reader);
685 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
688 ref = IUnknown_AddRef(reader_input);
689 ok(
ref == 2,
"Expected 2, got %ld.\n",
ref);
690 IUnknown_Release(reader_input);
697 hr = IUnknown_QueryInterface(reader_input, &IID_IXmlReaderInput, (
void**)&
obj);
699 ref = IUnknown_AddRef(reader_input);
700 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
701 IUnknown_Release(reader_input);
703 IUnknown_Release(reader_input);
704 IUnknown_Release(reader_input);
714 ok(
ref == 2,
"Expected 2, got %ld.\n",
ref);
715 IUnknown_Release(
input);
721 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
722 IUnknown_Release(
input);
728 ref = IUnknown_AddRef(reader_input);
729 ok(
ref == 2,
"Expected 2, got %ld.\n",
ref);
730 IUnknown_Release(reader_input);
732 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
733 IUnknown_Release(
input);
734 hr = IXmlReader_SetInput(
reader, reader_input);
741 ok(
ref == 3,
"Expected 3, got %ld.\n",
ref);
742 IUnknown_Release(
input);
744 ref = IUnknown_AddRef(reader_input);
746 "Expected 3, got %ld.\n",
ref);
747 IUnknown_Release(reader_input);
750 hr = IXmlReader_SetInput(
reader, reader_input);
761 hr = IXmlReader_SetInput(reader2, reader_input);
765 IXmlReader_Release(reader2);
766 IXmlReader_Release(
reader);
768 IUnknown_Release(reader_input);
773 IUnknown_Release(reader_input);
775 IUnknown_Release(
input);
797 hr = IXmlReader_Read(
reader, &nodetype);
804 hr = IXmlReader_Read(
reader, &nodetype);
813 hr = IXmlReader_Read(
reader, &nodetype);
818 IXmlReader_Release(
reader);
826 IXmlReader_GetDepth(
reader, &
d);
834#define TEST_DEPTH(reader, depth) test_reader_depth(reader, depth, ~0u, __LINE__)
835#define TEST_DEPTH2(reader, depth, brk) test_reader_depth(reader, depth, brk, __LINE__)
845 { {
'v',
'e',
'r',
's',
'i',
'o',
'n',0}, {
'1',
'.',
'0',0} },
846 { {
'e',
'n',
'c',
'o',
'd',
'i',
'n',
'g',0}, {
'U',
'T',
'F',
'-',
'8',0} },
847 { {
's',
't',
'a',
'n',
'd',
'a',
'l',
'o',
'n',
'e',0}, {
'y',
'e',
's',0} }
870 hr = IXmlReader_MoveToElement(
reader);
873 hr = IXmlReader_MoveToNextAttribute(
reader);
876 hr = IXmlReader_MoveToFirstAttribute(
reader);
906 hr = IXmlReader_MoveToNextAttribute(
reader);
914 hr = IXmlReader_MoveToFirstAttribute(
reader);
939 hr = IXmlReader_MoveToNextAttribute(
reader);
978 ok(!
ret,
"element should not be empty\n");
995 hr = IXmlReader_MoveToNextAttribute(
reader);
1006 ret = IXmlReader_IsEmptyElement(
reader);
1007 ok(
ret,
"element should be empty\n");
1043 IXmlReader_Release(
reader);
1058 {
"<!-- comment -->",
L"",
L" comment ",
S_OK },
1059 {
"<!-- - comment-->",
L"",
L" - comment",
S_OK },
1067 static const char *teststr =
"<a>text<!-- comment --></a>";
1096 ok(*
value != 0,
"Expected node value\n");
1107 if (
test->hr_broken)
1110 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1138 IXmlReader_Release(
reader);
1143 {
"<?pi?>",
L"pi",
L"",
S_OK },
1144 {
"<?pi ?>",
L"pi",
L"",
S_OK },
1145 {
"<?pi ?>",
L"pi",
L"",
S_OK },
1146 {
"<?pi pi data?>",
L"pi",
L"pi data",
S_OK },
1147 {
"<?pi pi data ?>",
L"pi",
L"pi data ",
S_OK },
1148 {
"<?pi data ?>",
L"pi",
L"data ",
S_OK },
1152 {
"<?xml-stylesheet ?>",
L"xml-stylesheet",
L"",
S_OK },
1173 if (
test->hr_broken)
1176 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1200 IXmlReader_Release(
reader);
1270 IXmlReader_Release(
reader);
1274 "<!DOCTYPE testdtd PUBLIC \"pubid\" \"externalid uri\" >";
1299 hr = IXmlReader_MoveToFirstAttribute(
reader);
1331 IXmlReader_Release(
reader);
1335 "<!DOCTYPE testdtd SYSTEM \"externalid uri\" >"
1361 hr = IXmlReader_MoveToFirstAttribute(
reader);
1386 IXmlReader_Release(
reader);
1391 {
"<a/>",
L"a",
L"",
S_OK },
1392 {
"<a />",
L"a",
L"",
S_OK },
1396 {
"<a>",
L"a",
L"",
S_OK },
1397 {
"<a >",
L"a",
L"",
S_OK },
1398 {
"<a \r \t\n>",
L"a",
L"",
S_OK },
1408 static const char stag[] =
1413 "<d attr4=\"_d\"></d>"
1416 static const UINT depths[] = { 0, 1, 2, 2, 2, 3, 2, 1 };
1432 if (
test->hr_broken)
1436 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1472 ok(
depth == depths[
i],
"%u: got depth %u, expected %u\n",
i,
depth, depths[
i]);
1493 hr = IXmlReader_GetQualifiedName(
reader, &qname,
NULL);
1495 ok(qname !=
NULL,
"got %p\n", qname);
1497 ok(
local == qname,
"expected same pointer\n");
1522 hr = IXmlReader_MoveToFirstAttribute(
reader);
1531 ok(
depth == depths[
i] + 1,
"%u: got depth %u, expected %u\n",
i,
depth, depths[
i] + 1);
1539 ok(
depth == depths[
i],
"%u: got depth %u, expected %u\n",
i,
depth, depths[
i]);
1557 IXmlReader_Release(
reader);
1589 value = (
void*)0xdeadbeef;
1595 IXmlReader_Release(
reader);
1625 hr = IXmlReader_ReadValueChunk(
reader, &
b, 1, &
c);
1627 ok(
c == 0,
"got %u\n",
c);
1628 ok(
b == 0,
"got %x\n",
b);
1633 ok(!
c,
"c = %u\n",
c);
1643 ok(!
c,
"c = %u\n",
c);
1649 ok(
c == 10,
"got %u\n",
c);
1650 ok(
buf[
c] == 0xcccc,
"buffer overflow\n");
1658 ok(!
c,
"got %u\n",
c);
1666 hr = IXmlReader_ReadValueChunk(
reader, &
b, 1, &
c);
1668 ok(
c == 0,
"got %u\n",
c);
1669 ok(
b == 0xffff,
"got %x\n",
b);
1673 IXmlReader_Release(
reader);
1678 {
"<a><![CDATA[ ]]data ]]></a>",
L"",
L" ]]data ",
S_OK },
1679 {
"<a><![CDATA[<![CDATA[ data ]]]]></a>",
L"",
L"<![CDATA[ data ]]",
S_OK },
1680 {
"<a><![CDATA[\n \r\n \n\n ]]></a>",
L"",
L"\n \n \n\n ",
S_OK,
S_OK },
1681 {
"<a><![CDATA[\r \r\r\n \n\n ]]></a>",
L"",
L"\n \n\n \n\n ",
S_OK,
S_OK },
1682 {
"<a><![CDATA[\r\r \n\r \r \n\n ]]></a>",
L"",
L"\n\n \n\n \n \n\n ",
S_OK },
1711 if (
test->hr_broken)
1714 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1748 IXmlReader_Release(
reader);
1753 {
"<a>simple text</a>",
L"",
L"simple text",
S_OK },
1755 {
"<a>\n \r\n \n\n text</a>",
L"",
L"\n \n \n\n text",
S_OK,
S_OK },
1756 {
"<a>\r \r\r\n \n\n text</a>",
L"",
L"\n \n\n \n\n text",
S_OK,
S_OK },
1784 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1818 IXmlReader_Release(
reader);
1827 {
"<a></a>",
FALSE },
1852 ret = IXmlReader_IsEmptyElement(
reader);
1864 ret = IXmlReader_IsEmptyElement(
reader);
1865 ok(
ret,
"Unexpected empty flag %d.\n",
ret);
1867 hr = IXmlReader_MoveToFirstAttribute(
reader);
1872 ret = IXmlReader_IsEmptyElement(
reader);
1873 ok(!
ret,
"Unexpected empty flag %d.\n",
ret);
1875 IXmlReader_Release(
reader);
1880 {
"<a attr1=\"attrvalue\"/>",
L"attr1",
L"attrvalue",
S_OK },
1881 {
"<a attr1=\"a\'\'ttrvalue\"/>",
L"attr1",
L"a\'\'ttrvalue",
S_OK },
1882 {
"<a attr1=\'a\"ttrvalue\'/>",
L"attr1",
L"a\"ttrvalue",
S_OK },
1883 {
"<a attr1=\' \'/>",
L"attr1",
L" ",
S_OK },
1884 {
"<a attr1=\" \"/>",
L"attr1",
L" ",
S_OK },
1885 {
"<a attr1=\"\r\n \r \n \t\n\r\"/>",
L"attr1",
L" ",
S_OK },
1886 {
"<a attr1=\" val \"/>",
L"attr1",
L" val ",
S_OK },
1887 {
"<a attr1=\"\r\n\tval\n\"/>",
L"attr1",
L" val ",
S_OK },
1888 {
"<a attr1=\"val \"/>",
L"attr1",
L"val ",
S_OK },
1889 {
"<a attr1=\"val \"/>",
L"attr1",
L"val ",
S_OK },
1890 {
"<a attr1=\"<>&'"\"/>",
L"attr1",
L"<>&\'\"",
S_OK },
1920 if (
test->hr_broken)
1923 ok(
hr ==
test->hr,
"Unexpected hr %#lx, for %s.\n",
hr,
test->xml);
1935 hr = IXmlReader_MoveToFirstAttribute(
reader);
1954 IXmlReader_Release(
reader);
1969 ok(
value == 256,
"Unexpected default max depth value %Id.\n",
value);
1980 ok(
value == 0,
"Unexpected max depth value %Id.\n",
value);
1982 IXmlReader_Release(
reader);
1990 const WCHAR *prefix1;
1991 const WCHAR *prefix2;
1992 const WCHAR *prefix3;
1995 {
"<b xmlns=\"defns\" xml:a=\"a ns\"/>",
L"",
L"",
L"xml" },
1996 {
"<c:b xmlns:c=\"c ns\" xml:a=\"a ns\"/>",
L"c",
L"xmlns",
L"xml" },
2016 hr = IXmlReader_MoveToFirstAttribute(
reader);
2038 IXmlReader_Release(
reader);
2049 {
"<a xmlns=\"defns a\"><b xmlns=\"defns b\"><c xmlns=\"defns c\"/></b></a>",
2050 {
L"defns a",
L"defns b",
L"defns c",
L"defns b",
L"defns a" }},
2051 {
"<r:a xmlns=\"defns a\" xmlns:r=\"ns r\"/>",
2053 {
"<r:a xmlns=\"defns a\" xmlns:r=\"ns r\"><b/></r:a>",
2054 {
L"ns r",
L"defns a",
L"ns r" }},
2055 {
"<a xmlns=\"defns a\" xmlns:r=\"ns r\"><r:b/></a>",
2056 {
L"defns a",
L"ns r",
L"defns a" }},
2057 {
"<a><b><c/></b></a>",
2058 {
L"",
L"",
L"",
L"",
L"" }},
2063 {
"<a><![CDATA[data]]></a>",
2065 {
"<?xml version=\"1.0\" ?><a/>",
2069 {
"<a><!-- comment --></a>",
2103 ok(
local !=
NULL,
"Unexpected NULL local name pointer\n");
2107 hr = IXmlReader_GetQualifiedName(
reader, &qname, &length2);
2109 ok(qname !=
NULL,
"Unexpected NULL qualified name pointer\n");
2116 ok(*
local != 0,
"Unexpected empty local name\n");
2117 ok(
length > 0,
"Unexpected local name length\n");
2119 ok(*qname != 0,
"Unexpected empty qualified name\n");
2120 ok(length2 > 0,
"Unexpected qualified name length\n");
2130 IXmlReader_Release(
reader);
2135 static const char testA[] =
"<a b=\"c\">dză></a>";
2136 static const WCHAR chardataW[] = {0x01f3,0x0103,
'>',0};
2167 IXmlReader_Release(
reader);
2172 static const struct encoding_testW
2178 { {
'<',
'?',
'p',
'i',
' ',
'?',
'>',0 } },
2179 { {
'<',
'!',
'-',
'-',
' ',
'c',
'-',
'-',
'>',0 } },
2180 { { 0xfeff,
'<',
'a',
'/',
'>',0 } },
2181 { {
'<',
'a',
'/',
'>',0 } },
2183 static const char *encoding_testsA[] =
2220 ok(
hr ==
S_OK,
"%u: unexpected hr %#lx.\n",
i,
hr);
2226 IXmlReader_Release(
reader);
2234 ok(IXmlReader_IsEOF(
reader) ==
eof,
"Unexpected IsEOF() result\n");
2274 IXmlReader_Release(
reader);
2298 IXmlReader_Release(
reader);
2303 static const char *xml =
2370 hr = IXmlReader_MoveToFirstAttribute(
reader);
2377 hr = IXmlReader_Read(
reader, &nodetype);
2382 hr = IXmlReader_Read(
reader, &nodetype);
2401 IXmlReader_Release(
reader);
2406 static const char *xml =
"<c:a xmlns:c=\"nsdef c\" b=\"attr b\">\n</c:a>";
2425 hr = IXmlReader_GetLinePosition(
reader, &position);
2427 ok(position == 0,
"got %u\n", position);
2430 hr = IXmlReader_GetLineNumber(
reader, &position);
2432 ok(position == 0,
"got %u\n", position);
2467 IXmlReader_Release(
reader);
2472 const WCHAR *
ns, *nsq, *
empty, *xmlns_ns, *xmlns_name, *
name, *
p, *
q, *xml, *
ptr, *
value;
2492 win_skip(
"attr value is different than namespace pointer, assuming old xmllite\n");
2493 IXmlReader_Release(
reader);
2496 ok(
ns ==
ptr,
"ns != value\n");
2519 set_input_string(
reader,
"<elem xmlns:p=\"myns\" xmlns:q=\"mynsq\"><p:elem2 q:attr=\"\"></p:elem2></elem>");
2573 ok(
ns+1 ==
p,
"ns+1 != p\n");
2587 IXmlReader_Release(
reader);
2592 static const char *xml =
"<a><elem xmlns=\"myns\" a=\"value a\" b=\"value b\" xmlns:ns=\"ns uri\" "
2593 "ns:c=\"value c\" c=\"value c2\"/></a>";
2594 static const WCHAR xmlns_uriW[] =
L"http://www.w3.org/2000/xmlns/";
2621 hr = IXmlReader_MoveToAttributeByName(
reader,
NULL, xmlns_uriW);
2624 hr = IXmlReader_MoveToAttributeByName(
reader,
L"", xmlns_uriW);
2627 hr = IXmlReader_MoveToAttributeByName(
reader,
L"xmlns",
NULL);
2630 hr = IXmlReader_MoveToAttributeByName(
reader,
L"xmlns", xmlns_uriW);
2645 hr = IXmlReader_MoveToAttributeByName(
reader,
L"a",
L"myns");
2651 hr = IXmlReader_MoveToAttributeByName(
reader,
L"ns", xmlns_uriW);
2656 hr = IXmlReader_MoveToAttributeByName(
reader,
L"b",
L"");
2666 hr = IXmlReader_MoveToAttributeByName(
reader,
L"c",
L"ns uri");
2671 IXmlReader_Release(
reader);
#define InterlockedIncrement
#define InterlockedDecrement
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL delete_on_release, IStream **stream)
static const WCHAR empty[1]
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP size_t __cdecl strlen(const char *)
HRESULT WINAPI CreateXmlReader(REFIID riid, void **obj, IMalloc *imalloc)
HRESULT WINAPI CreateXmlReaderInputWithEncodingCodePage(IUnknown *stream, IMalloc *imalloc, UINT codepage, BOOL hint, const WCHAR *base_uri, IXmlReaderInput **input)
HRESULT WINAPI CreateXmlReaderInputWithEncodingName(IUnknown *stream, IMalloc *imalloc, const WCHAR *encoding, BOOL hint, const WCHAR *base_uri, IXmlReaderInput **input)
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble q
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static ERESOURCE GlobalLock
#define todo_wine_if(is_todo)
#define memcpy(s1, s2, n)
static const uri_properties uri_tests[]
ssize_t pread(int fd, void *buf, size_t count, off_t offset)
static void test_read_element(void)
static void test_reader_pos(IXmlReader *reader, UINT line, UINT pos, UINT line_broken, UINT pos_broken, int _line_)
static void test_readerinput(void)
static void test_prefix(void)
static HRESULT WINAPI resolver_ResolveUri(IXmlResolver *iface, const WCHAR *base_uri, const WCHAR *public_id, const WCHAR *system_id, IUnknown **input)
static const WCHAR * _reader_prefix(unsigned line, IXmlReader *reader, const WCHAR *expect)
static const IID * setinput_full_old[]
static HRESULT testinput_createinstance(void **ppObj)
static void test_eof_state(IXmlReader *reader, BOOL eof)
static ULONG WINAPI testinput_AddRef(IUnknown *iface)
static HRESULT WINAPI teststream_QueryInterface(ISequentialStream *iface, REFIID riid, void **obj)
static const WCHAR * _reader_qname(IXmlReader *reader, const WCHAR *expect, unsigned line)
static const char test_system_dtd[]
static void test_read_public_dtd(void)
#define reader_name(a, b)
static struct test_entry text_tests[]
#define read_value_char(a, b)
static void test_reader_state(void)
#define TEST_READER_STATE(reader, state)
#define TEST_DEPTH2(reader, depth, brk)
#define ok_iids(got, exp, brk, todo)
static void test_namespaceuri(void)
static const WCHAR * _reader_name(unsigned line, IXmlReader *reader, const WCHAR *expect)
static void test_read_charref(void)
#define reader_value(a, b)
static HRESULT WINAPI teststream_Write(ISequentialStream *iface, const void *pv, ULONG cb, ULONG *written)
static HRESULT WINAPI testinput_QueryInterface(IUnknown *iface, REFIID riid, void **ppvObj)
static struct test_entry cdata_tests[]
static void test_endoffile(void)
static void test_read_full(void)
#define TEST_DEPTH(reader, depth)
static const char xmldecl_full[]
static int stream_readcall
#define reader_namespace(a, b)
static ULONG WINAPI teststream_AddRef(ISequentialStream *iface)
static const WCHAR * _reader_value(unsigned line, IXmlReader *reader, const WCHAR *expect)
static void test_encoding_detection(void)
static HRESULT WINAPI resolver_QI(IXmlResolver *iface, REFIID riid, void **obj)
static const char misc_test_xml[]
static void _read_node(unsigned line, IXmlReader *reader, XmlNodeType expected_type)
#define TEST_READER_POSITION(reader, line, pos)
static void test_string_pointers(void)
static void test_attribute_by_name(void)
struct _testinput testinput
static void test_read_system_dtd(void)
static const ISequentialStreamVtbl teststreamvtbl
#define TEST_READER_STATE2(reader, state, brk)
static void _read_value_char(IXmlReader *reader, WCHAR expected_char, unsigned line)
static void _next_attribute(unsigned line, IXmlReader *reader)
#define reader_prefix(a, b)
static ULONG WINAPI resolver_AddRef(IXmlResolver *iface)
static const IID * empty_seq[]
static const char * type_to_str(XmlNodeType type)
static const struct IUnknownVtbl testinput_vtbl
static ULONG WINAPI testinput_Release(IUnknown *iface)
static IStream * create_stream_on_data(const void *data, unsigned int size)
static const char test_public_dtd[]
static const IID * setinput_readerinput[]
static const char xmldecl_short[]
static const WCHAR * _reader_namespace(unsigned line, IXmlReader *reader, const WCHAR *expect)
static void test_isemptyelement(void)
static ULONG WINAPI resolver_Release(IXmlResolver *iface)
#define set_input_string(a, b)
static ULONG WINAPI teststream_Release(ISequentialStream *iface)
static const IID * setinput_full[]
static HRESULT WINAPI teststream_Read(ISequentialStream *iface, void *pv, ULONG cb, ULONG *pread)
static void test_reader_position(void)
static const char * state_to_str(XmlReadState state)
static void test_reader_depth(IXmlReader *reader, UINT depth, UINT brk, int line)
static struct nodes_test misc_test
static void test_read_state(IXmlReader *reader, XmlReadState expected, XmlReadState exp_broken, int line)
static void test_read_cdata(void)
static void test_reader_properties(void)
static void test_read_pi(void)
static void test_reader_create(void)
#define reader_qname(a, b)
static void _move_to_element(unsigned line, IXmlReader *reader)
static void test_read_pending(void)
static IXmlResolver testresolver
#define move_to_element(a)
#define next_attribute(a)
static void test_read_text(void)
static void test_max_element_depth(void)
#define TEST_READER_POSITION2(reader, line, pos, line_broken, pos_broken)
static struct test_entry pi_tests[]
static input_iids_t input_iids
static void test_read_comment(void)
static struct test_entry attributes_tests[]
static void test_read_xmldeclaration(void)
static struct test_entry comment_tests[]
static void test_read_attribute(void)
static const IXmlResolverVtbl resolvervtbl
static void test_readvaluechunk(void)
static void ok_iids_(const input_iids_t *iids, const IID **expected, const IID **exp_broken, BOOL todo, int line)
static struct test_entry_empty empty_element_tests[]
static void _set_input_string(unsigned line, IXmlReader *reader, const char *xml)
static struct test_entry element_tests[]
static testinput * impl_from_IUnknown(IUnknown *iface)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
struct nodes_test::@2023 nodes[20]
Character const *const prefix
#define CONTAINING_RECORD(address, type, field)
@ XmlReadState_Interactive
@ XmlReaderProperty_MultiLanguage
@ XmlReaderProperty_DtdProcessing
@ XmlReaderProperty_XmlResolver
@ XmlReaderProperty_MaxElementDepth
@ XmlReaderProperty_ReadState
@ XmlNodeType_ProcessingInstruction
@ XmlNodeType_XmlDeclaration
@ XmlNodeType_DocumentType