2 // System.Xml.XmlReaderCommonTests
\r
5 // Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
\r
7 // (C) 2003 Atsushi Enomoto
\r
8 // Note: Most of testcases are moved from XmlTextReaderTests.cs and
\r
9 // XmlNodeReaderTests.cs.
\r
16 using System.Xml.XPath;
\r
18 using NUnit.Framework;
\r
20 namespace MonoTests.System.Xml
\r
23 public class XmlReaderTests : Assertion
\r
26 public void GetReady ()
\r
28 document = new XmlDocument ();
\r
29 document.LoadXml (xml1);
\r
32 XmlDocument document;
\r
33 const string xml1 = "<root attr1='value1'><child /></root>";
\r
34 const string xml2 = "<root><foo/><bar>test.</bar></root>";
\r
35 const string xml3 = "<root> test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>";
\r
36 const string xml4 = "<root>test of <b>mixed</b> string.</root>";
\r
40 // copy from XmlTextReaderTests
\r
41 private void AssertStartDocument (XmlReader xmlReader)
\r
43 Assert (xmlReader.ReadState == ReadState.Initial);
\r
44 Assert (xmlReader.NodeType == XmlNodeType.None);
\r
45 Assert (xmlReader.Depth == 0);
\r
46 Assert (!xmlReader.EOF);
\r
49 private void AssertNode (
\r
50 XmlReader xmlReader,
\r
51 XmlNodeType nodeType,
\r
53 bool isEmptyElement,
\r
57 string namespaceURI,
\r
61 Assert ("Read() return value", xmlReader.Read ());
\r
62 Assert ("ReadState", xmlReader.ReadState == ReadState.Interactive);
\r
63 Assert ("!EOF", !xmlReader.EOF);
\r
64 AssertNodeValues (xmlReader, nodeType, depth, isEmptyElement, name, prefix, localName, namespaceURI, value, attributeCount);
\r
67 private void AssertNodeValues (
\r
68 XmlReader xmlReader,
\r
69 XmlNodeType nodeType,
\r
71 bool isEmptyElement,
\r
75 string namespaceURI,
\r
79 AssertEquals ("NodeType", nodeType, xmlReader.NodeType);
\r
80 AssertEquals ("Depth", depth, xmlReader.Depth);
\r
81 AssertEquals ("IsEmptyElement", isEmptyElement, xmlReader.IsEmptyElement);
\r
83 AssertEquals ("name", name, xmlReader.Name);
\r
85 AssertEquals ("prefix", prefix, xmlReader.Prefix);
\r
87 AssertEquals ("localName", localName, xmlReader.LocalName);
\r
89 AssertEquals ("namespaceURI", namespaceURI, xmlReader.NamespaceURI);
\r
91 AssertEquals ("hasValue", (value != String.Empty), xmlReader.HasValue);
\r
93 AssertEquals ("Value", value, xmlReader.Value);
\r
95 AssertEquals ("hasAttributes", attributeCount > 0, xmlReader.HasAttributes);
\r
97 AssertEquals ("attributeCount", attributeCount, xmlReader.AttributeCount);
\r
100 private void AssertAttribute (
\r
101 XmlReader xmlReader,
\r
105 string namespaceURI,
\r
108 AssertEquals ("value", value, xmlReader [name]);
\r
110 Assert (xmlReader.GetAttribute (name) == value);
\r
112 if (namespaceURI != String.Empty) {
\r
113 Assert (xmlReader[localName, namespaceURI] == value);
\r
114 Assert (xmlReader.GetAttribute (localName, namespaceURI) == value);
\r
118 private void AssertEndDocument (XmlReader xmlReader)
\r
120 Assert ("could read", !xmlReader.Read ());
\r
121 AssertEquals ("NodeType is not XmlNodeType.None", XmlNodeType.None, xmlReader.NodeType);
\r
122 AssertEquals ("Depth is not 0", 0, xmlReader.Depth);
\r
123 AssertEquals ("ReadState is not ReadState.EndOfFile", ReadState.EndOfFile, xmlReader.ReadState);
\r
124 Assert ("not EOF", xmlReader.EOF);
\r
126 xmlReader.Close ();
\r
127 AssertEquals ("ReadState is not ReadState.Cosed", ReadState.Closed, xmlReader.ReadState);
\r
130 private delegate void TestMethod (XmlReader reader);
\r
132 private void RunTest (string xml, TestMethod method)
\r
134 xtr = new XmlTextReader (new StringReader (xml));
\r
137 document.XmlResolver = null;
\r
138 document.LoadXml (xml);
\r
139 xnr = new XmlNodeReader (document);
\r
142 xtr = new XmlTextReader (new StringReader (xml));
\r
143 XmlValidatingReader xvr = new XmlValidatingReader (xtr);
\r
152 public void InitialState ()
\r
154 RunTest (xml1, new TestMethod (InitialState));
\r
157 private void InitialState (XmlReader reader)
\r
159 AssertEquals ("Depth", 0, reader.Depth);
\r
160 AssertEquals ("EOF", false, reader.EOF);
\r
161 AssertEquals ("HasValue", false, reader.HasValue);
\r
162 AssertEquals ("IsEmptyElement", false, reader.IsEmptyElement);
\r
163 AssertEquals ("LocalName", String.Empty, reader.LocalName);
\r
164 AssertEquals ("NodeType", XmlNodeType.None, reader.NodeType);
\r
165 AssertEquals ("ReadState", ReadState.Initial, reader.ReadState);
\r
169 public void Read ()
\r
171 RunTest (xml1, new TestMethod (Read));
\r
174 public void Read (XmlReader reader)
\r
177 AssertEquals ("<root>.NodeType", XmlNodeType.Element, reader.NodeType);
\r
178 AssertEquals ("<root>.Name", "root", reader.Name);
\r
179 AssertEquals ("<root>.ReadState", ReadState.Interactive, reader.ReadState);
\r
180 AssertEquals ("<root>.Depth", 0, reader.Depth);
\r
184 AssertEquals ("<child/>.Depth", 1, reader.Depth);
\r
185 AssertEquals ("<child/>.NodeType", XmlNodeType.Element, reader.NodeType);
\r
186 AssertEquals ("<child/>.Name", "child", reader.Name);
\r
189 AssertEquals ("</root>.Depth", 0, reader.Depth);
\r
190 AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
191 AssertEquals ("</root>.Name", "root", reader.Name);
\r
194 AssertEquals ("end.EOF", true, reader.EOF);
\r
195 AssertEquals ("end.NodeType", XmlNodeType.None, reader.NodeType);
\r
199 public void ReadEmptyElement ()
\r
201 RunTest (xml2, new TestMethod (ReadEmptyElement));
\r
204 public void ReadEmptyElement (XmlReader reader)
\r
206 reader.Read (); // root
\r
207 AssertEquals (false, reader.IsEmptyElement);
\r
208 reader.Read (); // foo
\r
209 AssertEquals ("foo", reader.Name);
\r
210 AssertEquals (true, reader.IsEmptyElement);
\r
211 reader.Read (); // bar
\r
212 AssertEquals ("bar", reader.Name);
\r
213 AssertEquals (false, reader.IsEmptyElement);
\r
217 public void ReadStringFromElement ()
\r
219 RunTest (xml3, new TestMethod (ReadStringFromElement));
\r
222 public void ReadStringFromElement (XmlReader reader)
\r
224 // Note: ReadString() test works only when the reader is
\r
225 // positioned at the container element.
\r
226 // In case the reader is positioned at the first
\r
227 // character node, XmlTextReader and XmlNodeReader works
\r
231 string s = reader.ReadString ();
\r
232 AssertEquals ("readString.1.ret_val", " test of ", s);
\r
233 AssertEquals ("readString.1.Name", "b", reader.Name);
\r
234 s = reader.ReadString ();
\r
235 AssertEquals ("readString.2.ret_val", "mixed", s);
\r
236 AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
237 s = reader.ReadString (); // never proceeds.
\r
238 AssertEquals ("readString.3.ret_val", String.Empty, s);
\r
239 AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
241 AssertEquals ("readString.4.NodeType", XmlNodeType.Text, reader.NodeType);
\r
242 AssertEquals ("readString.4.Value", " string.", reader.Value);
\r
243 s = reader.ReadString (); // reads the same Text node.
\r
244 AssertEquals ("readString.5.ret_val", " string. cdata string.", s);
\r
245 AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
249 public void ReadInnerXml ()
\r
251 const string xml = "<root><foo>test of <b>mixed</b> string.</foo><bar /></root>";
\r
252 RunTest (xml, new TestMethod (ReadInnerXml));
\r
255 public void ReadInnerXml (XmlReader reader)
\r
259 AssertEquals ("initial.ReadState", ReadState.Interactive, reader.ReadState);
\r
260 AssertEquals ("initial.EOF", false, reader.EOF);
\r
261 AssertEquals ("initial.NodeType", XmlNodeType.Element, reader.NodeType);
\r
262 string s = reader.ReadInnerXml ();
\r
263 AssertEquals ("read_all", "test of <b>mixed</b> string.", s);
\r
264 AssertEquals ("after.Name", "bar", reader.Name);
\r
265 AssertEquals ("after.NodeType", XmlNodeType.Element, reader.NodeType);
\r
270 public void EmptyElement ()
\r
272 RunTest ("<foo/>", new TestMethod (EmptyElement));
\r
275 public void EmptyElement (XmlReader xmlReader)
\r
278 AssertStartDocument (xmlReader);
\r
281 xmlReader, // xmlReader
\r
282 XmlNodeType.Element, // nodeType
\r
284 true, // isEmptyElement
\r
286 String.Empty, // prefix
\r
287 "foo", // localName
\r
288 String.Empty, // namespaceURI
\r
289 String.Empty, // value
\r
290 0 // attributeCount
\r
293 AssertEndDocument (xmlReader);
\r
297 public void NestedEmptyTag ()
\r
299 string xml = "<foo><bar/></foo>";
\r
300 RunTest (xml, new TestMethod (NestedEmptyTag));
\r
303 public void NestedEmptyTag (XmlReader xmlReader)
\r
305 AssertStartDocument (xmlReader);
\r
308 xmlReader, // xmlReader
\r
309 XmlNodeType.Element, // nodeType
\r
311 false, // isEmptyElement
\r
313 String.Empty, // prefix
\r
314 "foo", // localName
\r
315 String.Empty, // namespaceURI
\r
316 String.Empty, // value
\r
317 0 // attributeCount
\r
321 xmlReader, // xmlReader
\r
322 XmlNodeType.Element, // nodeType
\r
324 true, // isEmptyElement
\r
326 String.Empty, // prefix
\r
327 "bar", // localName
\r
328 String.Empty, // namespaceURI
\r
329 String.Empty, // value
\r
330 0 // attributeCount
\r
334 xmlReader, // xmlReader
\r
335 XmlNodeType.EndElement, // nodeType
\r
337 false, // isEmptyElement
\r
339 String.Empty, // prefix
\r
340 "foo", // localName
\r
341 String.Empty, // namespaceURI
\r
342 String.Empty, // value
\r
343 0 // attributeCount
\r
346 AssertEndDocument (xmlReader);
\r
350 public void NestedText ()
\r
352 string xml = "<foo>bar</foo>";
\r
353 RunTest (xml, new TestMethod (NestedText));
\r
356 public void NestedText (XmlReader xmlReader)
\r
358 AssertStartDocument (xmlReader);
\r
361 xmlReader, // xmlReader
\r
362 XmlNodeType.Element, // nodeType
\r
364 false, // isEmptyElement
\r
366 String.Empty, // prefix
\r
367 "foo", // localName
\r
368 String.Empty, // namespaceURI
\r
369 String.Empty, // value
\r
370 0 // attributeCount
\r
374 xmlReader, // xmlReader
\r
375 XmlNodeType.Text, // nodeType
\r
377 false, // isEmptyElement
\r
378 String.Empty, // name
\r
379 String.Empty, // prefix
\r
380 String.Empty, // localName
\r
381 String.Empty, // namespaceURI
\r
383 0 // attributeCount
\r
387 xmlReader, // xmlReader
\r
388 XmlNodeType.EndElement, // nodeType
\r
390 false, // isEmptyElement
\r
392 String.Empty, // prefix
\r
393 "foo", // localName
\r
394 String.Empty, // namespaceURI
\r
395 String.Empty, // value
\r
396 0 // attributeCount
\r
399 AssertEndDocument (xmlReader);
\r
403 public void EmptyElementWithAttributes ()
\r
405 string xml = @"<foo bar=""baz"" quux='quuux' x:foo='x-foo' xmlns:x = 'urn:xfoo' />";
\r
406 RunTest (xml, new TestMethod (EmptyElementWithAttributes ));
\r
409 public void EmptyElementWithAttributes (XmlReader xmlReader)
\r
412 AssertStartDocument (xmlReader);
\r
415 xmlReader, // xmlReader
\r
416 XmlNodeType.Element, // nodeType
\r
418 true, // isEmptyElement
\r
420 String.Empty, // prefix
\r
421 "foo", // localName
\r
422 String.Empty, // namespaceURI
\r
423 String.Empty, // value
\r
424 4 // attributeCount
\r
428 xmlReader, // xmlReader
\r
430 String.Empty, // prefix
\r
431 "bar", // localName
\r
432 String.Empty, // namespaceURI
\r
437 xmlReader, // xmlReader
\r
439 String.Empty, // prefix
\r
440 "quux", // localName
\r
441 String.Empty, // namespaceURI
\r
446 xmlReader, // xmlReader
\r
447 "notexist", // name
\r
448 String.Empty, // prefix
\r
449 "notexist", // localName
\r
450 String.Empty, // namespaceURI
\r
455 xmlReader, // xmlReader
\r
458 "foo", // localName
\r
459 "urn:xfoo", // namespaceURI
\r
464 xmlReader, // xmlReader
\r
467 "bar", // localName
\r
468 "urn:xfoo", // namespaceURI
\r
472 AssertEndDocument (xmlReader);
\r
476 public void ProcessingInstructionBeforeDocumentElement ()
\r
478 string xml = "<?foo bar?><baz/>";
\r
479 RunTest (xml, new TestMethod (ProcessingInstructionBeforeDocumentElement));
\r
482 public void ProcessingInstructionBeforeDocumentElement (XmlReader xmlReader)
\r
484 AssertStartDocument (xmlReader);
\r
487 xmlReader, // xmlReader
\r
488 XmlNodeType.ProcessingInstruction, // nodeType
\r
490 false, // isEmptyElement
\r
492 String.Empty, // prefix
\r
493 "foo", // localName
\r
494 String.Empty, // namespaceURI
\r
496 0 // attributeCount
\r
500 xmlReader, // xmlReader
\r
501 XmlNodeType.Element, // nodeType
\r
503 true, // isEmptyElement
\r
505 String.Empty, // prefix
\r
506 "baz", // localName
\r
507 String.Empty, // namespaceURI
\r
508 String.Empty, // value
\r
509 0 // attributeCount
\r
512 AssertEndDocument (xmlReader);
\r
516 public void CommentBeforeDocumentElement ()
\r
518 string xml = "<!--foo--><bar/>";
\r
519 RunTest (xml, new TestMethod (CommentBeforeDocumentElement));
\r
522 public void CommentBeforeDocumentElement (XmlReader xmlReader)
\r
524 AssertStartDocument (xmlReader);
\r
527 xmlReader, // xmlReader
\r
528 XmlNodeType.Comment, // nodeType
\r
530 false, // isEmptyElement
\r
531 String.Empty, // name
\r
532 String.Empty, // prefix
\r
533 String.Empty, // localName
\r
534 String.Empty, // namespaceURI
\r
536 0 // attributeCount
\r
540 xmlReader, // xmlReader
\r
541 XmlNodeType.Element, // nodeType
\r
543 true, // isEmptyElement
\r
545 String.Empty, // prefix
\r
546 "bar", // localName
\r
547 String.Empty, // namespaceURI
\r
548 String.Empty, // value
\r
549 0 // attributeCount
\r
552 AssertEndDocument (xmlReader);
\r
556 public void PredefinedEntities ()
\r
558 string xml = "<foo><>&'"</foo>";
\r
559 RunTest (xml, new TestMethod (PredefinedEntities));
\r
562 public void PredefinedEntities (XmlReader xmlReader)
\r
564 AssertStartDocument (xmlReader);
\r
567 xmlReader, // xmlReader
\r
568 XmlNodeType.Element, // nodeType
\r
570 false, // isEmptyElement
\r
572 String.Empty, // prefix
\r
573 "foo", // localName
\r
574 String.Empty, // namespaceURI
\r
575 String.Empty, // value
\r
576 0 // attributeCount
\r
580 xmlReader, // xmlReader
\r
581 XmlNodeType.Text, // nodeType
\r
583 false, // isEmptyElement
\r
584 String.Empty, // name
\r
585 String.Empty, // prefix
\r
586 String.Empty, // localName
\r
587 String.Empty, // namespaceURI
\r
589 0 // attributeCount
\r
593 xmlReader, // xmlReader
\r
594 XmlNodeType.EndElement, // nodeType
\r
596 false, // isEmptyElement
\r
598 String.Empty, // prefix
\r
599 "foo", // localName
\r
600 String.Empty, // namespaceURI
\r
601 String.Empty, // value
\r
602 0 // attributeCount
\r
605 AssertEndDocument (xmlReader);
\r
609 public void CharacterReferences ()
\r
611 string xml = "<foo>FOO</foo>";
\r
612 RunTest (xml, new TestMethod (CharacterReferences));
\r
615 public void CharacterReferences (XmlReader xmlReader)
\r
617 AssertStartDocument (xmlReader);
\r
620 xmlReader, // xmlReader
\r
621 XmlNodeType.Element, // nodeType
\r
623 false, // isEmptyElement
\r
625 String.Empty, // prefix
\r
626 "foo", // localName
\r
627 String.Empty, // namespaceURI
\r
628 String.Empty, // value
\r
629 0 // attributeCount
\r
633 xmlReader, // xmlReader
\r
634 XmlNodeType.Text, // nodeType
\r
636 false, // isEmptyElement
\r
637 String.Empty, // name
\r
638 String.Empty, // prefix
\r
639 String.Empty, // localName
\r
640 String.Empty, // namespaceURI
\r
642 0 // attributeCount
\r
646 xmlReader, // xmlReader
\r
647 XmlNodeType.EndElement, // nodeType
\r
649 false, // isEmptyElement
\r
651 String.Empty, // prefix
\r
652 "foo", // localName
\r
653 String.Empty, // namespaceURI
\r
654 String.Empty, // value
\r
655 0 // attributeCount
\r
658 AssertEndDocument (xmlReader);
\r
662 public void PredefinedEntitiesInAttribute ()
\r
664 string xml = "<foo bar='<>&'"'/>";
\r
665 RunTest (xml, new TestMethod (PredefinedEntitiesInAttribute ));
\r
668 public void PredefinedEntitiesInAttribute (XmlReader xmlReader)
\r
670 AssertStartDocument (xmlReader);
\r
673 xmlReader, // xmlReader
\r
674 XmlNodeType.Element, // nodeType
\r
676 true, // isEmptyElement
\r
678 String.Empty, // prefix
\r
679 "foo", // localName
\r
680 String.Empty, // namespaceURI
\r
681 String.Empty, // value
\r
682 1 // attributeCount
\r
686 xmlReader, // xmlReader
\r
688 String.Empty, // prefix
\r
689 "bar", // localName
\r
690 String.Empty, // namespaceURI
\r
694 AssertEndDocument (xmlReader);
\r
698 public void CharacterReferencesInAttribute ()
\r
700 string xml = "<foo bar='FOO'/>";
\r
701 RunTest (xml, new TestMethod (CharacterReferencesInAttribute));
\r
704 public void CharacterReferencesInAttribute (XmlReader xmlReader)
\r
706 AssertStartDocument (xmlReader);
\r
709 xmlReader, // xmlReader
\r
710 XmlNodeType.Element, // nodeType
\r
712 true, // isEmptyElement
\r
714 String.Empty, // prefix
\r
715 "foo", // localName
\r
716 String.Empty, // namespaceURI
\r
717 String.Empty, // value
\r
718 1 // attributeCount
\r
722 xmlReader, // xmlReader
\r
724 String.Empty, // prefix
\r
725 "bar", // localName
\r
726 String.Empty, // namespaceURI
\r
730 AssertEndDocument (xmlReader);
\r
734 public void CDATA ()
\r
736 string xml = "<foo><![CDATA[<>&]]></foo>";
\r
737 RunTest (xml, new TestMethod (CDATA));
\r
740 public void CDATA (XmlReader xmlReader)
\r
742 AssertStartDocument (xmlReader);
\r
745 xmlReader, // xmlReader
\r
746 XmlNodeType.Element, // nodeType
\r
748 false, // isEmptyElement
\r
750 String.Empty, // prefix
\r
751 "foo", // localName
\r
752 String.Empty, // namespaceURI
\r
753 String.Empty, // value
\r
754 0 // attributeCount
\r
758 xmlReader, // xmlReader
\r
759 XmlNodeType.CDATA, // nodeType
\r
761 false, // isEmptyElement
\r
762 String.Empty, // name
\r
763 String.Empty, // prefix
\r
764 String.Empty, // localName
\r
765 String.Empty, // namespaceURI
\r
767 0 // attributeCount
\r
771 xmlReader, // xmlReader
\r
772 XmlNodeType.EndElement, // nodeType
\r
774 false, // isEmptyElement
\r
776 String.Empty, // prefix
\r
777 "foo", // localName
\r
778 String.Empty, // namespaceURI
\r
779 String.Empty, // value
\r
780 0 // attributeCount
\r
783 AssertEndDocument (xmlReader);
\r
787 public void EmptyElementInDefaultNamespace ()
\r
789 string xml = @"<foo xmlns='http://foo/' />";
\r
790 RunTest (xml, new TestMethod (EmptyElementInDefaultNamespace));
\r
793 public void EmptyElementInDefaultNamespace (XmlReader xmlReader)
\r
795 AssertStartDocument (xmlReader);
\r
798 xmlReader, // xmlReader
\r
799 XmlNodeType.Element, // nodeType
\r
801 true, // isEmptyElement
\r
803 String.Empty, // prefix
\r
804 "foo", // localName
\r
805 "http://foo/", // namespaceURI
\r
806 String.Empty, // value
\r
807 1 // attributeCount
\r
811 xmlReader, // xmlReader
\r
813 String.Empty, // prefix
\r
814 "xmlns", // localName
\r
815 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
816 "http://foo/" // value
\r
819 AssertEquals ("http://foo/", xmlReader.LookupNamespace (String.Empty));
\r
821 AssertEndDocument (xmlReader);
\r
825 public void ChildElementInNamespace ()
\r
827 string xml = @"<foo:bar xmlns:foo='http://foo/'><baz:quux xmlns:baz='http://baz/' /></foo:bar>";
\r
828 RunTest (xml, new TestMethod (ChildElementInNamespace));
\r
831 public void ChildElementInNamespace (XmlReader xmlReader)
\r
833 AssertStartDocument (xmlReader);
\r
836 xmlReader, // xmlReader
\r
837 XmlNodeType.Element, // nodeType
\r
839 false, // isEmptyElement
\r
842 "bar", // localName
\r
843 "http://foo/", // namespaceURI
\r
844 String.Empty, // value
\r
845 1 // attributeCount
\r
849 xmlReader, // xmlReader
\r
850 "xmlns:foo", // name
\r
852 "foo", // localName
\r
853 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
854 "http://foo/" // value
\r
857 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
860 xmlReader, // xmlReader
\r
861 XmlNodeType.Element, // nodeType
\r
863 true, // isEmptyElement
\r
864 "baz:quux", // name
\r
866 "quux", // localName
\r
867 "http://baz/", // namespaceURI
\r
868 String.Empty, // value
\r
869 1 // attributeCount
\r
873 xmlReader, // xmlReader
\r
874 "xmlns:baz", // name
\r
876 "baz", // localName
\r
877 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
878 "http://baz/" // value
\r
881 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
882 AssertEquals ("http://baz/", xmlReader.LookupNamespace ("baz"));
\r
885 xmlReader, // xmlReader
\r
886 XmlNodeType.EndElement, // nodeType
\r
888 false, // isEmptyElement
\r
891 "bar", // localName
\r
892 "http://foo/", // namespaceURI
\r
893 String.Empty, // value
\r
894 0 // attributeCount
\r
897 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
898 AssertNull (xmlReader.LookupNamespace ("baz"));
\r
900 AssertEndDocument (xmlReader);
\r
904 public void ChildElementInDefaultNamespace ()
\r
906 string xml = @"<foo:bar xmlns:foo='http://foo/'><baz xmlns='http://baz/' /></foo:bar>";
\r
907 RunTest (xml, new TestMethod (ChildElementInDefaultNamespace));
\r
910 public void ChildElementInDefaultNamespace (XmlReader xmlReader)
\r
912 AssertStartDocument (xmlReader);
\r
915 xmlReader, // xmlReader
\r
916 XmlNodeType.Element, // nodeType
\r
918 false, // isEmptyElement
\r
921 "bar", // localName
\r
922 "http://foo/", // namespaceURI
\r
923 String.Empty, // value
\r
924 1 // attributeCount
\r
928 xmlReader, // xmlReader
\r
929 "xmlns:foo", // name
\r
931 "foo", // localName
\r
932 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
933 "http://foo/" // value
\r
936 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
939 xmlReader, // xmlReader
\r
940 XmlNodeType.Element, // nodeType
\r
942 true, // isEmptyElement
\r
944 String.Empty, // prefix
\r
945 "baz", // localName
\r
946 "http://baz/", // namespaceURI
\r
947 String.Empty, // value
\r
948 1 // attributeCount
\r
952 xmlReader, // xmlReader
\r
954 String.Empty, // prefix
\r
955 "xmlns", // localName
\r
956 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
957 "http://baz/" // value
\r
960 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
961 AssertEquals ("http://baz/", xmlReader.LookupNamespace (String.Empty));
\r
964 xmlReader, // xmlReader
\r
965 XmlNodeType.EndElement, // nodeType
\r
967 false, // isEmptyElement
\r
970 "bar", // localName
\r
971 "http://foo/", // namespaceURI
\r
972 String.Empty, // value
\r
973 0 // attributeCount
\r
976 AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
978 AssertEndDocument (xmlReader);
\r
982 public void AttributeInNamespace ()
\r
984 string xml = @"<foo bar:baz='quux' xmlns:bar='http://bar/' />";
\r
985 RunTest (xml, new TestMethod (AttributeInNamespace));
\r
988 public void AttributeInNamespace (XmlReader xmlReader)
\r
990 AssertStartDocument (xmlReader);
\r
993 xmlReader, // xmlReader
\r
994 XmlNodeType.Element, // nodeType
\r
996 true, // isEmptyElement
\r
998 String.Empty, // prefix
\r
999 "foo", // localName
\r
1000 String.Empty, // namespaceURI
\r
1001 String.Empty, // value
\r
1002 2 // attributeCount
\r
1006 xmlReader, // xmlReader
\r
1007 "bar:baz", // name
\r
1009 "baz", // localName
\r
1010 "http://bar/", // namespaceURI
\r
1015 xmlReader, // xmlReader
\r
1016 "xmlns:bar", // name
\r
1017 "xmlns", // prefix
\r
1018 "bar", // localName
\r
1019 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
1020 "http://bar/" // value
\r
1023 AssertEquals ("http://bar/", xmlReader.LookupNamespace ("bar"));
\r
1025 AssertEndDocument (xmlReader);
\r
1029 public void MoveToElementFromAttribute ()
\r
1031 string xml = @"<foo bar=""baz"" />";
\r
1032 RunTest (xml, new TestMethod (MoveToElementFromAttribute));
\r
1035 public void MoveToElementFromAttribute (XmlReader xmlReader)
\r
1037 Assert (xmlReader.Read ());
\r
1038 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1039 Assert (xmlReader.MoveToFirstAttribute ());
\r
1040 AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);
\r
1041 Assert (xmlReader.MoveToElement ());
\r
1042 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1046 public void MoveToElementFromElement ()
\r
1048 string xml = @"<foo bar=""baz"" />";
\r
1049 RunTest (xml, new TestMethod (MoveToElementFromElement));
\r
1052 public void MoveToElementFromElement (XmlReader xmlReader)
\r
1054 Assert (xmlReader.Read ());
\r
1055 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1056 Assert (!xmlReader.MoveToElement ());
\r
1057 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1061 public void MoveToFirstAttributeWithNoAttributes ()
\r
1063 string xml = @"<foo />";
\r
1064 RunTest (xml, new TestMethod (MoveToFirstAttributeWithNoAttributes));
\r
1067 public void MoveToFirstAttributeWithNoAttributes (XmlReader xmlReader)
\r
1069 Assert (xmlReader.Read ());
\r
1070 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1071 Assert (!xmlReader.MoveToFirstAttribute ());
\r
1072 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1076 public void MoveToNextAttributeWithNoAttributes ()
\r
1078 string xml = @"<foo />";
\r
1079 RunTest (xml, new TestMethod (MoveToNextAttributeWithNoAttributes));
\r
1082 public void MoveToNextAttributeWithNoAttributes (XmlReader xmlReader)
\r
1084 Assert (xmlReader.Read ());
\r
1085 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1086 Assert (!xmlReader.MoveToNextAttribute ());
\r
1087 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1091 public void MoveToNextAttribute()
\r
1093 string xml = @"<foo bar=""baz"" quux='quuux'/>";
\r
1094 RunTest (xml, new TestMethod (MoveToNextAttribute));
\r
1097 public void MoveToNextAttribute (XmlReader xmlReader)
\r
1099 AssertStartDocument (xmlReader);
\r
1102 xmlReader, // xmlReader
\r
1103 XmlNodeType.Element, // nodeType
\r
1105 true, // isEmptyElement
\r
1107 String.Empty, // prefix
\r
1108 "foo", // localName
\r
1109 String.Empty, // namespaceURI
\r
1110 String.Empty, // value
\r
1111 2 // attributeCount
\r
1115 xmlReader, // xmlReader
\r
1117 String.Empty, // prefix
\r
1118 "bar", // localName
\r
1119 String.Empty, // namespaceURI
\r
1124 xmlReader, // xmlReader
\r
1126 String.Empty, // prefix
\r
1127 "quux", // localName
\r
1128 String.Empty, // namespaceURI
\r
1132 Assert (xmlReader.MoveToNextAttribute ());
\r
1133 AssertEquals ("bar", xmlReader.Name);
\r
1134 AssertEquals ("baz", xmlReader.Value);
\r
1136 Assert (xmlReader.MoveToNextAttribute ());
\r
1137 AssertEquals ("quux", xmlReader.Name);
\r
1138 AssertEquals ("quuux", xmlReader.Value);
\r
1140 Assert (!xmlReader.MoveToNextAttribute ());
\r
1142 Assert (xmlReader.MoveToElement ());
\r
1144 AssertNodeValues (
\r
1145 xmlReader, // xmlReader
\r
1146 XmlNodeType.Element, // nodeType
\r
1148 true, // isEmptyElement
\r
1150 String.Empty, // prefix
\r
1151 "foo", // localName
\r
1152 String.Empty, // namespaceURI
\r
1153 String.Empty, // value
\r
1154 2 // attributeCount
\r
1157 AssertEndDocument (xmlReader);
\r
1161 public void AttributeOrder ()
\r
1163 string xml = @"<foo _1='1' _2='2' _3='3' />";
\r
1164 RunTest (xml, new TestMethod (AttributeOrder));
\r
1167 public void AttributeOrder (XmlReader xmlReader)
\r
1169 Assert (xmlReader.Read ());
\r
1170 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1172 Assert (xmlReader.MoveToFirstAttribute ());
\r
1173 AssertEquals ("_1", xmlReader.Name);
\r
1174 Assert (xmlReader.MoveToNextAttribute ());
\r
1175 AssertEquals ("_2", xmlReader.Name);
\r
1176 Assert (xmlReader.MoveToNextAttribute ());
\r
1177 AssertEquals ("_3", xmlReader.Name);
\r
1179 Assert (!xmlReader.MoveToNextAttribute ());
\r
1183 public void IndexerAndAttributes ()
\r
1185 string xml = @"<?xml version='1.0' standalone='no'?><foo _1='1' _2='2' _3='3' />";
\r
1186 RunTest (xml, new TestMethod (IndexerAndAttributes));
\r
1189 public void IndexerAndAttributes (XmlReader xmlReader)
\r
1191 Assert (xmlReader.Read ());
\r
1192 AssertEquals ("1.0", xmlReader ["version"]);
\r
1193 AssertEquals ("1.0", xmlReader.GetAttribute ("version"));
\r
1194 // XmlTextReader returns null, while XmlNodeReader returns "".
\r
1195 AssertEquals (null, xmlReader ["encoding"]);
\r
1196 AssertEquals (null, xmlReader.GetAttribute ("encoding"));
\r
1197 AssertEquals ("no", xmlReader ["standalone"]);
\r
1198 AssertEquals ("no", xmlReader.GetAttribute ("standalone"));
\r
1199 AssertEquals ("1.0", xmlReader [0]);
\r
1200 AssertEquals ("1.0", xmlReader.GetAttribute (0));
\r
1201 AssertEquals ("no", xmlReader [1]);
\r
1202 AssertEquals ("no", xmlReader.GetAttribute (1));
\r
1204 Assert (xmlReader.Read ());
\r
1205 AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1206 AssertEquals ("1", xmlReader ["_1"]);
\r
1208 Assert (xmlReader.MoveToFirstAttribute ());
\r
1209 AssertEquals ("_1", xmlReader.Name);
\r
1210 AssertEquals ("1", xmlReader ["_1"]);
\r
1211 Assert (xmlReader.MoveToNextAttribute ());
\r
1212 AssertEquals ("_2", xmlReader.Name);
\r
1213 AssertEquals ("1", xmlReader ["_1"]);
\r
1214 Assert (xmlReader.MoveToNextAttribute ());
\r
1215 AssertEquals ("_3", xmlReader.Name);
\r
1216 AssertEquals ("1", xmlReader ["_1"]);
\r
1218 Assert (!xmlReader.MoveToNextAttribute ());
\r