Pārlūkot izejas kodu

2005-10-23 Atsushi Enomoto <[email protected]>

	* XPathNavigatorCommonTests.cs, XPathNavigatorTests.cs,
	  XPathNavigatorEvaluateTests.cs :
	  Added assertion labels. Marked some tests as NotDotNet under 2.0.


svn path=/trunk/mcs/; revision=52094
Atsushi Eno 20 gadi atpakaļ
vecāks
revīzija
9a196ea564

+ 6 - 0
mcs/class/System.XML/Test/System.Xml.XPath/ChangeLog

@@ -1,3 +1,9 @@
+2005-10-23  Atsushi Enomoto <[email protected]>
+
+	* XPathNavigatorCommonTests.cs, XPathNavigatorTests.cs,
+	  XPathNavigatorEvaluateTests.cs :
+	  Added assertion labels. Marked some tests as NotDotNet under 2.0.
+
 2005-08-31  Sebastien Pouliot  <[email protected]>
 
 	* XPathExceptionCas.cs: New. CAS unit tests for exception 

+ 54 - 49
mcs/class/System.XML/Test/System.Xml.XPath/XPathNavigatorCommonTests.cs

@@ -40,17 +40,18 @@ namespace MonoTests.System.Xml
 			return xpathDocument.CreateNavigator ();
 		}
 
-		private void AssertNavigator (XPathNavigator nav, XPathNodeType type, string prefix, string localName, string ns, string name, string value, bool hasAttributes, bool hasChildren, bool isEmptyElement)
+		private void AssertNavigator (string label, XPathNavigator nav, XPathNodeType type, string prefix, string localName, string ns, string name, string value, bool hasAttributes, bool hasChildren, bool isEmptyElement)
 		{
-			AssertEquals ("NodeType", type, nav.NodeType);
-			AssertEquals ("Prefix", prefix, nav.Prefix);
-			AssertEquals ("LocalName", localName, nav.LocalName);
-			AssertEquals ("Namespace", ns, nav.NamespaceURI);
-			AssertEquals ("Name", name, nav.Name);
-			AssertEquals ("Value", value, nav.Value);
-			AssertEquals ("HasAttributes", hasAttributes, nav.HasAttributes);
-			AssertEquals ("HasChildren", hasChildren, nav.HasChildren);
-			AssertEquals ("IsEmptyElement", isEmptyElement, nav.IsEmptyElement);
+			label += nav.GetType ();
+			AssertEquals (label + "NodeType", type, nav.NodeType);
+			AssertEquals (label + "Prefix", prefix, nav.Prefix);
+			AssertEquals (label + "LocalName", localName, nav.LocalName);
+			AssertEquals (label + "Namespace", ns, nav.NamespaceURI);
+			AssertEquals (label + "Name", name, nav.Name);
+			AssertEquals (label + "Value", value, nav.Value);
+			AssertEquals (label + "HasAttributes", hasAttributes, nav.HasAttributes);
+			AssertEquals (label + "HasChildren", hasChildren, nav.HasChildren);
+			AssertEquals (label + "IsEmptyElement", isEmptyElement, nav.IsEmptyElement);
 		}
 
 		[Test]
@@ -67,7 +68,7 @@ namespace MonoTests.System.Xml
 		public void DocumentWithXmlDeclaration (XPathNavigator nav)
 		{
 			nav.MoveToFirstChild ();
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "bar", false, true, false);
+			AssertNavigator ("#1", nav, XPathNodeType.Element, "", "foo", "", "foo", "bar", false, true, false);
 		}
 
 		[Test]
@@ -84,7 +85,7 @@ namespace MonoTests.System.Xml
 		public void DocumentWithProcessingInstruction (XPathNavigator nav)
 		{
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.ProcessingInstruction, "", "xml-stylesheet", "", "xml-stylesheet", "href='foo.xsl' type='text/xsl' ", false, false, false);
+			AssertNavigator ("#1", nav, XPathNodeType.ProcessingInstruction, "", "xml-stylesheet", "", "xml-stylesheet", "href='foo.xsl' type='text/xsl' ", false, false, false);
 			Assert (!nav.MoveToFirstChild ());
 		}
 
@@ -101,14 +102,14 @@ namespace MonoTests.System.Xml
 
 		private void XmlRootElementOnly (XPathNavigator nav)
 		{
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, false, true);
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, false, true);
 			Assert (!nav.MoveToFirstChild ());
 			Assert (!nav.MoveToNext ());
 			Assert (!nav.MoveToPrevious ());
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#3", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 			Assert (!nav.MoveToNext ());
 		}
 
@@ -125,24 +126,24 @@ namespace MonoTests.System.Xml
 
 		private void XmlSimpleTextContent (XPathNavigator nav)
 		{
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
 			Assert (!nav.MoveToNext ());
 			Assert (!nav.MoveToPrevious ());
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Text, "", "", "", "", "Test.", false, false, false);
+			AssertNavigator ("#3", nav, XPathNodeType.Text, "", "", "", "", "Test.", false, false, false);
 
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "foo", "", "foo", "Test.", false, true, false);
 
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+			AssertNavigator ("#5", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
 
 			nav.MoveToFirstChild ();
 			nav.MoveToFirstChild ();
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
+			AssertNavigator ("#6", nav, XPathNodeType.Root, "", "", "", "", "Test.", false, true, false);
 			Assert (!nav.MoveToNext ());
 		}
 
@@ -159,20 +160,20 @@ namespace MonoTests.System.Xml
 
 		private void XmlSimpleElementContent (XPathNavigator nav)
 		{
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
 			Assert (!nav.MoveToNext ());
 			Assert (!nav.MoveToPrevious ());
 
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+			AssertNavigator ("#3", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
 
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
 
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#5", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 			Assert (!nav.MoveToNext ());
 		}
 
@@ -189,26 +190,26 @@ namespace MonoTests.System.Xml
 
 		private void XmlTwoElementsContent (XPathNavigator nav)
 		{
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#1", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
+			AssertNavigator ("#2", nav, XPathNodeType.Element, "", "foo", "", "foo", "", false, true, false);
 			Assert (!nav.MoveToNext ());
 			Assert (!nav.MoveToPrevious ());
 
 			Assert (nav.MoveToFirstChild ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+			AssertNavigator ("#3", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
 			Assert (!nav.MoveToFirstChild ());
 
 			Assert (nav.MoveToNext ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "baz", "", "baz", "", false, false, true);
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "baz", "", "baz", "", false, false, true);
 			Assert (!nav.MoveToFirstChild ());
 
 			Assert (nav.MoveToPrevious ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
+			AssertNavigator ("#5", nav, XPathNodeType.Element, "", "bar", "", "bar", "", false, false, true);
 
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#6", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 			Assert (!nav.MoveToNext ());
 		}
 
@@ -226,33 +227,37 @@ namespace MonoTests.System.Xml
 		private void XmlElementWithAttributes (XPathNavigator nav)
 		{
 			nav.MoveToFirstChild ();
-			AssertNavigator (nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
+			AssertNavigator ("#1", nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
 			Assert (!nav.MoveToNext ());
 			Assert (!nav.MoveToPrevious ());
 
 			Assert (nav.MoveToFirstAttribute ());
-			AssertNavigator (nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
+			AssertNavigator ("#2", nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
 			Assert (!nav.MoveToFirstAttribute ());	// On attributes, it fails.
 
 			Assert (nav.MoveToNextAttribute ());
-			AssertNavigator (nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
+			AssertNavigator ("#3", nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
 			Assert (!nav.MoveToNextAttribute ());
 
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
+			AssertNavigator ("#4", nav, XPathNodeType.Element, "", "img", "", "img", "", true, false, true);
 
 			Assert (nav.MoveToAttribute ("alt", ""));
-			AssertNavigator (nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
+			AssertNavigator ("#5", nav, XPathNodeType.Attribute, "", "alt", "", "alt", "image Fooooooo!", false, false, false);
 			Assert (!nav.MoveToAttribute ("src", ""));	// On attributes, it fails.
 			Assert (nav.MoveToParent ());
 			Assert (nav.MoveToAttribute ("src", ""));
-			AssertNavigator (nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
+			AssertNavigator ("#6", nav, XPathNodeType.Attribute, "", "src", "", "src", "foo.png", false, false, false);
 
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
+			AssertNavigator ("#7", nav, XPathNodeType.Root, "", "", "", "", "", false, true, false);
 		}
 
 		[Test]
+		// seems like MS does not want to fix their long-time-known
+		// XPathNavigator bug, so just set it as NotDotNet.
+		// We are better.
+		[Category ("NotDotNet")]
 		public void XmlNamespaceNode ()
 		{
 			string xml = "<html xmlns='http://www.w3.org/1999/xhtml'><body>test.</body></html>";
@@ -268,10 +273,10 @@ namespace MonoTests.System.Xml
 			string xhtml = "http://www.w3.org/1999/xhtml";
 			string xmlNS = "http://www.w3.org/XML/1998/namespace";
 			nav.MoveToFirstChild ();
-			AssertNavigator (nav, XPathNodeType.Element,
+			AssertNavigator ("#1", nav, XPathNodeType.Element,
 				"", "html", xhtml, "html", "test.", false, true, false);
 			Assert (nav.MoveToFirstNamespace (XPathNamespaceScope.Local));
-			AssertNavigator (nav, XPathNodeType.Namespace,
+			AssertNavigator ("#2", nav, XPathNodeType.Namespace,
 				"", "", "", "", xhtml, false, false, false);
 
 			// Test difference between Local, ExcludeXml and All.
@@ -281,42 +286,42 @@ namespace MonoTests.System.Xml
 			// see http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q316808
 #if true
 			Assert (nav.MoveToNextNamespace (XPathNamespaceScope.All));
-			AssertNavigator (nav, XPathNodeType.Namespace,
+			AssertNavigator ("#3", nav, XPathNodeType.Namespace,
 				"", "xml", "", "xml", xmlNS, false, false, false);
 			Assert (!nav.MoveToNextNamespace (XPathNamespaceScope.All));
 #endif
 			// Test to check if MoveToRoot() resets Namespace node status.
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
+			AssertNavigator ("#4", nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
 			nav.MoveToFirstChild ();
 
 			// Test without XPathNamespaceScope argument.
 			Assert (nav.MoveToFirstNamespace ());
 			Assert (nav.MoveToNextNamespace ());
-			AssertNavigator (nav, XPathNodeType.Namespace,
+			AssertNavigator ("#5", nav, XPathNodeType.Namespace,
 				"", "xml", "", "xml", xmlNS, false, false, false);
 
 			// Test MoveToParent()
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Element,
+			AssertNavigator ("#6", nav, XPathNodeType.Element,
 				"", "html", xhtml, "html", "test.", false, true, false);
 
 			nav.MoveToFirstChild ();	// body
 			// Test difference between Local and ExcludeXml
 			Assert (!nav.MoveToFirstNamespace (XPathNamespaceScope.Local));
 			Assert (nav.MoveToFirstNamespace (XPathNamespaceScope.ExcludeXml));
-			AssertNavigator (nav, XPathNodeType.Namespace,
+			AssertNavigator ("#7", nav, XPathNodeType.Namespace,
 				"", "", "", "", xhtml, false, false, false);
 
 			Assert (nav.MoveToNextNamespace (XPathNamespaceScope.All));
-			AssertNavigator (nav, XPathNodeType.Namespace,
+			AssertNavigator ("#8", nav, XPathNodeType.Namespace,
 				"", "xml", "", "xml", xmlNS, false, false, false);
 			Assert (nav.MoveToParent ());
-			AssertNavigator (nav, XPathNodeType.Element,
+			AssertNavigator ("#9", nav, XPathNodeType.Element,
 				"", "body", xhtml, "body", "test.", false, true, false);
 
 			nav.MoveToRoot ();
-			AssertNavigator (nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
+			AssertNavigator ("#10", nav, XPathNodeType.Root, "", "", "", "", "test.", false, true, false);
 		}
 
 		[Test]

+ 19 - 7
mcs/class/System.XML/Test/System.Xml.XPath/XPathNavigatorEvaluateTests.cs

@@ -47,6 +47,12 @@ namespace MonoTests.System.Xml
 
 		// Testing Core Funcetion Library functions defined at: http://www.w3.org/TR/xpath#corelib
 		[Test]
+#if NET_2_0
+		// .NET 2.0 is fixed for last() to return 1 for the
+		// initial context position. We should follow the fix.
+		[Category ("NotWorking")]
+		[Category ("NotDotNet")]
+#endif
 		public void CoreFunctionNodeSetLast ()
 		{
 			expression = navigator.Compile("last()");
@@ -61,21 +67,27 @@ namespace MonoTests.System.Xml
 		}
 
 		[Test]
+#if NET_2_0
+		// .NET 2.0 is fixed for position() to return 1 for the
+		// initial context position. We should follow the fix.
+		[Category ("NotWorking")]
+		[Category ("NotDotNet")]
+#endif
 		public void CoreFunctionNodeSetPosition ()
 		{
 			expression = navigator.Compile("position()");
 			iterator = navigator.Select("/foo");
-			AssertEquals ("0", navigator.Evaluate ("position()").ToString ());
-			AssertEquals ("0", navigator.Evaluate (expression, null).ToString ());
-			AssertEquals ("0", navigator.Evaluate (expression, iterator).ToString ());
+			AssertEquals ("#1", "0", navigator.Evaluate ("position()").ToString ());
+			AssertEquals ("#2", "0", navigator.Evaluate (expression, null).ToString ());
+			AssertEquals ("#3", "0", navigator.Evaluate (expression, iterator).ToString ());
 			iterator = navigator.Select("/foo/*");
-			AssertEquals ("0", navigator.Evaluate (expression, iterator).ToString ());
+			AssertEquals ("#4", "0", navigator.Evaluate (expression, iterator).ToString ());
 			iterator.MoveNext();
-			AssertEquals ("1", navigator.Evaluate (expression, iterator).ToString ());
+			AssertEquals ("#5", "1", navigator.Evaluate (expression, iterator).ToString ());
 			iterator.MoveNext ();
-			AssertEquals ("2", navigator.Evaluate (expression, iterator).ToString ());
+			AssertEquals ("#6", "2", navigator.Evaluate (expression, iterator).ToString ());
 			iterator.MoveNext ();
-			AssertEquals ("3", navigator.Evaluate (expression, iterator).ToString ());
+			AssertEquals ("#7", "3", navigator.Evaluate (expression, iterator).ToString ());
 		}
 
 		[Test]

+ 4 - 0
mcs/class/System.XML/Test/System.Xml.XPath/XPathNavigatorTests.cs

@@ -254,11 +254,15 @@ namespace MonoTests.System.Xml
 			nav = new XPathDocument (xvr).CreateNavigator ();
 			Assert ("ctor() from XmlValidatingReader", nav.MoveToId ("aaa"));
 
+			// FIXME: it seems to result in different in .NET 2.0.
+#if NET_2_0
+#else
 			// When it is XmlTextReader, XPathDocument fails.
 			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
 			nav = new XPathDocument (xtr).CreateNavigator ();
 			Assert ("ctor() from XmlTextReader", !nav.MoveToId ("aaa"));
 			xtr.Close ();
+#endif
 		}
 
 		[Test]