2 // MonoTests.System.Xml.XPathNavigatorMatchesTests
5 // Jason Diamond <jason@injektilo.org>
6 // Martin Willemoes Hansen <mwh@sysrq.dk>
8 // (C) 2002 Jason Diamond
9 // (C) 2003 Martin Willemoes Hansen
14 using System
.Xml
.XPath
;
16 using NUnit
.Framework
;
18 namespace MonoTests
.System
.Xml
21 public class XPathNavigatorMatchesTests
: Assertion
23 private XPathNavigator
CreateNavigator (string xml
)
25 XmlDocument document
= new XmlDocument ();
26 document
.LoadXml (xml
);
27 return document
.CreateNavigator ();
31 public void MatchRoot ()
33 XPathNavigator navigator
= CreateNavigator ("<foo />");
34 Assert (navigator
.Matches ("/"));
38 public void FalseMatchRoot ()
40 XPathNavigator navigator
= CreateNavigator ("<foo />");
41 Assert (!navigator
.Matches ("foo"));
45 public void MatchDocumentElement ()
47 XmlDocument document
= new XmlDocument ();
48 document
.LoadXml ("<foo />");
49 XPathNavigator navigator
= document
.DocumentElement
.CreateNavigator ();
51 Assert (navigator
.Matches ("foo"));
55 public void MatchAbsoluteDocumentElement ()
57 XmlDocument document
= new XmlDocument ();
58 document
.LoadXml ("<foo />");
59 XPathNavigator navigator
= document
.DocumentElement
.CreateNavigator ();
61 Assert (navigator
.Matches ("/foo"));
65 public void MatchDocumentElementChild ()
67 XmlDocument document
= new XmlDocument ();
68 document
.LoadXml ("<foo><bar /></foo>");
69 XPathNavigator navigator
= document
.DocumentElement
.FirstChild
.CreateNavigator ();
71 Assert (navigator
.Matches ("bar"));
72 Assert (navigator
.Matches ("foo/bar"));
76 public void MatchAttribute ()
78 XmlDocument document
= new XmlDocument ();
79 document
.LoadXml ("<foo bar='baz' />");
80 XPathNavigator navigator
= document
.DocumentElement
.Attributes
[0].CreateNavigator ();
82 Assert (navigator
.Matches ("@bar"));
83 Assert (navigator
.Matches ("foo/@bar"));
87 public void SlashSlash ()
89 XmlDocument document
= new XmlDocument ();
90 document
.LoadXml ("<foo><bar><baz/></bar></foo>");
91 XPathNavigator navigator
= document
.DocumentElement
.FirstChild
.FirstChild
.CreateNavigator ();
93 Assert (navigator
.Matches ("foo//baz"));
97 public void AbsoluteSlashSlash ()
99 XmlDocument document
= new XmlDocument ();
100 document
.LoadXml ("<foo><bar><baz/></bar></foo>");
101 XPathNavigator navigator
= document
.DocumentElement
.FirstChild
.FirstChild
.CreateNavigator ();
103 Assert (navigator
.Matches ("//baz"));
107 public void MatchDocumentElementWithPredicate ()
109 XmlDocument document
= new XmlDocument ();
110 document
.LoadXml ("<foo><bar /></foo>");
111 XPathNavigator navigator
= document
.DocumentElement
.CreateNavigator ();
113 Assert (navigator
.Matches ("foo[bar]"));
117 public void FalseMatchDocumentElementWithPredicate ()
119 XmlDocument document
= new XmlDocument ();
120 document
.LoadXml ("<foo><bar /></foo>");
121 XPathNavigator navigator
= document
.DocumentElement
.CreateNavigator ();
123 Assert (!navigator
.Matches ("foo[baz]"));
127 public void MatchesAncestorsButNotCurrent ()
129 XPathNavigator nav
= CreateNavigator ("<foo><bar><baz/></bar></foo>");
130 nav
.MoveToFirstChild (); // foo
131 nav
.MoveToFirstChild (); // bar
132 nav
.MoveToFirstChild (); // baz
133 Assert (nav
.Matches ("baz"));
134 Assert (nav
.Matches ("bar/baz"));
135 Assert (!nav
.Matches ("foo/bar"));
139 [ExpectedException (typeof (XPathException
))]
140 public void MatchesParentAxis ()
142 XPathNavigator nav
= CreateNavigator ("<foo/>");
147 [ExpectedException (typeof (XPathException
))]
148 public void MatchesPredicatedParentAxis ()
150 XPathNavigator nav
= CreateNavigator ("<foo/>");
151 nav
.Matches ("..[1]");