Browse Source

more xpath core function tests.

svn path=/trunk/mcs/; revision=7379
Kral Ferch 23 years ago
parent
commit
c57901837e

+ 5 - 0
mcs/class/System.XML/Test/ChangeLog

@@ -1,3 +1,8 @@
+2002-09-11  Kral Ferch <[email protected]>
+
+	* XPathNavigatorEvaluateTests.cs:  Added tests for
+	local-name, namespace-uri, and string.
+
 2002-09-11  Kral Ferch <[email protected]>
 
 	* Added XPathNavigatorEvaluateTests.cs file to 

+ 1 - 1
mcs/class/System.XML/Test/MonoMicro.Test.csproj

@@ -75,7 +75,7 @@
                 <Reference
                     Name = "System.XML"
                     AssemblyName = "System.XML"
-                    HintPath = "..\obj\Debug\System.XML.dll"
+                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
                 />
             </References>
         </Build>

+ 58 - 6
mcs/class/System.XML/Test/XPathNavigatorEvaluateTests.cs

@@ -21,9 +21,11 @@ namespace MonoTests.System.Xml
 		public XPathNavigatorEvaluateTests (string name) : base (name) {}
 
 		XmlDocument document;
-		XmlDocument document2;
 		XPathNavigator navigator;
+		XmlDocument document2;
 		XPathNavigator navigator2;
+		XmlDocument document3;
+		XPathNavigator navigator3;
 		XPathExpression expression;
 		XPathNodeIterator iterator;
 
@@ -36,6 +38,10 @@ namespace MonoTests.System.Xml
 			document2 = new XmlDocument ();
 			document2.LoadXml ("<foo><bar baz='1'/><bar baz='2'/><bar baz='3'/></foo>");
 			navigator2 = document2.CreateNavigator ();
+
+			document3 = new XmlDocument ();
+			document3.LoadXml ("<foo><bar/><baz/><qux/></foo>");
+			navigator3 = document3.CreateNavigator ();
 		}
 
 		// Testing Core Function Library functions defined at: http://www.w3.org/TR/xpath#corelib
@@ -81,7 +87,7 @@ namespace MonoTests.System.Xml
 
 		public void saveTestCoreFunctionNodeSetID ()
 		{
-			document.LoadXml(
+			document.LoadXml (
 				"<!DOCTYPE foo [" +
 				"<!ELEMENT foo (bar)>" +
 				"<!ELEMENT bar EMPTY>" +
@@ -94,14 +100,60 @@ namespace MonoTests.System.Xml
 			AssertEquals("world", navigator.Evaluate ("string(id('2')/@qux)").ToString ());
 		}
 
-		public void saveTestCoreFunctionLocalName ()
+		public void TestCoreFunctionLocalName ()
+		{
+			AssertEquals("", navigator.Evaluate ("local-name()").ToString ());
+			AssertEquals("", navigator.Evaluate ("local-name(/bogus)").ToString ());
+			AssertEquals("foo", navigator.Evaluate ("local-name(/foo)").ToString ());
+			AssertEquals("bar", navigator3.Evaluate ("local-name(/foo/*)").ToString ());
+		}
+
+		// TODO:  umm.  Unable to make this return a namespace-uri so far...
+		public void TestCoreFunctionNamespaceURI ()
+		{
+			document.LoadXml ("<foo:bar xmlns:foo='#foo'><foo:baz><foo:qux /></foo:baz></foo:bar>");
+			navigator = document.CreateNavigator();
+
+			AssertEquals("", navigator.Evaluate ("namespace-uri()").ToString ());
+			AssertEquals("", navigator.Evaluate ("namespace-uri(/bogus)").ToString ());
+			//AssertEquals("foo", navigator.Evaluate ("namespace-uri(/bar)").ToString ());
+			AssertEquals("", navigator2.Evaluate ("namespace-uri(//bar)").ToString ());
+		}
+
+		public void saveTestCoreFunctionString ()
+		{
+			document.LoadXml ("<foo>hello<bar>world</bar><baz>how are you</baz></foo>");
+			navigator = document.CreateNavigator();
+
+			AssertEquals("world", navigator.Evaluate ("string(/foo/*)").ToString ());
+			AssertEquals("NaN", navigator.Evaluate ("string(0 div 0)").ToString ());
+			//AssertEquals("0", navigator.Evaluate ("string(+0)").ToString ());
+			//AssertEquals("0", navigator.Evaluate ("string(-0)").ToString ());
+			AssertEquals("Infinity", navigator.Evaluate ("string(1 div 0)").ToString ());
+			AssertEquals("-Infinity", navigator.Evaluate ("string(-1 div 0)").ToString ());
+			AssertEquals("45", navigator.Evaluate ("string(45)").ToString ());
+			AssertEquals("-22", navigator.Evaluate ("string(-22)").ToString ());
+			AssertEquals("0.25", navigator.Evaluate ("string(.25)").ToString ());
+			AssertEquals("-0.25", navigator.Evaluate ("string(-.25)").ToString ());
+			AssertEquals("2", navigator.Evaluate ("string(2.0)").ToString ());
+			AssertEquals("2.01", navigator.Evaluate ("string(2.01)").ToString ());
+			AssertEquals("-3", navigator.Evaluate ("string(-3.0)").ToString ());
+			AssertEquals("3.45", navigator.Evaluate ("string(3.45)").ToString ());
+
+			// Wonder what this will look like under a different platform.
+			AssertEquals("0.33333333333333331", navigator.Evaluate ("string(1 div 3)").ToString ());
+		}
+
+		public void saveTestCoreFunctionConcat ()
+		{
+		}
+
+		public void saveTestCoreFunctionStartsWith ()
 		{
-			Assert(true);
 		}
 
-		public void saveTestCoreFunctionNamespaceURI ()
+		public void saveTestCoreFunctionContains ()
 		{
-			Assert(true);
 		}
 	}
 }