// (C)2003 Atsushi Enomoto\r
//\r
using System;\r
+using System.IO;\r
using System.Xml;\r
using System.Xml.Schema;\r
using NUnit.Framework;\r
AssertEquals ("foo-def", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("foo-def", dvr.Value);\r
// bar\r
Assert (dvr.MoveToNextAttribute ());\r
AssertEquals ("bar-def", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("bar-def", dvr.Value);\r
}\r
\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (!dvr.ReadAttributeValue ());\r
\r
// bar\r
// ReadAttributeValue()\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("internal ", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals (" value", dvr.Value);\r
\r
// ValidationType = None\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (!dvr.ReadAttributeValue ());\r
\r
// bar\r
// ReadAttributeValue()\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("internal ", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals (" value", dvr.Value);\r
}\r
\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (!dvr.ReadAttributeValue ());\r
\r
// bar\r
// ReadAttributeValue()\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("internal ", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals (" value", dvr.Value);\r
\r
// ValidationType = None\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (!dvr.ReadAttributeValue ());\r
\r
// bar\r
// ReadAttributeValue()\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals ("internal ", dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
AssertEquals ("ent", dvr.Name);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
Assert (dvr.ReadAttributeValue ());\r
AssertEquals (XmlNodeType.Text, dvr.NodeType);\r
- AssertEquals ("", dvr.Name);\r
+ AssertEquals (String.Empty, dvr.Name);\r
AssertEquals (" value", dvr.Value);\r
}\r
\r
dvr.Read ();\r
AssertEquals (XmlNodeType.EndEntity, dvr.NodeType);\r
AssertEquals (1, dvr.Depth);\r
- AssertEquals ("", dvr.Value);\r
+ AssertEquals (String.Empty, dvr.Value);\r
\r
dvr.Read (); // &ent2;\r
AssertEquals (XmlNodeType.EntityReference, dvr.NodeType);\r
r.Read ();\r
AssertEquals (refOut, r.ReadOuterXml ());\r
}\r
+\r
+ [Test]\r
+ // imported testcase from sys.security which had regression.\r
+ public void ResolveEntityAndBaseURI ()\r
+ {\r
+ try {\r
+ using (TextWriter w = File.CreateText ("world.txt")) {\r
+ w.WriteLine ("world");\r
+ }\r
+ using (TextWriter w = File.CreateText ("doc.dtd")) {\r
+ w.WriteLine ("<!-- dummy -->");\r
+ }\r
+\r
+ string xml = "<!DOCTYPE doc SYSTEM \"doc.dtd\" [\n" +\r
+ "<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>\n" +\r
+ "<!ENTITY ent1 \"Hello\">\n" +\r
+ "<!ENTITY ent2 SYSTEM \"world.txt\">\n" +\r
+ "<!ENTITY entExt SYSTEM \"earth.gif\" NDATA gif>\n" +\r
+ "<!NOTATION gif SYSTEM \"viewgif.exe\">\n" +\r
+ "]>\n" +\r
+ "<doc attrExtEnt=\"entExt\">\n" +\r
+ " &ent1;, &ent2;!\n" +\r
+ "</doc>\n" +\r
+ "\n" +\r
+ "<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n";\r
+\r
+ XmlValidatingReader xvr =\r
+ new XmlValidatingReader (\r
+ xml, XmlNodeType.Document, null);\r
+ xvr.ValidationType = ValidationType.None;\r
+ xvr.EntityHandling =\r
+ EntityHandling.ExpandCharEntities;\r
+ XmlDocument doc = new XmlDocument ();\r
+ doc.Load (xvr);\r
+\r
+ } finally {\r
+ if (File.Exists ("world.txt"))\r
+ File.Delete ("world.txt");\r
+ if (File.Exists ("doc.dtd"))\r
+ File.Delete ("doc.dtd");\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ //[NotWorking ("default namespace seems null, not String.Empty")]\r
+#if NET_2_0\r
+#else\r
+ // MS.NET 1.x does not consider cases that xmlns* attributes\r
+ // could be declared as default.\r
+ [Category ("NotDotNet")]\r
+#endif\r
+ public void DefaultXmlnsAttributeLookup ()\r
+ {\r
+ string xml = @"<!DOCTYPE X [\r
+ <!ELEMENT X (Y)+>\r
+ <!ENTITY baz 'urn:baz'>\r
+ <!ATTLIST X\r
+ xmlns CDATA 'urn:foo'\r
+ xmlns:bar CDATA 'urn:bar'\r
+ xmlns:baz CDATA #IMPLIED\r
+ dummy CDATA 'dummy'\r
+ baz:dummy CDATA 'dummy'>\r
+ <!ELEMENT Y (#PCDATA)*>\r
+ <!ATTLIST Y\r
+ xmlns CDATA #IMPLIED\r
+ xmlns:bar CDATA #IMPLIED>\r
+ ]>\r
+ <X xmlns:baz='&baz;'><Y/><Y>text.</Y><Y xmlns='' xmlns:bar='urn:hoge'>text.</Y></X>";\r
+ XmlValidatingReader xvr = new XmlValidatingReader (\r
+ xml, XmlNodeType.Document, null);\r
+ xvr.Read (); // DTD\r
+ xvr.Read (); // whitespace\r
+ xvr.Read ();\r
+ AssertEquals ("#1-1", "urn:foo", xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#1-2", "urn:bar", xvr.LookupNamespace ("bar"));\r
+\r
+ AssertEquals ("#1-a", "urn:baz", xvr.LookupNamespace ("baz"));\r
+ Assert ("#1-b", xvr.MoveToAttribute ("baz:dummy"));\r
+ AssertEquals ("#1-c", "urn:baz", xvr.NamespaceURI);\r
+\r
+ Assert ("#1-d", xvr.MoveToAttribute ("dummy"));\r
+ AssertEquals ("#1-e", String.Empty, xvr.NamespaceURI);\r
+\r
+ xvr.Read (); // first Y, empty element\r
+ AssertEquals ("#2-1", "urn:foo", xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#2-2", "urn:bar", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // second Y, start element\r
+ AssertEquals ("#3-1", "urn:foo", xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#3-2", "urn:bar", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // inside normal Y. Check inheritance\r
+ AssertEquals ("#4-1", "urn:foo", xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#4-2", "urn:bar", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // second Y, end element\r
+ AssertEquals ("#5-1", "urn:foo", xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#5-2", "urn:bar", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // third Y, suppresses default namespaces\r
+ AssertEquals ("#6-1", null, xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#6-2", "urn:hoge", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // inside suppressing Y. Check inheritance\r
+ AssertEquals ("#7-1", null, xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#7-2", "urn:hoge", xvr.LookupNamespace ("bar"));\r
+ xvr.Read (); // end of suppressing element\r
+ AssertEquals ("#8-1", null, xvr.LookupNamespace (String.Empty));\r
+ AssertEquals ("#8-2", "urn:hoge", xvr.LookupNamespace ("bar"));\r
+ }\r
}\r
}\r