diff options
author | Jason Diamond <injektilo@mono-cvs.ximian.com> | 2002-07-12 08:07:15 +0400 |
---|---|---|
committer | Jason Diamond <injektilo@mono-cvs.ximian.com> | 2002-07-12 08:07:15 +0400 |
commit | c8ff8606191173071f45ee62c57655b09c3c3da6 (patch) | |
tree | a1a5a2aaa98c0c9812bb37501532cf37e1cbd78a /mcs/class/System.XML/Test/SelectNodesTests.cs | |
parent | 2f7666c877421a6e32d7a3a37e60aecf64de5a48 (diff) |
Added some tests for the SelectNodes method.
svn path=/trunk/mcs/; revision=5717
Diffstat (limited to 'mcs/class/System.XML/Test/SelectNodesTests.cs')
-rw-r--r-- | mcs/class/System.XML/Test/SelectNodesTests.cs | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/mcs/class/System.XML/Test/SelectNodesTests.cs b/mcs/class/System.XML/Test/SelectNodesTests.cs new file mode 100644 index 00000000000..2f168219c7b --- /dev/null +++ b/mcs/class/System.XML/Test/SelectNodesTests.cs @@ -0,0 +1,209 @@ +// +// MonoTests.System.Xml.SelectNodesTests +// +// Author: +// Jason Diamond <jason@injektilo.org> +// +// (C) 2002 Jason Diamond +// +
+using System; +using System.Xml; + +using NUnit.Framework; + +namespace MonoTests.System.Xml +{ + public class SelectNodesTests : TestCase + { + public SelectNodesTests () : base ("MonoTests.System.Xml.SelectNodesTests testsuite") {} + public SelectNodesTests (string name) : base (name) {} + + public void TestRoot () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo />"); + XmlNodeList nodes = document.SelectNodes ("/"); + AssertEquals (1, nodes.Count); + AssertSame (document, nodes [0]); + } + + public void TestDocumentElement () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo />"); + XmlNodeList nodes = document.SelectNodes ("/foo"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement, nodes [0]); + } + + public void TestBadDocumentElement () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo />"); + XmlNodeList nodes = document.SelectNodes ("/bar"); + AssertEquals (0, nodes.Count); + } + + public void TestElementWildcard () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/*"); + AssertEquals (2, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [1]); + } + + public void TestOneChildElement () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + } + + public void TestOneOtherChildElement () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/baz"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [0]); + } + + public void TestTextNode () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo>bar</foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/text()"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + } + + public void TestSplitTextNodes () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo>bar<baz />quux</foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/text()"); + AssertEquals (2, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + AssertSame (document.DocumentElement.ChildNodes [2], nodes [1]); + } + + public void TestAbbreviatedParentAxis () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar/.."); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement, nodes [0]); + } + + public void TestFullParentAxis () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar/parent::node()"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement, nodes [0]); + } + + public void TestAbbreviatedAttributeAxis () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo bar='baz' />"); + XmlNodeList nodes = document.SelectNodes ("/foo/@bar"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.Attributes ["bar"], nodes [0]); + } + + public void TestFullAttributeAxis () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo bar='baz' />"); + XmlNodeList nodes = document.SelectNodes ("/foo/attribute::bar"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.Attributes ["bar"], nodes [0]); + } + + public void TestAbbreviatedAttributeWildcard () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo bar='baz' quux='quuux' />"); + XmlNodeList nodes = document.SelectNodes ("/foo/@*"); + AssertEquals (2, nodes.Count); + // are the attributes guanteed to be ordered in the node list? + AssertSame (document.DocumentElement.Attributes ["bar"], nodes [0]); + AssertSame (document.DocumentElement.Attributes ["quux"], nodes [1]); + } + + public void TestAttributeParent () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo bar='baz' />"); + XmlNodeList nodes = document.SelectNodes ("/foo/@bar/.."); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement, nodes [0]); + } + + public void TestUnionOperator () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar|/foo/baz"); + AssertEquals (2, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [1]); + } + + public void TestNodeWildcard () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar />baz<quux /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/node()"); + AssertEquals (3, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [1]); + AssertSame (document.DocumentElement.ChildNodes [2], nodes [2]); + } + + public void TestPositionalPredicate () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar>1</bar><bar>2</bar></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar[1]"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [0], nodes [0]); + } + + public void TestAllFollowingSiblings () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /><quux /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar/following-sibling::*"); + AssertEquals (2, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [0]); + AssertSame (document.DocumentElement.ChildNodes [2], nodes [1]); + } + + public void TestFollowingSiblingBaz () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /><quux /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar/following-sibling::baz"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [1], nodes [0]); + } + + public void TestFollowingSiblingQuux () + { + XmlDocument document = new XmlDocument (); + document.LoadXml ("<foo><bar /><baz /><quux /></foo>"); + XmlNodeList nodes = document.SelectNodes ("/foo/bar/following-sibling::quux"); + AssertEquals (1, nodes.Count); + AssertSame (document.DocumentElement.ChildNodes [2], nodes [0]); + } + } +} |