XmlReaderSettingsTests.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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.Unicode.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.IgnoreInlineSchema));
  37. AssertEquals (false, s.IgnoreProcessingInstructions);
  38. Assert (0 != (s.ValidationFlags &
  39. ValidationFlags.IgnoreSchemaLocation));
  40. Assert (0 != (s.ValidationFlags &
  41. ValidationFlags.IgnoreValidationWarnings));
  42. Assert (0 == (s.ValidationFlags &
  43. ValidationFlags.IgnoreIdentityConstraints));
  44. AssertEquals (false, s.IgnoreWhitespace);
  45. AssertEquals (0, s.LineNumberOffset);
  46. AssertEquals (0, s.LinePositionOffset);
  47. AssertNull (s.NameTable);
  48. AssertEquals (0, s.Schemas.Count);
  49. Assert (s.ValidationType != ValidationType.Schema);
  50. }
  51. [Test]
  52. [ExpectedException (typeof (XmlException))]
  53. public void SetSchemas ()
  54. {
  55. XmlReaderSettings s = new XmlReaderSettings ();
  56. s.Schemas = new XmlSchemaSet ();
  57. }
  58. [Test]
  59. public void CloseInput ()
  60. {
  61. StringReader sr = new StringReader ("<root/><root/>");
  62. XmlReader xtr = XmlReader.Create (sr); // default false
  63. xtr.Read ();
  64. xtr.Close ();
  65. // It should without error, unlike usual XmlTextReader.
  66. sr.ReadLine ();
  67. }
  68. [Test]
  69. public void CreateAndNormalization ()
  70. {
  71. StringReader sr = new StringReader (
  72. "<root attr=' value '>test\rstring</root>");
  73. XmlReaderSettings settings = new XmlReaderSettings ();
  74. settings.CheckCharacters = false;
  75. XmlReader xtr = XmlReader.Create (
  76. sr, null, null, settings);
  77. xtr.Read ();
  78. xtr.MoveToFirstAttribute ();
  79. AssertEquals (" value ", xtr.Value);
  80. xtr.Read ();
  81. // Text string is normalized
  82. AssertEquals ("test\nstring", xtr.Value);
  83. }
  84. [Test]
  85. public void CheckCharactersAndNormalization ()
  86. {
  87. // It should *not* raise an error (even Normalization
  88. // is set by default).
  89. StringReader sr = new StringReader (
  90. "<root attr='&#0;'>&#x0;</root>");
  91. XmlReaderSettings settings = new XmlReaderSettings ();
  92. settings.CheckCharacters = false;
  93. XmlReader xtr = XmlReader.Create (
  94. sr, null, null, settings);
  95. // After creation, changes on source XmlReaderSettings
  96. // does not matter.
  97. settings.CheckCharacters = false;
  98. xtr.Read ();
  99. xtr.MoveToFirstAttribute ();
  100. AssertEquals ("\0", xtr.Value);
  101. xtr.Read ();
  102. AssertEquals ("\0", xtr.Value);
  103. }
  104. // Hmm, does it really make sense? :-/
  105. [Test]
  106. public void CheckCharactersForNonTextReader ()
  107. {
  108. // It should *not* raise an error (even Normalization
  109. // is set by default).
  110. StringReader sr = new StringReader (
  111. "<root attr='&#0;'>&#x0;</root>");
  112. XmlReaderSettings settings = new XmlReaderSettings ();
  113. settings.CheckCharacters = false;
  114. XmlReader xr = XmlReader.Create (
  115. sr, null, null, settings);
  116. // Enable character checking for XmlNodeReader.
  117. settings.CheckCharacters = true;
  118. XmlDocument doc = new XmlDocument ();
  119. doc.Load (xr);
  120. xr = XmlReader.Create (new XmlNodeReader (doc), settings);
  121. // But it won't work against XmlNodeReader.
  122. xr.Read ();
  123. xr.MoveToFirstAttribute ();
  124. AssertEquals ("\0", xr.Value);
  125. xr.Read ();
  126. AssertEquals ("\0", xr.Value);
  127. }
  128. [Test]
  129. public void CreateAndSettings ()
  130. {
  131. AssertNotNull (XmlReader.Create (CreateStream ("<xml/>")).Settings);
  132. AssertNotNull (XmlReader.Create ("Test/XmlFiles/simple.xml").Settings);
  133. }
  134. [Test]
  135. public void CreateAndNameTable ()
  136. {
  137. // By default NameTable is null, but some of
  138. // XmlReader.Create() should not result in null
  139. // reference exceptions.
  140. XmlReaderSettings s = new XmlReaderSettings ();
  141. XmlReader.Create (new StringReader ("<root/>"), null, null, s)
  142. .Read ();
  143. XmlReader.Create (CreateStream ("<root/>"), null, Encoding.Unicode, null, s)
  144. .Read ();
  145. }
  146. }
  147. }
  148. #endif