2 // System.Xml.XmlReaderSettingsTests.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
15 using System.Xml.Schema;
16 using NUnit.Framework;
18 using ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags;
20 namespace MonoTests.System.Xml
23 public class XmlReaderSettingsTests : Assertion
25 public Stream CreateStream (string xml)
27 return new MemoryStream (Encoding.Unicode.GetBytes (xml));
31 public void DefaultValue ()
33 XmlReaderSettings s = new XmlReaderSettings ();
34 AssertEquals (true, s.CheckCharacters);
35 AssertEquals (ConformanceLevel.Document,
37 Assert (s.ValidationType != ValidationType.DTD);
38 AssertEquals (false, s.IgnoreComments);
39 Assert (0 != (s.ValidationFlags &
40 ValidationFlags.IgnoreInlineSchema));
41 AssertEquals (false, s.IgnoreProcessingInstructions);
42 Assert (0 != (s.ValidationFlags &
43 ValidationFlags.IgnoreSchemaLocation));
44 Assert (0 != (s.ValidationFlags &
45 ValidationFlags.IgnoreValidationWarnings));
46 Assert (0 == (s.ValidationFlags &
47 ValidationFlags.IgnoreIdentityConstraints));
48 AssertEquals (false, s.IgnoreWhitespace);
49 AssertEquals (0, s.LineNumberOffset);
50 AssertEquals (0, s.LinePositionOffset);
51 AssertNull (s.NameTable);
52 AssertEquals (0, s.Schemas.Count);
53 Assert (s.ValidationType != ValidationType.Schema);
57 [ExpectedException (typeof (XmlException))]
58 public void SetSchemas ()
60 XmlReaderSettings s = new XmlReaderSettings ();
61 s.Schemas = new XmlSchemaSet ();
65 public void CloseInput ()
67 StringReader sr = new StringReader ("<root/><root/>");
68 XmlReader xtr = XmlReader.Create (sr); // default false
71 // It should without error, unlike usual XmlTextReader.
76 public void CreateAndNormalization ()
78 StringReader sr = new StringReader (
79 "<root attr=' value '>test\rstring</root>");
80 XmlReaderSettings settings = new XmlReaderSettings ();
81 settings.CheckCharacters = false;
82 XmlReader xtr = XmlReader.Create (
83 sr, null, null, settings);
85 xtr.MoveToFirstAttribute ();
86 AssertEquals (" value ", xtr.Value);
88 // Text string is normalized
89 AssertEquals ("test\nstring", xtr.Value);
93 public void CheckCharactersAndNormalization ()
95 // It should *not* raise an error (even Normalization
96 // is set by default).
97 StringReader sr = new StringReader (
98 "<root attr='�'>�</root>");
99 XmlReaderSettings settings = new XmlReaderSettings ();
100 settings.CheckCharacters = false;
101 XmlReader xtr = XmlReader.Create (
102 sr, null, null, settings);
103 // After creation, changes on source XmlReaderSettings
105 settings.CheckCharacters = false;
107 xtr.MoveToFirstAttribute ();
108 AssertEquals ("\0", xtr.Value);
110 AssertEquals ("\0", xtr.Value);
113 // Hmm, does it really make sense? :-/
115 public void CheckCharactersForNonTextReader ()
117 // It should *not* raise an error (even Normalization
118 // is set by default).
119 StringReader sr = new StringReader (
120 "<root attr='�'>�</root>");
121 XmlReaderSettings settings = new XmlReaderSettings ();
122 settings.CheckCharacters = false;
123 XmlReader xr = XmlReader.Create (
124 sr, null, null, settings);
126 // Enable character checking for XmlNodeReader.
127 settings.CheckCharacters = true;
128 XmlDocument doc = new XmlDocument ();
130 xr = XmlReader.Create (new XmlNodeReader (doc), settings);
132 // But it won't work against XmlNodeReader.
134 xr.MoveToFirstAttribute ();
135 AssertEquals ("\0", xr.Value);
137 AssertEquals ("\0", xr.Value);
141 public void CreateAndSettings ()
143 AssertNotNull (XmlReader.Create (CreateStream ("<xml/>")).Settings);
144 AssertNotNull (XmlReader.Create ("Test/XmlFiles/simple.xml").Settings);
148 public void CreateAndNameTable ()
150 // By default NameTable is null, but some of
151 // XmlReader.Create() should not result in null
152 // reference exceptions.
153 XmlReaderSettings s = new XmlReaderSettings ();
154 XmlReader.Create (new StringReader ("<root/>"), null, null, s)
156 XmlReader.Create (CreateStream ("<root/>"), null, Encoding.Unicode, null, s)