XmlReaderSettingsTests.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. //
  2. // System.Xml.XmlReaderSettingsTests.cs
  3. //
  4. // Authors:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // (C)2004 Novell Inc.
  8. //
  9. #if NET_2_0
  10. using System;
  11. using System.IO;
  12. using System.Text;
  13. using System.Xml;
  14. using System.Xml.Schema;
  15. using NUnit.Framework;
  16. using ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags;
  17. namespace MonoTests.System.Xml
  18. {
  19. [TestFixture]
  20. public class XmlReaderSettingsTests : Assertion
  21. {
  22. public Stream CreateStream (string xml)
  23. {
  24. return new MemoryStream (Encoding.UTF8.GetBytes (xml));
  25. }
  26. [Test]
  27. public void DefaultValue ()
  28. {
  29. XmlReaderSettings s = new XmlReaderSettings ();
  30. AssertEquals (true, s.CheckCharacters);
  31. AssertEquals (ConformanceLevel.Document,
  32. s.ConformanceLevel);
  33. Assert (s.ValidationType != ValidationType.DTD);
  34. AssertEquals (false, s.IgnoreComments);
  35. Assert (0 == (s.ValidationFlags &
  36. ValidationFlags.ProcessInlineSchema));
  37. AssertEquals (false, s.IgnoreProcessingInstructions);
  38. Assert (0 == (s.ValidationFlags &
  39. ValidationFlags.ProcessSchemaLocation));
  40. Assert (0 == (s.ValidationFlags &
  41. ValidationFlags.ReportValidationWarnings));
  42. Assert (0 != (s.ValidationFlags &
  43. ValidationFlags.ProcessIdentityConstraints));
  44. Assert (0 == (s.ValidationFlags &
  45. ValidationFlags.AllowXmlAttributes));
  46. AssertEquals (false, s.IgnoreWhitespace);
  47. AssertEquals (0, s.LineNumberOffset);
  48. AssertEquals (0, s.LinePositionOffset);
  49. AssertNull (s.NameTable);
  50. AssertEquals (0, s.Schemas.Count);
  51. Assert (s.ValidationType != ValidationType.Schema);
  52. }
  53. [Test]
  54. [ExpectedException (typeof (XmlException))]
  55. public void SetSchemas ()
  56. {
  57. XmlReaderSettings s = new XmlReaderSettings ();
  58. s.Schemas = new XmlSchemaSet ();
  59. }
  60. [Test]
  61. public void CloseInput ()
  62. {
  63. StringReader sr = new StringReader ("<root/><root/>");
  64. XmlReader xtr = XmlReader.Create (sr); // default false
  65. xtr.Read ();
  66. xtr.Close ();
  67. // It should without error, unlike usual XmlTextReader.
  68. sr.ReadLine ();
  69. }
  70. [Test]
  71. public void CreateAndNormalization ()
  72. {
  73. StringReader sr = new StringReader (
  74. "<root attr=' value '>test\rstring</root>");
  75. XmlReaderSettings settings = new XmlReaderSettings ();
  76. settings.CheckCharacters = false;
  77. XmlReader xtr = XmlReader.Create (
  78. sr, settings);
  79. xtr.Read ();
  80. xtr.MoveToFirstAttribute ();
  81. AssertEquals (" value ", xtr.Value);
  82. xtr.Read ();
  83. // Text string is normalized
  84. AssertEquals ("test\nstring", xtr.Value);
  85. }
  86. [Test]
  87. public void CheckCharactersAndNormalization ()
  88. {
  89. // It should *not* raise an error (even Normalization
  90. // is set by default).
  91. StringReader sr = new StringReader (
  92. "<root attr='&#0;'>&#x0;</root>");
  93. XmlReaderSettings settings = new XmlReaderSettings ();
  94. settings.CheckCharacters = false;
  95. XmlReader xtr = XmlReader.Create (
  96. sr, settings);
  97. // After creation, changes on source XmlReaderSettings
  98. // does not matter.
  99. settings.CheckCharacters = false;
  100. xtr.Read ();
  101. xtr.MoveToFirstAttribute ();
  102. AssertEquals ("\0", xtr.Value);
  103. xtr.Read ();
  104. AssertEquals ("\0", xtr.Value);
  105. }
  106. // Hmm, does it really make sense? :-/
  107. [Test]
  108. public void CheckCharactersForNonTextReader ()
  109. {
  110. // It should *not* raise an error (even Normalization
  111. // is set by default).
  112. StringReader sr = new StringReader (
  113. "<root attr='&#0;'>&#x0;</root>");
  114. XmlReaderSettings settings = new XmlReaderSettings ();
  115. settings.CheckCharacters = false;
  116. XmlReader xr = XmlReader.Create (
  117. sr, settings);
  118. // Enable character checking for XmlNodeReader.
  119. settings.CheckCharacters = true;
  120. XmlDocument doc = new XmlDocument ();
  121. doc.Load (xr);
  122. xr = XmlReader.Create (new XmlNodeReader (doc), settings);
  123. // But it won't work against XmlNodeReader.
  124. xr.Read ();
  125. xr.MoveToFirstAttribute ();
  126. AssertEquals ("\0", xr.Value);
  127. xr.Read ();
  128. AssertEquals ("\0", xr.Value);
  129. }
  130. [Test]
  131. public void CreateAndSettings ()
  132. {
  133. AssertNotNull (XmlReader.Create (CreateStream ("<xml/>")).Settings);
  134. AssertNotNull (XmlReader.Create ("Test/XmlFiles/simple.xml").Settings);
  135. }
  136. [Test]
  137. public void CreateAndNameTable ()
  138. {
  139. // By default NameTable is null, but some of
  140. // XmlReader.Create() should not result in null
  141. // reference exceptions.
  142. XmlReaderSettings s = new XmlReaderSettings ();
  143. XmlReader.Create (new StringReader ("<root/>"), s, String.Empty)
  144. .Read ();
  145. XmlReader.Create (new StringReader ("<root/>"), s, (XmlParserContext) null)
  146. .Read ();
  147. XmlReader.Create (CreateStream ("<root/>"), s, String.Empty)
  148. .Read ();
  149. XmlReader.Create (CreateStream ("<root/>"), s, (XmlParserContext) null)
  150. .Read ();
  151. }
  152. }
  153. }
  154. #endif