2 // System.Xml.XmlTextWriterTests
5 // Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
6 // Martin Willemoes Hansen <mwh@sysrq.dk>
8 // (C) 2003 Atsushi Enomoto
9 // (C) 2003 Martin Willemoes Hansen
12 // This class mainly checks inheritance and behaviors of XmlWriter.
20 using NUnit
.Framework
;
22 namespace MonoTests
.System
.Xml
25 public class XmlWriterTests
: Assertion
33 writer
= new StringWriter ();
34 xtw
= new XmlTextWriter (writer
);
37 private void setupWriter ()
39 writer
.GetStringBuilder ().Length
= 0;
43 public void WriteNodeFullDocument ()
46 string xml
= "<?xml version='1.0'?><root />";
47 XmlTextReader xtr
= new XmlTextReader (xml
, XmlNodeType
.Document
, null);
48 xtw
.WriteNode (xtr
, false);
49 AssertEquals (xml
, writer
.ToString ());
53 xml
= "<?xml version='1.0' encoding='iso-2022-jp'?><root />";
54 xtr
= new XmlTextReader (xml
, XmlNodeType
.Document
, null);
55 xtw
.WriteNode (xtr
, false);
56 AssertEquals (xml
, writer
.ToString ());
61 public void WriteNodeXmlDecl ()
64 string xml
= "<?xml version='1.0'?><root />";
65 StringReader sr
= new StringReader (xml
);
66 XmlTextReader xtr
= new XmlTextReader (sr
);
68 xtw
.WriteNode (xtr
, false);
69 AssertEquals ("<?xml version='1.0'?>",
75 public void WriteNodeEmptyElement ()
78 string xml
= "<root attr='value' attr2='value' />";
79 StringReader sr
= new StringReader (xml
);
80 XmlTextReader xtr
= new XmlTextReader (sr
);
81 xtw
.WriteNode (xtr
, false);
82 AssertEquals (xml
.Replace ("'", "\""),
88 public void WriteNodeNonEmptyElement ()
91 string xml
= @"<foo><bar></bar></foo>";
92 xtw
.WriteNode (new XmlTextReader (xml
, XmlNodeType
.Document
, null), false);
93 AssertEquals (xml
, writer
.ToString ());
97 public void WriteNodeSingleContentElement ()
100 string xml
= "<root attr='value' attr2='value'><foo /></root>";
101 StringReader sr
= new StringReader (xml
);
102 XmlTextReader xtr
= new XmlTextReader (sr
);
103 xtw
.WriteNode (xtr
, false);
104 AssertEquals (xml
.Replace ("'", "\""),
110 public void WriteNodeNone ()
113 XmlTextReader xtr
= new XmlTextReader ("", XmlNodeType
.Element
, null);
115 xtw
.WriteNode (xtr
, false); // does not report any errors
120 [ExpectedException (typeof (XmlException
))]
121 public void WriteNodeError ()
123 XmlTextReader xtr
= new XmlTextReader ("<root>", XmlNodeType
.Document
, null);
127 } catch (XmlException ex
) {
129 XmlTextWriter xtw
= new XmlTextWriter (new StringWriter ());
130 xtw
.WriteNode (xtr
, false);
134 public void WriteSurrogateCharEntity ()
137 xtw
.WriteSurrogateCharEntity ('\udfff', '\udb00');
138 AssertEquals ("󐏿", writer
.ToString ());
141 xtw
.WriteSurrogateCharEntity ('\ud800', '\udc00');
146 xtw
.WriteSurrogateCharEntity ('\udbff', '\ud800');
151 xtw
.WriteSurrogateCharEntity ('\ue000', '\ud800');
156 xtw
.WriteSurrogateCharEntity ('\udfff', '\udc00');
162 // MS.NET's not-overriden XmlWriter.WriteStartElement(name)
163 // invokes WriteStartElement(null, name, null).
164 // WriteStartElement(name, ns) invokes (null, name, ns), too.
166 public void StartElement ()
168 StartElementTestWriter xw
= new StartElementTestWriter ();
169 xw
.WriteStartDocument ();
170 xw
.WriteStartElement ("test");
171 AssertEquals ("StartElementOverride.NS", null, xw
.NS
);
172 AssertEquals ("StartElementOverride.Prefix", null, xw
.Prefix
);
173 xw
.NS
= String
.Empty
;
174 xw
.Prefix
= String
.Empty
;
175 xw
.WriteStartElement ("test", "urn:hoge");
176 AssertEquals ("StartElementOverride.NS", "urn:hoge", xw
.NS
);
177 AssertEquals ("StartElementOverride.Prefix", null, xw
.Prefix
);
180 class StartElementTestWriter
: DefaultXmlWriter
182 public StartElementTestWriter () : base () {}
183 public string NS
= String
.Empty
;
184 public string Prefix
= String
.Empty
;
186 public override void WriteStartElement (string prefix
, string localName
, string ns
)
189 this.Prefix
= prefix
;
194 internal class DefaultXmlWriter
: XmlWriter
196 public DefaultXmlWriter () : base ()
200 public override void Close ()
204 public override void Flush ()
208 public override string LookupPrefix (string ns
)
213 public override void WriteBase64 (byte [] buffer
, int index
, int count
)
217 public override void WriteBinHex (byte [] buffer
, int index
, int count
)
221 public override void WriteCData (string text
)
225 public override void WriteCharEntity (char ch
)
229 public override void WriteChars (char [] buffer
, int index
, int count
)
233 public override void WriteComment (string text
)
237 public override void WriteDocType (string name
, string pubid
, string sysid
, string subset
)
241 public override void WriteEndAttribute ()
245 public override void WriteEndDocument ()
249 public override void WriteEndElement ()
253 public override void WriteEntityRef (string name
)
257 public override void WriteFullEndElement ()
261 public override void WriteName (string name
)
265 public override void WriteNmToken (string name
)
269 public override void WriteNode (XmlReader reader
, bool defattr
)
273 public override void WriteProcessingInstruction (string name
, string text
)
277 public override void WriteQualifiedName (string localName
, string ns
)
281 public override void WriteRaw (string data
)
285 public override void WriteRaw (char [] buffer
, int index
, int count
)
289 public override void WriteStartAttribute (string prefix
, string localName
, string ns
)
293 public override void WriteStartDocument (bool standalone
)
297 public override void WriteStartDocument ()
301 public override void WriteStartElement (string prefix
, string localName
, string ns
)
305 public override void WriteString (string text
)
309 public override void WriteSurrogateCharEntity (char lowChar
, char highChar
)
313 public override void WriteWhitespace (string ws
)
317 public override WriteState WriteState
{
319 return WriteState
.Start
;
323 public override string XmlLang
{
329 public override XmlSpace XmlSpace
{
331 return XmlSpace
.None
;