XmlReaderSettingsTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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.Xml;
  13. using System.Xml.Schema;
  14. using NUnit.Framework;
  15. using ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags;
  16. namespace MonoTests.System.Xml
  17. {
  18. [TestFixture]
  19. public class XmlReaderSettingsTests : Assertion
  20. {
  21. [Test]
  22. public void DefaultValue ()
  23. {
  24. XmlReaderSettings s = new XmlReaderSettings ();
  25. AssertEquals (true, s.CheckCharacters);
  26. AssertEquals (ConformanceLevel.Document,
  27. s.ConformanceLevel);
  28. Assert (s.ValidationType != ValidationType.DTD);
  29. AssertEquals (false, s.IgnoreComments);
  30. Assert (0 != (s.ValidationFlags &
  31. ValidationFlags.IgnoreInlineSchema));
  32. AssertEquals (false, s.IgnoreProcessingInstructions);
  33. Assert (0 != (s.ValidationFlags &
  34. ValidationFlags.IgnoreSchemaLocation));
  35. Assert (0 != (s.ValidationFlags &
  36. ValidationFlags.IgnoreValidationWarnings));
  37. Assert (0 == (s.ValidationFlags &
  38. ValidationFlags.IgnoreIdentityConstraints));
  39. AssertEquals (false, s.IgnoreWhitespace);
  40. AssertEquals (0, s.LineNumberOffset);
  41. AssertEquals (0, s.LinePositionOffset);
  42. AssertNull (s.NameTable);
  43. AssertEquals (0, s.Schemas.Count);
  44. Assert (s.ValidationType != ValidationType.Schema);
  45. }
  46. [Test]
  47. [ExpectedException (typeof (XmlException))]
  48. public void SetSchemas ()
  49. {
  50. XmlReaderSettings s = new XmlReaderSettings ();
  51. s.Schemas = new XmlSchemaSet ();
  52. }
  53. [Test]
  54. public void CloseInput ()
  55. {
  56. StringReader sr = new StringReader ("<root/><root/>");
  57. XmlReader xtr = XmlReader.Create (sr); // default false
  58. xtr.Read ();
  59. xtr.Close ();
  60. // It should without error, unlike usual XmlTextReader.
  61. sr.ReadLine ();
  62. }
  63. [Test]
  64. public void CreateAndNormalization ()
  65. {
  66. StringReader sr = new StringReader (
  67. "<root attr=' value '>test\rstring</root>");
  68. XmlReaderSettings settings = new XmlReaderSettings ();
  69. settings.CheckCharacters = false;
  70. XmlReader xtr = XmlReader.Create (
  71. sr, null, null, settings);
  72. xtr.Read ();
  73. xtr.MoveToFirstAttribute ();
  74. AssertEquals (" value ", xtr.Value);
  75. xtr.Read ();
  76. // Text string is normalized
  77. AssertEquals ("test\nstring", xtr.Value);
  78. }
  79. [Test]
  80. public void CheckCharactersAndNormalization ()
  81. {
  82. // It should *not* raise an error (even Normalization
  83. // is set by default).
  84. StringReader sr = new StringReader (
  85. "<root attr='&#0;'>&#x0;</root>");
  86. XmlReaderSettings settings = new XmlReaderSettings ();
  87. settings.CheckCharacters = false;
  88. XmlReader xtr = XmlReader.Create (
  89. sr, null, null, settings);
  90. // After creation, changes on source XmlReaderSettings
  91. // does not matter.
  92. settings.CheckCharacters = false;
  93. xtr.Read ();
  94. xtr.MoveToFirstAttribute ();
  95. AssertEquals ("\0", xtr.Value);
  96. xtr.Read ();
  97. AssertEquals ("\0", xtr.Value);
  98. }
  99. // Hmm, does it really make sense? :-/
  100. [Test]
  101. public void CheckCharactersForNonTextReader ()
  102. {
  103. // It should *not* raise an error (even Normalization
  104. // is set by default).
  105. StringReader sr = new StringReader (
  106. "<root attr='&#0;'>&#x0;</root>");
  107. XmlReaderSettings settings = new XmlReaderSettings ();
  108. settings.CheckCharacters = false;
  109. XmlReader xr = XmlReader.Create (
  110. sr, null, null, settings);
  111. // Enable character checking for XmlNodeReader.
  112. settings.CheckCharacters = true;
  113. XmlDocument doc = new XmlDocument ();
  114. doc.Load (xr);
  115. xr = XmlReader.Create (new XmlNodeReader (doc), settings);
  116. // But it won't work against XmlNodeReader.
  117. xr.Read ();
  118. xr.MoveToFirstAttribute ();
  119. AssertEquals ("\0", xr.Value);
  120. xr.Read ();
  121. AssertEquals ("\0", xr.Value);
  122. }
  123. }
  124. }
  125. #endif