Added XPathScanner and Tests.
[mono.git] / mcs / class / System.XML / Test / XPathScannerTests.cs
1 //\r
2 // XPathScannerTests.cs\r
3 //\r
4 // Author:\r
5 //   Jason Diamond (jason@injektilo.org)\r
6 //\r
7 // (C) 2002 Jason Diamond  http://injektilo.org/\r
8 //\r
9 \r
10 using System;\r
11 using System.Xml.XPath;\r
12 \r
13 using NUnit.Framework;\r
14 \r
15 namespace Ximian.Mono.Tests\r
16 {\r
17         public class XPathScannerTests : TestCase\r
18         {\r
19                 public XPathScannerTests () : base ("Ximian.Mono.Tests.XPathScannerTests testsuite") { }\r
20                 public XPathScannerTests (string name) : base (name) { }\r
21 \r
22                 public void TestLocationPathWithOneNameTest()\r
23                 {\r
24                         XPathScanner scanner = new XPathScanner ("foo");\r
25                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
26                         AssertEquals ("foo", scanner.Value);\r
27                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
28                         AssertNull (scanner.Value);\r
29                 }\r
30 \r
31                 public void TestLocationPathWithTwoNameTests()\r
32                 {\r
33                         XPathScanner scanner = new XPathScanner ("foo/bar");\r
34                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
35                         AssertEquals ("foo", scanner.Value);\r
36                         AssertEquals (XPathTokenType.Operator, scanner.Scan ());\r
37                         AssertEquals ("/", scanner.Value);\r
38                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
39                         AssertEquals ("bar", scanner.Value);\r
40                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
41                         AssertNull (scanner.Value);\r
42                 }\r
43 \r
44                 public void TestLocationPathWithOneQualifiedNameTest()\r
45                 {\r
46                         XPathScanner scanner = new XPathScanner ("foo:bar");\r
47                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
48                         AssertEquals ("foo:bar", scanner.Value);\r
49                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
50                         AssertNull (scanner.Value);\r
51                 }\r
52 \r
53                 public void TestLocationPathWithTwoQualifiedNameTests()\r
54                 {\r
55                         XPathScanner scanner = new XPathScanner ("foo:bar/baz:quux");\r
56                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
57                         AssertEquals ("foo:bar", scanner.Value);\r
58                         AssertEquals (XPathTokenType.Operator, scanner.Scan ());\r
59                         AssertEquals ("/", scanner.Value);\r
60                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
61                         AssertEquals ("baz:quux", scanner.Value);\r
62                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
63                         AssertNull (scanner.Value);\r
64                 }\r
65 \r
66                 public void TestLocationPathWithOneNameTestWithAxisName()\r
67                 {\r
68                         XPathScanner scanner = new XPathScanner ("child::foo");\r
69                         AssertEquals (XPathTokenType.AxisName, scanner.Scan ());\r
70                         AssertEquals ("child", scanner.Value);\r
71                         AssertEquals (XPathTokenType.ColonColon, scanner.Scan ());\r
72                         AssertEquals ("::", scanner.Value);\r
73                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
74                         AssertEquals ("foo", scanner.Value);\r
75                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
76                         AssertNull (scanner.Value);\r
77                 }\r
78 \r
79                 public void TestLocationPathWithTwoNameTestsWithAxisNames()\r
80                 {\r
81                         XPathScanner scanner = new XPathScanner ("child::foo/preceding-sibling::bar");\r
82                         AssertEquals (XPathTokenType.AxisName, scanner.Scan ());\r
83                         AssertEquals ("child", scanner.Value);\r
84                         AssertEquals (XPathTokenType.ColonColon, scanner.Scan ());\r
85                         AssertEquals ("::", scanner.Value);\r
86                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
87                         AssertEquals ("foo", scanner.Value);\r
88                         AssertEquals (XPathTokenType.Operator, scanner.Scan ());\r
89                         AssertEquals ("/", scanner.Value);\r
90                         AssertEquals (XPathTokenType.AxisName, scanner.Scan ());\r
91                         AssertEquals ("preceding-sibling", scanner.Value);\r
92                         AssertEquals (XPathTokenType.ColonColon, scanner.Scan ());\r
93                         AssertEquals ("::", scanner.Value);\r
94                         AssertEquals (XPathTokenType.NameTest, scanner.Scan ());\r
95                         AssertEquals ("bar", scanner.Value);\r
96                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
97                         AssertNull (scanner.Value);\r
98                 }\r
99 \r
100                 public void TestCommentNodeType()\r
101                 {\r
102                         XPathScanner scanner = new XPathScanner ("comment()");\r
103                         AssertEquals (XPathTokenType.NodeType, scanner.Scan ());\r
104                         AssertEquals ("comment", scanner.Value);\r
105                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
106                         AssertEquals ("(", scanner.Value);\r
107                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
108                         AssertEquals (")", scanner.Value);\r
109                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
110                         AssertNull (scanner.Value);\r
111                 }\r
112 \r
113                 public void TestNodeNodeType()\r
114                 {\r
115                         XPathScanner scanner = new XPathScanner ("node()");\r
116                         AssertEquals (XPathTokenType.NodeType, scanner.Scan ());\r
117                         AssertEquals ("node", scanner.Value);\r
118                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
119                         AssertEquals ("(", scanner.Value);\r
120                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
121                         AssertEquals (")", scanner.Value);\r
122                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
123                         AssertNull (scanner.Value);\r
124                 }\r
125 \r
126                 public void TestProcessingInstructionNodeType()\r
127                 {\r
128                         XPathScanner scanner = new XPathScanner ("processing-instruction()");\r
129                         AssertEquals (XPathTokenType.NodeType, scanner.Scan ());\r
130                         AssertEquals ("processing-instruction", scanner.Value);\r
131                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
132                         AssertEquals ("(", scanner.Value);\r
133                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
134                         AssertEquals (")", scanner.Value);\r
135                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
136                         AssertNull (scanner.Value);\r
137                 }\r
138 \r
139                 public void TestTextNodeType()\r
140                 {\r
141                         XPathScanner scanner = new XPathScanner ("text()");\r
142                         AssertEquals (XPathTokenType.NodeType, scanner.Scan ());\r
143                         AssertEquals ("text", scanner.Value);\r
144                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
145                         AssertEquals ("(", scanner.Value);\r
146                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
147                         AssertEquals (")", scanner.Value);\r
148                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
149                         AssertNull (scanner.Value);\r
150                 }\r
151 \r
152                 public void TestFunctionName()\r
153                 {\r
154                         XPathScanner scanner = new XPathScanner ("foo()");\r
155                         AssertEquals (XPathTokenType.FunctionName, scanner.Scan ());\r
156                         AssertEquals ("foo", scanner.Value);\r
157                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
158                         AssertEquals ("(", scanner.Value);\r
159                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
160                         AssertEquals (")", scanner.Value);\r
161                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
162                         AssertNull (scanner.Value);\r
163                 }\r
164 \r
165                 public void TestQualifiedFunctionName()\r
166                 {\r
167                         XPathScanner scanner = new XPathScanner ("foo:bar()");\r
168                         AssertEquals (XPathTokenType.FunctionName, scanner.Scan ());\r
169                         AssertEquals ("foo:bar", scanner.Value);\r
170                         AssertEquals (XPathTokenType.LeftParen, scanner.Scan ());\r
171                         AssertEquals ("(", scanner.Value);\r
172                         AssertEquals (XPathTokenType.RightParen, scanner.Scan ());\r
173                         AssertEquals (")", scanner.Value);\r
174                         AssertEquals (XPathTokenType.End, scanner.Scan ());\r
175                         AssertNull (scanner.Value);\r
176                 }\r
177         }\r
178 }\r