| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- //
- // System.Xml.XmlTextWriterTests
- //
- // Authors:
- // Atsushi Enomoto <[email protected]>
- // Martin Willemoes Hansen <[email protected]>
- //
- // (C) 2003 Atsushi Enomoto
- // (C) 2003 Martin Willemoes Hansen
- //
- //
- // This class mainly checks inheritance and behaviors of XmlWriter.
- //
- using System;
- using System.IO;
- using System.Text;
- using System.Xml;
- using NUnit.Framework;
- namespace MonoTests.System.Xml
- {
- [TestFixture]
- public class XmlWriterTests : Assertion
- {
- StringWriter writer;
- XmlTextWriter xtw;
- [SetUp]
- public void SetUp ()
- {
- writer = new StringWriter ();
- xtw = new XmlTextWriter (writer);
- }
- private void setupWriter ()
- {
- writer.GetStringBuilder ().Length = 0;
- }
- [Test]
- public void WriteNodeFullDocument ()
- {
- setupWriter ();
- string xml = "<?xml version='1.0'?><root />";
- XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
- xtw.WriteNode (xtr, false);
- AssertEquals (xml, writer.ToString ());
- // With encoding
- setupWriter ();
- xml = "<?xml version='1.0' encoding='iso-2022-jp'?><root />";
- xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
- xtw.WriteNode (xtr, false);
- AssertEquals (xml, writer.ToString ());
- xtr.Close ();
- }
- [Test]
- public void WriteNodeXmlDecl ()
- {
- setupWriter ();
- string xml = "<?xml version='1.0'?><root />";
- StringReader sr = new StringReader (xml);
- XmlTextReader xtr = new XmlTextReader (sr);
- xtr.Read ();
- xtw.WriteNode (xtr, false);
- AssertEquals ("<?xml version='1.0'?>",
- writer.ToString ());
- xtr.Close ();
- }
- [Test]
- public void WriteNodeEmptyElement ()
- {
- setupWriter ();
- string xml = "<root attr='value' attr2='value' />";
- StringReader sr = new StringReader (xml);
- XmlTextReader xtr = new XmlTextReader (sr);
- xtw.WriteNode (xtr, false);
- AssertEquals (xml.Replace ("'", "\""),
- writer.ToString ());
- xtr.Close ();
- }
- [Test]
- public void WriteNodeNonEmptyElement ()
- {
- setupWriter ();
- string xml = @"<foo><bar></bar></foo>";
- xtw.WriteNode (new XmlTextReader (xml, XmlNodeType.Document, null), false);
- AssertEquals (xml, writer.ToString ());
- }
- [Test]
- public void WriteNodeSingleContentElement ()
- {
- setupWriter ();
- string xml = "<root attr='value' attr2='value'><foo /></root>";
- StringReader sr = new StringReader (xml);
- XmlTextReader xtr = new XmlTextReader (sr);
- xtw.WriteNode (xtr, false);
- AssertEquals (xml.Replace ("'", "\""),
- writer.ToString ());
- xtr.Close ();
- }
- [Test]
- public void WriteNodeNone ()
- {
- setupWriter ();
- XmlTextReader xtr = new XmlTextReader ("", XmlNodeType.Element, null);
- xtr.Read ();
- xtw.WriteNode (xtr, false); // does not report any errors
- xtr.Close ();
- }
- [Test]
- [ExpectedException (typeof (XmlException))]
- public void WriteNodeError ()
- {
- XmlTextReader xtr = new XmlTextReader ("<root>", XmlNodeType.Document, null);
- xtr.Read ();
- try {
- xtr.Read ();
- } catch {
- }
- XmlTextWriter xtw = new XmlTextWriter (new StringWriter ());
- xtw.WriteNode (xtr, false);
- }
- [Test]
- public void WriteSurrogateCharEntity ()
- {
- setupWriter ();
- xtw.WriteSurrogateCharEntity ('\udfff', '\udb00');
- AssertEquals ("󐏿", writer.ToString ());
- try {
- xtw.WriteSurrogateCharEntity ('\ud800', '\udc00');
- Fail ();
- } catch {
- }
- try {
- xtw.WriteSurrogateCharEntity ('\udbff', '\ud800');
- Fail ();
- } catch {
- }
- try {
- xtw.WriteSurrogateCharEntity ('\ue000', '\ud800');
- Fail ();
- } catch {
- }
- try {
- xtw.WriteSurrogateCharEntity ('\udfff', '\udc00');
- Fail ();
- } catch {
- }
- }
- // MS.NET's not-overriden XmlWriter.WriteStartElement(name)
- // invokes WriteStartElement(null, name, null).
- // WriteStartElement(name, ns) invokes (null, name, ns), too.
- [Test]
- public void StartElement ()
- {
- StartElementTestWriter xw = new StartElementTestWriter ();
- xw.WriteStartDocument ();
- xw.WriteStartElement ("test");
- AssertEquals ("StartElementOverride.NS", null, xw.NS);
- AssertEquals ("StartElementOverride.Prefix", null, xw.Prefix);
- xw.NS = String.Empty;
- xw.Prefix = String.Empty;
- xw.WriteStartElement ("test", "urn:hoge");
- AssertEquals ("StartElementOverride.NS", "urn:hoge", xw.NS);
- AssertEquals ("StartElementOverride.Prefix", null, xw.Prefix);
- }
-
- class StartElementTestWriter : DefaultXmlWriter
- {
- public StartElementTestWriter () : base () {}
- public string NS = String.Empty;
- public string Prefix = String.Empty;
- public override void WriteStartElement (string prefix, string localName, string ns)
- {
- this.NS = ns;
- this.Prefix = prefix;
- }
- }
- [Test]
- public void WriteAttributes ()
- {
- string xml = "<root><test a='b' c='d' /><b /></root>";
- XmlTextReader xtr = new XmlTextReader (xml,
- XmlNodeType.Document, null);
- xtw.QuoteChar = '\'';
- xtr.Read ();
- xtw.WriteStartElement ("root"); // <root
- xtr.Read ();
- xtw.WriteStartElement ("test"); // ><test
- xtw.WriteAttributes (xtr, false); // a='b' c='d'
- AssertEquals (XmlNodeType.Element, xtr.NodeType);
- xtw.WriteEndElement (); // />
- xtw.WriteStartElement ("b"); // <b
- xtw.WriteEndElement (); // />
- xtw.WriteEndElement (); // </root>
- xtw.Close ();
- AssertEquals (xml, writer.ToString ());
- }
- }
- internal class DefaultXmlWriter : XmlWriter
- {
- public DefaultXmlWriter () : base ()
- {
- }
- public override void Close ()
- {
- }
- public override void Flush ()
- {
- }
- public override string LookupPrefix (string ns)
- {
- return null;
- }
- public override void WriteBase64 (byte [] buffer, int index, int count)
- {
- }
- public override void WriteBinHex (byte [] buffer, int index, int count)
- {
- }
- public override void WriteCData (string text)
- {
- }
- public override void WriteCharEntity (char ch)
- {
- }
- public override void WriteChars (char [] buffer, int index, int count)
- {
- }
- public override void WriteComment (string text)
- {
- }
- public override void WriteDocType (string name, string pubid, string sysid, string subset)
- {
- }
- public override void WriteEndAttribute ()
- {
- }
- public override void WriteEndDocument ()
- {
- }
- public override void WriteEndElement ()
- {
- }
- public override void WriteEntityRef (string name)
- {
- }
- public override void WriteFullEndElement ()
- {
- }
- public override void WriteName (string name)
- {
- }
- public override void WriteNmToken (string name)
- {
- }
- public override void WriteNode (XmlReader reader, bool defattr)
- {
- }
- public override void WriteProcessingInstruction (string name, string text)
- {
- }
- public override void WriteQualifiedName (string localName, string ns)
- {
- }
- public override void WriteRaw (string data)
- {
- }
- public override void WriteRaw (char [] buffer, int index, int count)
- {
- }
- public override void WriteStartAttribute (string prefix, string localName, string ns)
- {
- }
- public override void WriteStartDocument (bool standalone)
- {
- }
- public override void WriteStartDocument ()
- {
- }
- public override void WriteStartElement (string prefix, string localName, string ns)
- {
- }
- public override void WriteString (string text)
- {
- }
- public override void WriteSurrogateCharEntity (char lowChar, char highChar)
- {
- }
- public override void WriteWhitespace (string ws)
- {
- }
- public override WriteState WriteState {
- get {
- return WriteState.Start;
- }
- }
- public override string XmlLang {
- get {
- return null;
- }
- }
- public override XmlSpace XmlSpace {
- get {
- return XmlSpace.None;
- }
- }
- }
- }
|