Implemented MoveToElement and MoveToFirstAttribute.
[mono.git] / mcs / class / System.XML / Test / XmlTextReaderTests.cs
index 215a058f64041efc448a5ed5b2caf924031bf54a..bf1477f4e9cf5c29da697d5050fe0c300a9fd7c2 100644 (file)
@@ -43,7 +43,20 @@ namespace Ximian.Mono.Tests
                        Assert (xmlReader.Read ());
                        Assert (xmlReader.ReadState == ReadState.Interactive);
                        Assert (!xmlReader.EOF);
+               }
 
+               private void AssertNodeValues (
+                       XmlReader xmlReader,
+                       XmlNodeType nodeType,
+                       int depth,
+                       bool isEmptyElement,
+                       string name,
+                       string prefix,
+                       string localName,
+                       string namespaceURI,
+                       string value,
+                       int attributeCount)
+               {
                        Assert (xmlReader.NodeType == nodeType);
                        Assert (xmlReader.Depth == depth);
                        Assert (xmlReader.IsEmptyElement == isEmptyElement);
@@ -1633,6 +1646,56 @@ namespace Ximian.Mono.Tests
                        Assert (!XmlReader.IsNameToken (" foo"));
                }
 
+               public void TestMoveToElementFromAttribute ()
+               {
+                       string xml = @"<foo bar=""baz"" />";
+                       XmlReader xmlReader =
+                               new XmlTextReader (new StringReader (xml));
+
+                       Assert (xmlReader.Read ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+                       Assert (xmlReader.MoveToFirstAttribute ());
+                       AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);
+                       Assert (xmlReader.MoveToElement ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+               }
+
+               public void TestMoveToElementFromElement ()
+               {
+                       string xml = @"<foo bar=""baz"" />";
+                       XmlReader xmlReader =
+                               new XmlTextReader (new StringReader (xml));
+
+                       Assert (xmlReader.Read ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+                       Assert (!xmlReader.MoveToElement ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+               }
+
+               public void TestMoveToFirstAttributeWithNoAttributes ()
+               {
+                       string xml = @"<foo />";
+                       XmlReader xmlReader =
+                               new XmlTextReader (new StringReader (xml));
+
+                       Assert (xmlReader.Read ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+                       Assert (!xmlReader.MoveToFirstAttribute ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+               }
+
+               public void TestMoveToNextAttributeWithNoAttributes ()
+               {
+                       string xml = @"<foo />";
+                       XmlReader xmlReader =
+                               new XmlTextReader (new StringReader (xml));
+
+                       Assert (xmlReader.Read ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+                       Assert (!xmlReader.MoveToNextAttribute ());
+                       AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
+               }
+
                public void TestMoveToNextAttribute()
                {
                        string xml = @"<foo bar=""baz"" quux='quuux'/>";
@@ -1682,6 +1745,21 @@ namespace Ximian.Mono.Tests
 
                        Assert (!xmlReader.MoveToNextAttribute ());
 
+            Assert (xmlReader.MoveToElement ());
+
+                       AssertNodeValues (
+                               xmlReader, // xmlReader
+                               XmlNodeType.Element, // nodeType
+                               0, //depth
+                               true, // isEmptyElement
+                               "foo", // name
+                               String.Empty, // prefix
+                               "foo", // localName
+                               String.Empty, // namespaceURI
+                               String.Empty, // value
+                               2 // attributeCount
+                       );
+
                        AssertEndDocument (xmlReader);
                }
        }