+2003-10-13 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+
+ * XmlElementTests.cs : Added more tests on
+ RemoveDoesNotRemoveDefaultAttributes().
+ * XmlNodeTests.cs : Added Normalize(), GetNamespaceOfPrefix() and
+ GetNamespaceOfPrefixNullArg().
+ * XmlWriterTests.cs : Added WriteNodeNone().
+
2003-10-05 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
* XmlConvertTests.cs : patch by Jonathan Kessler. Added more test
string xml = dtd + "<root bar='baz' />";
XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
document.Load (xvr);
+ // RemoveAll
AssertNotNull (document.DocumentElement);
AssertEquals (2, document.DocumentElement.Attributes.Count);
AssertEquals ("baz", document.DocumentElement.GetAttribute ("bar"));
AssertEquals (1, document.DocumentElement.Attributes.Count);
AssertEquals ("def", document.DocumentElement.GetAttribute ("foo"));
AssertEquals (String.Empty, document.DocumentElement.GetAttribute ("bar"));
+
+ // RemoveAllAttributes
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAllAttributes ();
+ AssertEquals (1, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttribute(name)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttribute ("foo");
+ AssertEquals (2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttribute(name, ns)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttribute ("foo", String.Empty);
+ AssertEquals (2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeAt
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeAt (1);
+ AssertEquals (2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeNode
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeNode (document.DocumentElement.Attributes [1]);
+ AssertEquals (2, document.DocumentElement.Attributes.Count);
+
+ // RemoveAttributeNode(name, ns)
+ xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ document.Load (xvr);
+ document.DocumentElement.RemoveAttributeNode ("foo", String.Empty);
+ AssertEquals (2, document.DocumentElement.Attributes.Count);
}
[Test]
*/
}
+ [Test]
+ public void GetNamespaceOfPrefix ()
+ {
+ document.LoadXml ("<root xmlns='urn:default' attr='value' "
+ + "xml:lang='en' xmlns:foo='urn:foo' foo:att='fooatt'>text node</root>");
+ XmlNode n = document.DocumentElement;
+ AssertEquals ("urn:default", n.GetNamespaceOfPrefix (String.Empty));
+ AssertEquals ("urn:foo", n.GetNamespaceOfPrefix ("foo"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("bar"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("xml"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("xmlns"));
+
+ n = document.DocumentElement.FirstChild;
+ AssertEquals ("urn:default", n.GetNamespaceOfPrefix (String.Empty));
+ AssertEquals ("urn:foo", n.GetNamespaceOfPrefix ("foo"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("bar"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("xml"));
+ AssertEquals (String.Empty, n.GetNamespaceOfPrefix ("xmlns"));
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void GetNamespaceOfPrefixNullArg ()
+ {
+ new XmlDocument ().GetNamespaceOfPrefix (null);
+ }
+
[Test]
public void InsertBefore()
{
#endif
}
+ [Test]
+ public void Normalize ()
+ {
+ XmlDocument doc = new XmlDocument ();
+ doc.LoadXml ("<root>This is the <b>hardest</b> one.</root>");\r
+ doc.NodeInserted += new XmlNodeChangedEventHandler (EventNodeInserted);\r
+ doc.NodeChanged += new XmlNodeChangedEventHandler (EventNodeChanged);\r
+ doc.NodeRemoved += new XmlNodeChangedEventHandler (EventNodeRemoved);\r
+\r
+ AssertEquals (3, doc.DocumentElement.ChildNodes.Count);\r
+\r
+ doc.DocumentElement.Normalize ();\r
+ AssertEquals (3, doc.DocumentElement.ChildNodes.Count);\r
+ Assert (changed);\r
+ inserted = changed = removed = false;\r
+\r
+ doc.DocumentElement.AppendChild (doc.CreateTextNode ("Addendum."));\r
+ AssertEquals (4, doc.DocumentElement.ChildNodes.Count);\r
+ inserted = changed = removed = false;\r
+\r
+ doc.DocumentElement.Normalize ();\r
+ AssertEquals (3, doc.DocumentElement.ChildNodes.Count);\r
+ Assert (changed);\r
+ Assert (removed);\r
+ inserted = changed = removed = false;\r
+\r
+ doc.DocumentElement.SetAttribute ("attr", "");\r
+ XmlAttribute attr = doc.DocumentElement.Attributes [0] as XmlAttribute;\r
+ AssertEquals (1, attr.ChildNodes.Count);\r
+ inserted = changed = removed = false;\r
+ attr.Normalize ();\r
+ // Such behavior violates DOM Level 2 Node#normalize(),\r
+ // but MS DOM is designed as such.\r
+ AssertEquals (1, attr.ChildNodes.Count);\r
+ }
+
[Test]
public void PrependChild()
{
AssertEquals (xml.Replace ("'", "\""),\r
writer.ToString ());\r
}\r
- \r
+\r
+ [Test]\r
+ public void WriteNodeNone ()\r
+ {\r
+ setupWriter ();\r
+ XmlTextReader xtr = new XmlTextReader ("", XmlNodeType.Element, null);\r
+ xtr.Read ();\r
+ xtw.WriteNode (xtr, false); // does not report any errors\r
+ }\r
\r
// MS.NET's not-overriden XmlWriter.WriteStartElement(name)\r
// invokes WriteStartElement(null, name, null). \r