2008-09-17 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Wed, 17 Sep 2008 13:04:56 +0000 (13:04 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Wed, 17 Sep 2008 13:04:56 +0000 (13:04 -0000)
* XmlReader.cs : ReadSubtree() is valid only on an element.

* XmlReaderCommonTests.cs :
  added test for ReadSubtree() on non-element.

svn path=/trunk/mcs/; revision=113304

mcs/class/System.XML/System.Xml/ChangeLog
mcs/class/System.XML/System.Xml/XmlReader.cs
mcs/class/System.XML/Test/System.Xml/ChangeLog
mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs

index 12259c29f174bb065885fc628236d08645619875..170189f26bddec8a92a731928b6082042b72d2ef 100644 (file)
@@ -1,3 +1,7 @@
+2008-09-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlReader.cs : ReadSubtree() is valid only on an element.
+
 2008-09-10  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlDocument.cs, XmlDocumentNavigator.cs :
index 97cef3d1026d09c1a8a0e1d7a98ff4ca3ff0557e..4beecdc4e6b67c9af6ee0412e73494ae0a43af8e 100644 (file)
@@ -880,6 +880,8 @@ namespace System.Xml
 
                public virtual XmlReader ReadSubtree ()
                {
+                       if (NodeType != XmlNodeType.Element)
+                               throw new InvalidOperationException ("ReadSubtree() can be invoked only when the reader is positioned on an element");
                        return new SubtreeXmlReader (this);
                }
 
index f773f37b69531fee583b84458f6990aa2807c195..d07b8354946c2f1a7cc7a462d1174aaf97123e77 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-17  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlReaderCommonTests.cs :
+         added test for ReadSubtree() on non-element.
+
 2008-07-28  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlTextReaderTests.cs : added test for bug #412657.
index 611da02569be1c4291f4b3217d04d1468d832618..f1356dcb20086ee50ceab8028288113d837f44d3 100644 (file)
@@ -2054,6 +2054,26 @@ namespace MonoTests.System.Xml
                        AssertEquals ("#1", XmlNodeType.EndElement, reader.NodeType);\r
                        AssertEquals ("#2", "item-list", reader.Name);\r
                }\r
+\r
+               [Test]\r
+               [ExpectedException (typeof (InvalidOperationException))]\r
+               public void ReadSubtreeOnNonElement ()\r
+               {\r
+                       string xml = @"<x> <y/></x>";\r
+                       XmlReader r = XmlReader.Create (new StringReader (xml));\r
+                       r.Read (); // x\r
+                       r.Read (); // ws\r
+                       r.ReadSubtree ();\r
+               }\r
+\r
+               [Test]\r
+               [ExpectedException (typeof (InvalidOperationException))]\r
+               public void ReadSubtreeOnNonElement2 ()\r
+               {\r
+                       string xml = @"<x> <y/></x>";\r
+                       XmlReader r = XmlReader.Create (new StringReader (xml));\r
+                       r.ReadSubtree ();\r
+               }\r
 #endif\r
        }\r
 }\r