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
17 using NUnit.Framework;
\r
19 namespace MonoTests.System.Xml
\r
22 public class XmlReaderTests
\r
25 public void GetReady ()
\r
27 document = new XmlDocument ();
\r
28 document.LoadXml (xml1);
\r
31 XmlDocument document;
\r
32 const string xml1 = "<root attr1='value1'><child /></root>";
\r
33 const string xml2 = "<root><foo/><bar>test.</bar></root>";
\r
34 const string xml3 = "<root> test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>";
\r
35 const string xml4 = "<root>test of <b>mixed</b> string.</root>";
\r
39 // copy from XmlTextReaderTests
\r
40 private void AssertStartDocument (XmlReader xmlReader)
\r
42 Assertion.Assert (xmlReader.ReadState == ReadState.Initial);
\r
43 Assertion.Assert (xmlReader.NodeType == XmlNodeType.None);
\r
44 Assertion.Assert (xmlReader.Depth == 0);
\r
45 Assertion.Assert (!xmlReader.EOF);
\r
48 private void AssertNode (
\r
49 XmlReader xmlReader,
\r
50 XmlNodeType nodeType,
\r
52 bool isEmptyElement,
\r
56 string namespaceURI,
\r
60 Assertion.Assert ("Read() return value", xmlReader.Read ());
\r
61 Assertion.Assert ("ReadState", xmlReader.ReadState == ReadState.Interactive);
\r
62 Assertion.Assert ("!EOF", !xmlReader.EOF);
\r
63 AssertNodeValues (xmlReader, nodeType, depth, isEmptyElement, name, prefix, localName, namespaceURI, value, attributeCount);
\r
66 private void AssertNodeValues (
\r
67 XmlReader xmlReader,
\r
68 XmlNodeType nodeType,
\r
70 bool isEmptyElement,
\r
74 string namespaceURI,
\r
78 Assertion.AssertEquals ("NodeType", nodeType, xmlReader.NodeType);
\r
79 Assertion.AssertEquals ("Depth", depth, xmlReader.Depth);
\r
80 Assertion.AssertEquals ("IsEmptyElement", isEmptyElement, xmlReader.IsEmptyElement);
\r
82 Assertion.AssertEquals ("name", name, xmlReader.Name);
\r
84 Assertion.AssertEquals ("prefix", prefix, xmlReader.Prefix);
\r
86 Assertion.AssertEquals ("localName", localName, xmlReader.LocalName);
\r
88 Assertion.AssertEquals ("namespaceURI", namespaceURI, xmlReader.NamespaceURI);
\r
90 Assertion.AssertEquals ("hasValue", (value != String.Empty), xmlReader.HasValue);
\r
92 Assertion.AssertEquals ("Value", value, xmlReader.Value);
\r
94 Assertion.AssertEquals ("hasAttributes", attributeCount > 0, xmlReader.HasAttributes);
\r
96 Assertion.AssertEquals ("attributeCount", attributeCount, xmlReader.AttributeCount);
\r
99 private void AssertAttribute (
\r
100 XmlReader xmlReader,
\r
104 string namespaceURI,
\r
107 Assertion.AssertEquals ("value", value, xmlReader [name]);
\r
109 Assertion.Assert (xmlReader.GetAttribute (name) == value);
\r
111 if (namespaceURI != String.Empty) {
\r
112 Assertion.Assert (xmlReader[localName, namespaceURI] == value);
\r
113 Assertion.Assert (xmlReader.GetAttribute (localName, namespaceURI) == value);
\r
117 private void AssertEndDocument (XmlReader xmlReader)
\r
119 Assertion.Assert ("could read", !xmlReader.Read ());
\r
120 Assertion.AssertEquals ("NodeType is not XmlNodeType.None", XmlNodeType.None, xmlReader.NodeType);
\r
121 Assertion.AssertEquals ("Depth is not 0", 0, xmlReader.Depth);
\r
122 Assertion.AssertEquals ("ReadState is not ReadState.EndOfFile", ReadState.EndOfFile, xmlReader.ReadState);
\r
123 Assertion.Assert ("not EOF", xmlReader.EOF);
\r
125 xmlReader.Close ();
\r
126 Assertion.AssertEquals ("ReadState is not ReadState.Cosed", ReadState.Closed, xmlReader.ReadState);
\r
129 private delegate void TestMethod (XmlReader reader);
\r
131 private void RunTest (string xml, TestMethod method)
\r
133 xtr = new XmlTextReader (new StringReader (xml));
\r
136 } catch (AssertionException ex) {
\r
137 throw new AssertionException ("XmlTextReader failed: " + ex.Message, ex);
\r
140 document.LoadXml (xml);
\r
141 xnr = new XmlNodeReader (document);
\r
144 } catch (AssertionException ex) {
\r
145 throw new AssertionException ("XmlNodeReader failed: " + ex.Message, ex);
\r
154 public void InitialState ()
\r
156 RunTest (xml1, new TestMethod (InitialState));
\r
159 private void InitialState (XmlReader reader)
\r
161 Assertion.AssertEquals ("Depth", 0, reader.Depth);
\r
162 Assertion.AssertEquals ("EOF", false, reader.EOF);
\r
163 Assertion.AssertEquals ("HasValue", false, reader.HasValue);
\r
164 Assertion.AssertEquals ("IsEmptyElement", false, reader.IsEmptyElement);
\r
165 Assertion.AssertEquals ("LocalName", String.Empty, reader.LocalName);
\r
166 Assertion.AssertEquals ("NodeType", XmlNodeType.None, reader.NodeType);
\r
167 Assertion.AssertEquals ("ReadState", ReadState.Initial, reader.ReadState);
\r
171 public void Read ()
\r
173 RunTest (xml1, new TestMethod (Read));
\r
176 public void Read (XmlReader reader)
\r
179 Assertion.AssertEquals ("<root>.NodeType", XmlNodeType.Element, reader.NodeType);
\r
180 Assertion.AssertEquals ("<root>.Name", "root", reader.Name);
\r
181 Assertion.AssertEquals ("<root>.ReadState", ReadState.Interactive, reader.ReadState);
\r
182 Assertion.AssertEquals ("<root>.Depth", 0, reader.Depth);
\r
186 Assertion.AssertEquals ("<child/>.Depth", 1, reader.Depth);
\r
187 Assertion.AssertEquals ("<child/>.NodeType", XmlNodeType.Element, reader.NodeType);
\r
188 Assertion.AssertEquals ("<child/>.Name", "child", reader.Name);
\r
191 Assertion.AssertEquals ("</root>.Depth", 0, reader.Depth);
\r
192 Assertion.AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
193 Assertion.AssertEquals ("</root>.Name", "root", reader.Name);
\r
196 Assertion.AssertEquals ("end.EOF", true, reader.EOF);
\r
197 Assertion.AssertEquals ("end.NodeType", XmlNodeType.None, reader.NodeType);
\r
201 public void ReadEmptyElement ()
\r
203 RunTest (xml2, new TestMethod (ReadEmptyElement));
\r
206 public void ReadEmptyElement (XmlReader reader)
\r
208 reader.Read (); // root
\r
209 Assertion.AssertEquals (false, reader.IsEmptyElement);
\r
210 reader.Read (); // foo
\r
211 Assertion.AssertEquals ("foo", reader.Name);
\r
212 Assertion.AssertEquals (true, reader.IsEmptyElement);
\r
213 reader.Read (); // bar
\r
214 Assertion.AssertEquals ("bar", reader.Name);
\r
215 Assertion.AssertEquals (false, reader.IsEmptyElement);
\r
219 public void ReadStringFromElement ()
\r
221 RunTest (xml3, new TestMethod (ReadStringFromElement));
\r
224 public void ReadStringFromElement (XmlReader reader)
\r
226 // Note: ReadString() test works only when the reader is
\r
227 // positioned at the container element.
\r
228 // In case the reader is positioned at the first
\r
229 // character node, XmlTextReader and XmlNodeReader works
\r
233 string s = reader.ReadString ();
\r
234 Assertion.AssertEquals ("readString.1.ret_val", " test of ", s);
\r
235 Assertion.AssertEquals ("readString.1.Name", "b", reader.Name);
\r
236 s = reader.ReadString ();
\r
237 Assertion.AssertEquals ("readString.2.ret_val", "mixed", s);
\r
238 Assertion.AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
239 s = reader.ReadString (); // never proceeds.
\r
240 Assertion.AssertEquals ("readString.3.ret_val", String.Empty, s);
\r
241 Assertion.AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
243 Assertion.AssertEquals ("readString.4.NodeType", XmlNodeType.Text, reader.NodeType);
\r
244 Assertion.AssertEquals ("readString.4.Value", " string.", reader.Value);
\r
245 s = reader.ReadString (); // reads the same Text node.
\r
246 Assertion.AssertEquals ("readString.5.ret_val", " string. cdata string.", s);
\r
247 Assertion.AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, reader.NodeType);
\r
251 public void ReadInnerXml ()
\r
253 const string xml = "<root><foo>test of <b>mixed</b> string.</foo><bar /></root>";
\r
254 RunTest (xml, new TestMethod (ReadInnerXml));
\r
257 public void ReadInnerXml (XmlReader reader)
\r
261 Assertion.AssertEquals ("initial.ReadState", ReadState.Interactive, reader.ReadState);
\r
262 Assertion.AssertEquals ("initial.EOF", false, reader.EOF);
\r
263 Assertion.AssertEquals ("initial.NodeType", XmlNodeType.Element, reader.NodeType);
\r
264 string s = reader.ReadInnerXml ();
\r
265 Assertion.AssertEquals ("read_all", "test of <b>mixed</b> string.", s);
\r
266 Assertion.AssertEquals ("after.Name", "bar", reader.Name);
\r
267 Assertion.AssertEquals ("after.NodeType", XmlNodeType.Element, reader.NodeType);
\r
272 public void EmptyElement ()
\r
274 RunTest ("<foo/>", new TestMethod (EmptyElement));
\r
277 public void EmptyElement (XmlReader xmlReader)
\r
280 AssertStartDocument (xmlReader);
\r
283 xmlReader, // xmlReader
\r
284 XmlNodeType.Element, // nodeType
\r
286 true, // isEmptyElement
\r
288 String.Empty, // prefix
\r
289 "foo", // localName
\r
290 String.Empty, // namespaceURI
\r
291 String.Empty, // value
\r
292 0 // attributeCount
\r
295 AssertEndDocument (xmlReader);
\r
299 public void NestedEmptyTag ()
\r
301 string xml = "<foo><bar/></foo>";
\r
302 RunTest (xml, new TestMethod (NestedEmptyTag));
\r
305 public void NestedEmptyTag (XmlReader xmlReader)
\r
307 AssertStartDocument (xmlReader);
\r
310 xmlReader, // xmlReader
\r
311 XmlNodeType.Element, // nodeType
\r
313 false, // isEmptyElement
\r
315 String.Empty, // prefix
\r
316 "foo", // localName
\r
317 String.Empty, // namespaceURI
\r
318 String.Empty, // value
\r
319 0 // attributeCount
\r
323 xmlReader, // xmlReader
\r
324 XmlNodeType.Element, // nodeType
\r
326 true, // isEmptyElement
\r
328 String.Empty, // prefix
\r
329 "bar", // localName
\r
330 String.Empty, // namespaceURI
\r
331 String.Empty, // value
\r
332 0 // attributeCount
\r
336 xmlReader, // xmlReader
\r
337 XmlNodeType.EndElement, // nodeType
\r
339 false, // isEmptyElement
\r
341 String.Empty, // prefix
\r
342 "foo", // localName
\r
343 String.Empty, // namespaceURI
\r
344 String.Empty, // value
\r
345 0 // attributeCount
\r
348 AssertEndDocument (xmlReader);
\r
352 public void NestedText ()
\r
354 string xml = "<foo>bar</foo>";
\r
355 RunTest (xml, new TestMethod (NestedText));
\r
358 public void NestedText (XmlReader xmlReader)
\r
360 AssertStartDocument (xmlReader);
\r
363 xmlReader, // xmlReader
\r
364 XmlNodeType.Element, // nodeType
\r
366 false, // isEmptyElement
\r
368 String.Empty, // prefix
\r
369 "foo", // localName
\r
370 String.Empty, // namespaceURI
\r
371 String.Empty, // value
\r
372 0 // attributeCount
\r
376 xmlReader, // xmlReader
\r
377 XmlNodeType.Text, // nodeType
\r
379 false, // isEmptyElement
\r
380 String.Empty, // name
\r
381 String.Empty, // prefix
\r
382 String.Empty, // localName
\r
383 String.Empty, // namespaceURI
\r
385 0 // attributeCount
\r
389 xmlReader, // xmlReader
\r
390 XmlNodeType.EndElement, // nodeType
\r
392 false, // isEmptyElement
\r
394 String.Empty, // prefix
\r
395 "foo", // localName
\r
396 String.Empty, // namespaceURI
\r
397 String.Empty, // value
\r
398 0 // attributeCount
\r
401 AssertEndDocument (xmlReader);
\r
405 public void EmptyElementWithTwoAttributes ()
\r
407 string xml = @"<foo bar=""baz"" quux='quuux'/>";
\r
408 RunTest (xml, new TestMethod (EmptyElementWithTwoAttributes ));
\r
411 public void EmptyElementWithTwoAttributes (XmlReader xmlReader)
\r
414 AssertStartDocument (xmlReader);
\r
417 xmlReader, // xmlReader
\r
418 XmlNodeType.Element, // nodeType
\r
420 true, // isEmptyElement
\r
422 String.Empty, // prefix
\r
423 "foo", // localName
\r
424 String.Empty, // namespaceURI
\r
425 String.Empty, // value
\r
426 2 // attributeCount
\r
430 xmlReader, // xmlReader
\r
432 String.Empty, // prefix
\r
433 "bar", // localName
\r
434 String.Empty, // namespaceURI
\r
439 xmlReader, // xmlReader
\r
441 String.Empty, // prefix
\r
442 "quux", // localName
\r
443 String.Empty, // namespaceURI
\r
447 AssertEndDocument (xmlReader);
\r
451 public void ProcessingInstructionBeforeDocumentElement ()
\r
453 string xml = "<?foo bar?><baz/>";
\r
454 RunTest (xml, new TestMethod (ProcessingInstructionBeforeDocumentElement));
\r
457 public void ProcessingInstructionBeforeDocumentElement (XmlReader xmlReader)
\r
459 AssertStartDocument (xmlReader);
\r
462 xmlReader, // xmlReader
\r
463 XmlNodeType.ProcessingInstruction, // nodeType
\r
465 false, // isEmptyElement
\r
467 String.Empty, // prefix
\r
468 "foo", // localName
\r
469 String.Empty, // namespaceURI
\r
471 0 // attributeCount
\r
475 xmlReader, // xmlReader
\r
476 XmlNodeType.Element, // nodeType
\r
478 true, // isEmptyElement
\r
480 String.Empty, // prefix
\r
481 "baz", // localName
\r
482 String.Empty, // namespaceURI
\r
483 String.Empty, // value
\r
484 0 // attributeCount
\r
487 AssertEndDocument (xmlReader);
\r
491 public void CommentBeforeDocumentElement ()
\r
493 string xml = "<!--foo--><bar/>";
\r
494 RunTest (xml, new TestMethod (CommentBeforeDocumentElement));
\r
497 public void CommentBeforeDocumentElement (XmlReader xmlReader)
\r
499 AssertStartDocument (xmlReader);
\r
502 xmlReader, // xmlReader
\r
503 XmlNodeType.Comment, // nodeType
\r
505 false, // isEmptyElement
\r
506 String.Empty, // name
\r
507 String.Empty, // prefix
\r
508 String.Empty, // localName
\r
509 String.Empty, // namespaceURI
\r
511 0 // attributeCount
\r
515 xmlReader, // xmlReader
\r
516 XmlNodeType.Element, // nodeType
\r
518 true, // isEmptyElement
\r
520 String.Empty, // prefix
\r
521 "bar", // localName
\r
522 String.Empty, // namespaceURI
\r
523 String.Empty, // value
\r
524 0 // attributeCount
\r
527 AssertEndDocument (xmlReader);
\r
531 public void PredefinedEntities ()
\r
533 string xml = "<foo><>&'"</foo>";
\r
534 RunTest (xml, new TestMethod (PredefinedEntities));
\r
537 public void PredefinedEntities (XmlReader xmlReader)
\r
539 AssertStartDocument (xmlReader);
\r
542 xmlReader, // xmlReader
\r
543 XmlNodeType.Element, // nodeType
\r
545 false, // isEmptyElement
\r
547 String.Empty, // prefix
\r
548 "foo", // localName
\r
549 String.Empty, // namespaceURI
\r
550 String.Empty, // value
\r
551 0 // attributeCount
\r
555 xmlReader, // xmlReader
\r
556 XmlNodeType.Text, // nodeType
\r
558 false, // isEmptyElement
\r
559 String.Empty, // name
\r
560 String.Empty, // prefix
\r
561 String.Empty, // localName
\r
562 String.Empty, // namespaceURI
\r
564 0 // attributeCount
\r
568 xmlReader, // xmlReader
\r
569 XmlNodeType.EndElement, // nodeType
\r
571 false, // isEmptyElement
\r
573 String.Empty, // prefix
\r
574 "foo", // localName
\r
575 String.Empty, // namespaceURI
\r
576 String.Empty, // value
\r
577 0 // attributeCount
\r
580 AssertEndDocument (xmlReader);
\r
584 public void EntityReference ()
\r
586 string xml = "<foo>&bar;</foo>";
\r
587 RunTest (xml, new TestMethod (EntityReference));
\r
590 public void EntityReference (XmlReader xmlReader)
\r
592 AssertStartDocument (xmlReader);
\r
595 xmlReader, // xmlReader
\r
596 XmlNodeType.Element, // nodeType
\r
598 false, // isEmptyElement
\r
600 String.Empty, // prefix
\r
601 "foo", // localName
\r
602 String.Empty, // namespaceURI
\r
603 String.Empty, // value
\r
604 0 // attributeCount
\r
608 xmlReader, // xmlReader
\r
609 XmlNodeType.EntityReference, // nodeType
\r
611 false, // isEmptyElement
\r
613 String.Empty, // prefix
\r
614 "bar", // localName
\r
615 String.Empty, // namespaceURI
\r
616 String.Empty, // value
\r
617 0 // attributeCount
\r
621 xmlReader, // xmlReader
\r
622 XmlNodeType.EndElement, // nodeType
\r
624 false, // isEmptyElement
\r
626 String.Empty, // prefix
\r
627 "foo", // localName
\r
628 String.Empty, // namespaceURI
\r
629 String.Empty, // value
\r
630 0 // attributeCount
\r
633 AssertEndDocument (xmlReader);
\r
637 public void EntityReferenceInsideText ()
\r
639 string xml = "<foo>bar&baz;quux</foo>";
\r
640 RunTest (xml, new TestMethod (EntityReferenceInsideText));
\r
643 public void EntityReferenceInsideText (XmlReader xmlReader)
\r
645 AssertStartDocument (xmlReader);
\r
648 xmlReader, // xmlReader
\r
649 XmlNodeType.Element, // nodeType
\r
651 false, // isEmptyElement
\r
653 String.Empty, // prefix
\r
654 "foo", // localName
\r
655 String.Empty, // namespaceURI
\r
656 String.Empty, // value
\r
657 0 // attributeCount
\r
661 xmlReader, // xmlReader
\r
662 XmlNodeType.Text, // nodeType
\r
664 false, // isEmptyElement
\r
665 String.Empty, // name
\r
666 String.Empty, // prefix
\r
667 String.Empty, // localName
\r
668 String.Empty, // namespaceURI
\r
670 0 // attributeCount
\r
674 xmlReader, // xmlReader
\r
675 XmlNodeType.EntityReference, // nodeType
\r
677 false, // isEmptyElement
\r
679 String.Empty, // prefix
\r
680 "baz", // localName
\r
681 String.Empty, // namespaceURI
\r
682 String.Empty, // value
\r
683 0 // attributeCount
\r
687 xmlReader, // xmlReader
\r
688 XmlNodeType.Text, // nodeType
\r
690 false, // isEmptyElement
\r
691 String.Empty, // name
\r
692 String.Empty, // prefix
\r
693 String.Empty, // localName
\r
694 String.Empty, // namespaceURI
\r
696 0 // attributeCount
\r
700 xmlReader, // xmlReader
\r
701 XmlNodeType.EndElement, // nodeType
\r
703 false, // isEmptyElement
\r
705 String.Empty, // prefix
\r
706 "foo", // localName
\r
707 String.Empty, // namespaceURI
\r
708 String.Empty, // value
\r
709 0 // attributeCount
\r
712 AssertEndDocument (xmlReader);
\r
716 public void CharacterReferences ()
\r
718 string xml = "<foo>FOO</foo>";
\r
719 RunTest (xml, new TestMethod (CharacterReferences));
\r
722 public void CharacterReferences (XmlReader xmlReader)
\r
724 AssertStartDocument (xmlReader);
\r
727 xmlReader, // xmlReader
\r
728 XmlNodeType.Element, // nodeType
\r
730 false, // isEmptyElement
\r
732 String.Empty, // prefix
\r
733 "foo", // localName
\r
734 String.Empty, // namespaceURI
\r
735 String.Empty, // value
\r
736 0 // attributeCount
\r
740 xmlReader, // xmlReader
\r
741 XmlNodeType.Text, // nodeType
\r
743 false, // isEmptyElement
\r
744 String.Empty, // name
\r
745 String.Empty, // prefix
\r
746 String.Empty, // localName
\r
747 String.Empty, // namespaceURI
\r
749 0 // attributeCount
\r
753 xmlReader, // xmlReader
\r
754 XmlNodeType.EndElement, // nodeType
\r
756 false, // isEmptyElement
\r
758 String.Empty, // prefix
\r
759 "foo", // localName
\r
760 String.Empty, // namespaceURI
\r
761 String.Empty, // value
\r
762 0 // attributeCount
\r
765 AssertEndDocument (xmlReader);
\r
769 public void PredefinedEntitiesInAttribute ()
\r
771 string xml = "<foo bar='<>&'"'/>";
\r
772 RunTest (xml, new TestMethod (PredefinedEntitiesInAttribute ));
\r
775 public void PredefinedEntitiesInAttribute (XmlReader xmlReader)
\r
777 AssertStartDocument (xmlReader);
\r
780 xmlReader, // xmlReader
\r
781 XmlNodeType.Element, // nodeType
\r
783 true, // isEmptyElement
\r
785 String.Empty, // prefix
\r
786 "foo", // localName
\r
787 String.Empty, // namespaceURI
\r
788 String.Empty, // value
\r
789 1 // attributeCount
\r
793 xmlReader, // xmlReader
\r
795 String.Empty, // prefix
\r
796 "bar", // localName
\r
797 String.Empty, // namespaceURI
\r
801 AssertEndDocument (xmlReader);
\r
805 public void CharacterReferencesInAttribute ()
\r
807 string xml = "<foo bar='FOO'/>";
\r
808 RunTest (xml, new TestMethod (CharacterReferencesInAttribute));
\r
811 public void CharacterReferencesInAttribute (XmlReader xmlReader)
\r
813 AssertStartDocument (xmlReader);
\r
816 xmlReader, // xmlReader
\r
817 XmlNodeType.Element, // nodeType
\r
819 true, // isEmptyElement
\r
821 String.Empty, // prefix
\r
822 "foo", // localName
\r
823 String.Empty, // namespaceURI
\r
824 String.Empty, // value
\r
825 1 // attributeCount
\r
829 xmlReader, // xmlReader
\r
831 String.Empty, // prefix
\r
832 "bar", // localName
\r
833 String.Empty, // namespaceURI
\r
837 AssertEndDocument (xmlReader);
\r
841 public void CDATA ()
\r
843 string xml = "<foo><![CDATA[<>&]]></foo>";
\r
844 RunTest (xml, new TestMethod (CDATA));
\r
847 public void CDATA (XmlReader xmlReader)
\r
849 AssertStartDocument (xmlReader);
\r
852 xmlReader, // xmlReader
\r
853 XmlNodeType.Element, // nodeType
\r
855 false, // isEmptyElement
\r
857 String.Empty, // prefix
\r
858 "foo", // localName
\r
859 String.Empty, // namespaceURI
\r
860 String.Empty, // value
\r
861 0 // attributeCount
\r
865 xmlReader, // xmlReader
\r
866 XmlNodeType.CDATA, // nodeType
\r
868 false, // isEmptyElement
\r
869 String.Empty, // name
\r
870 String.Empty, // prefix
\r
871 String.Empty, // localName
\r
872 String.Empty, // namespaceURI
\r
874 0 // attributeCount
\r
878 xmlReader, // xmlReader
\r
879 XmlNodeType.EndElement, // nodeType
\r
881 false, // isEmptyElement
\r
883 String.Empty, // prefix
\r
884 "foo", // localName
\r
885 String.Empty, // namespaceURI
\r
886 String.Empty, // value
\r
887 0 // attributeCount
\r
890 AssertEndDocument (xmlReader);
\r
894 public void EmptyElementInDefaultNamespace ()
\r
896 string xml = @"<foo xmlns='http://foo/' />";
\r
897 RunTest (xml, new TestMethod (EmptyElementInDefaultNamespace));
\r
900 public void EmptyElementInDefaultNamespace (XmlReader xmlReader)
\r
902 AssertStartDocument (xmlReader);
\r
905 xmlReader, // xmlReader
\r
906 XmlNodeType.Element, // nodeType
\r
908 true, // isEmptyElement
\r
910 String.Empty, // prefix
\r
911 "foo", // localName
\r
912 "http://foo/", // namespaceURI
\r
913 String.Empty, // value
\r
914 1 // attributeCount
\r
918 xmlReader, // xmlReader
\r
920 String.Empty, // prefix
\r
921 "xmlns", // localName
\r
922 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
923 "http://foo/" // value
\r
926 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace (String.Empty));
\r
928 AssertEndDocument (xmlReader);
\r
932 public void ChildElementInNamespace ()
\r
934 string xml = @"<foo:bar xmlns:foo='http://foo/'><baz:quux xmlns:baz='http://baz/' /></foo:bar>";
\r
935 RunTest (xml, new TestMethod (ChildElementInNamespace));
\r
938 public void ChildElementInNamespace (XmlReader xmlReader)
\r
940 AssertStartDocument (xmlReader);
\r
943 xmlReader, // xmlReader
\r
944 XmlNodeType.Element, // nodeType
\r
946 false, // isEmptyElement
\r
949 "bar", // localName
\r
950 "http://foo/", // namespaceURI
\r
951 String.Empty, // value
\r
952 1 // attributeCount
\r
956 xmlReader, // xmlReader
\r
957 "xmlns:foo", // name
\r
959 "foo", // localName
\r
960 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
961 "http://foo/" // value
\r
964 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
967 xmlReader, // xmlReader
\r
968 XmlNodeType.Element, // nodeType
\r
970 true, // isEmptyElement
\r
971 "baz:quux", // name
\r
973 "quux", // localName
\r
974 "http://baz/", // namespaceURI
\r
975 String.Empty, // value
\r
976 1 // attributeCount
\r
980 xmlReader, // xmlReader
\r
981 "xmlns:baz", // name
\r
983 "baz", // localName
\r
984 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
985 "http://baz/" // value
\r
988 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
989 Assertion.AssertEquals ("http://baz/", xmlReader.LookupNamespace ("baz"));
\r
992 xmlReader, // xmlReader
\r
993 XmlNodeType.EndElement, // nodeType
\r
995 false, // isEmptyElement
\r
998 "bar", // localName
\r
999 "http://foo/", // namespaceURI
\r
1000 String.Empty, // value
\r
1001 0 // attributeCount
\r
1004 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
1005 Assertion.AssertNull (xmlReader.LookupNamespace ("baz"));
\r
1007 AssertEndDocument (xmlReader);
\r
1011 public void ChildElementInDefaultNamespace ()
\r
1013 string xml = @"<foo:bar xmlns:foo='http://foo/'><baz xmlns='http://baz/' /></foo:bar>";
\r
1014 RunTest (xml, new TestMethod (ChildElementInDefaultNamespace));
\r
1017 public void ChildElementInDefaultNamespace (XmlReader xmlReader)
\r
1019 AssertStartDocument (xmlReader);
\r
1022 xmlReader, // xmlReader
\r
1023 XmlNodeType.Element, // nodeType
\r
1025 false, // isEmptyElement
\r
1026 "foo:bar", // name
\r
1028 "bar", // localName
\r
1029 "http://foo/", // namespaceURI
\r
1030 String.Empty, // value
\r
1031 1 // attributeCount
\r
1035 xmlReader, // xmlReader
\r
1036 "xmlns:foo", // name
\r
1037 "xmlns", // prefix
\r
1038 "foo", // localName
\r
1039 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
1040 "http://foo/" // value
\r
1043 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
1046 xmlReader, // xmlReader
\r
1047 XmlNodeType.Element, // nodeType
\r
1049 true, // isEmptyElement
\r
1051 String.Empty, // prefix
\r
1052 "baz", // localName
\r
1053 "http://baz/", // namespaceURI
\r
1054 String.Empty, // value
\r
1055 1 // attributeCount
\r
1059 xmlReader, // xmlReader
\r
1061 String.Empty, // prefix
\r
1062 "xmlns", // localName
\r
1063 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
1064 "http://baz/" // value
\r
1067 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
1068 Assertion.AssertEquals ("http://baz/", xmlReader.LookupNamespace (String.Empty));
\r
1071 xmlReader, // xmlReader
\r
1072 XmlNodeType.EndElement, // nodeType
\r
1074 false, // isEmptyElement
\r
1075 "foo:bar", // name
\r
1077 "bar", // localName
\r
1078 "http://foo/", // namespaceURI
\r
1079 String.Empty, // value
\r
1080 0 // attributeCount
\r
1083 Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
\r
1085 AssertEndDocument (xmlReader);
\r
1089 public void AttributeInNamespace ()
\r
1091 string xml = @"<foo bar:baz='quux' xmlns:bar='http://bar/' />";
\r
1092 RunTest (xml, new TestMethod (AttributeInNamespace));
\r
1095 public void AttributeInNamespace (XmlReader xmlReader)
\r
1097 AssertStartDocument (xmlReader);
\r
1100 xmlReader, // xmlReader
\r
1101 XmlNodeType.Element, // nodeType
\r
1103 true, // isEmptyElement
\r
1105 String.Empty, // prefix
\r
1106 "foo", // localName
\r
1107 String.Empty, // namespaceURI
\r
1108 String.Empty, // value
\r
1109 2 // attributeCount
\r
1113 xmlReader, // xmlReader
\r
1114 "bar:baz", // name
\r
1116 "baz", // localName
\r
1117 "http://bar/", // namespaceURI
\r
1122 xmlReader, // xmlReader
\r
1123 "xmlns:bar", // name
\r
1124 "xmlns", // prefix
\r
1125 "bar", // localName
\r
1126 "http://www.w3.org/2000/xmlns/", // namespaceURI
\r
1127 "http://bar/" // value
\r
1130 Assertion.AssertEquals ("http://bar/", xmlReader.LookupNamespace ("bar"));
\r
1132 AssertEndDocument (xmlReader);
\r
1136 public void MoveToElementFromAttribute ()
\r
1138 string xml = @"<foo bar=""baz"" />";
\r
1139 RunTest (xml, new TestMethod (MoveToElementFromAttribute));
\r
1142 public void MoveToElementFromAttribute (XmlReader xmlReader)
\r
1144 Assertion.Assert (xmlReader.Read ());
\r
1145 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1146 Assertion.Assert (xmlReader.MoveToFirstAttribute ());
\r
1147 Assertion.AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);
\r
1148 Assertion.Assert (xmlReader.MoveToElement ());
\r
1149 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1153 public void MoveToElementFromElement ()
\r
1155 string xml = @"<foo bar=""baz"" />";
\r
1156 RunTest (xml, new TestMethod (MoveToElementFromElement));
\r
1159 public void MoveToElementFromElement (XmlReader xmlReader)
\r
1161 Assertion.Assert (xmlReader.Read ());
\r
1162 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1163 Assertion.Assert (!xmlReader.MoveToElement ());
\r
1164 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1168 public void MoveToFirstAttributeWithNoAttributes ()
\r
1170 string xml = @"<foo />";
\r
1171 RunTest (xml, new TestMethod (MoveToFirstAttributeWithNoAttributes));
\r
1174 public void MoveToFirstAttributeWithNoAttributes (XmlReader xmlReader)
\r
1176 Assertion.Assert (xmlReader.Read ());
\r
1177 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1178 Assertion.Assert (!xmlReader.MoveToFirstAttribute ());
\r
1179 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1183 public void MoveToNextAttributeWithNoAttributes ()
\r
1185 string xml = @"<foo />";
\r
1186 RunTest (xml, new TestMethod (MoveToNextAttributeWithNoAttributes));
\r
1189 public void MoveToNextAttributeWithNoAttributes (XmlReader xmlReader)
\r
1191 Assertion.Assert (xmlReader.Read ());
\r
1192 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1193 Assertion.Assert (!xmlReader.MoveToNextAttribute ());
\r
1194 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1198 public void MoveToNextAttribute()
\r
1200 string xml = @"<foo bar=""baz"" quux='quuux'/>";
\r
1201 RunTest (xml, new TestMethod (MoveToNextAttribute));
\r
1204 public void MoveToNextAttribute (XmlReader xmlReader)
\r
1206 AssertStartDocument (xmlReader);
\r
1209 xmlReader, // xmlReader
\r
1210 XmlNodeType.Element, // nodeType
\r
1212 true, // isEmptyElement
\r
1214 String.Empty, // prefix
\r
1215 "foo", // localName
\r
1216 String.Empty, // namespaceURI
\r
1217 String.Empty, // value
\r
1218 2 // attributeCount
\r
1222 xmlReader, // xmlReader
\r
1224 String.Empty, // prefix
\r
1225 "bar", // localName
\r
1226 String.Empty, // namespaceURI
\r
1231 xmlReader, // xmlReader
\r
1233 String.Empty, // prefix
\r
1234 "quux", // localName
\r
1235 String.Empty, // namespaceURI
\r
1239 Assertion.Assert (xmlReader.MoveToNextAttribute ());
\r
1240 Assertion.Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);
\r
1241 Assertion.Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);
\r
1243 Assertion.Assert (xmlReader.MoveToNextAttribute ());
\r
1244 Assertion.Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);
\r
1245 Assertion.Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);
\r
1247 Assertion.Assert (!xmlReader.MoveToNextAttribute ());
\r
1249 Assertion.Assert (xmlReader.MoveToElement ());
\r
1251 AssertNodeValues (
\r
1252 xmlReader, // xmlReader
\r
1253 XmlNodeType.Element, // nodeType
\r
1255 true, // isEmptyElement
\r
1257 String.Empty, // prefix
\r
1258 "foo", // localName
\r
1259 String.Empty, // namespaceURI
\r
1260 String.Empty, // value
\r
1261 2 // attributeCount
\r
1264 AssertEndDocument (xmlReader);
\r
1268 public void AttributeOrder ()
\r
1270 string xml = @"<foo _1='1' _2='2' _3='3' />";
\r
1271 RunTest (xml, new TestMethod (AttributeOrder));
\r
1274 public void AttributeOrder (XmlReader xmlReader)
\r
1276 Assertion.Assert (xmlReader.Read ());
\r
1277 Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
\r
1279 Assertion.Assert (xmlReader.MoveToFirstAttribute ());
\r
1280 Assertion.AssertEquals ("_1", xmlReader.Name);
\r
1281 Assertion.Assert (xmlReader.MoveToNextAttribute ());
\r
1282 Assertion.AssertEquals ("_2", xmlReader.Name);
\r
1283 Assertion.Assert (xmlReader.MoveToNextAttribute ());
\r
1284 Assertion.AssertEquals ("_3", xmlReader.Name);
\r
1286 Assertion.Assert (!xmlReader.MoveToNextAttribute ());
\r