xmltest.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. using System.Xml.Schema;
  5. using System.Xml.Serialization;
  6. public class Test
  7. {
  8. static char SEP = Path.DirectorySeparatorChar;
  9. public static void Main ()
  10. {
  11. RunInvalidTest ("xmltest", false);
  12. RunInvalidTest ("ibm", false);
  13. RunInvalidTest ("sun", true);
  14. RunValidTest ("xmltest", false);
  15. RunValidTest ("ibm", false);
  16. RunValidTest ("sun", true);
  17. RunNotWellFormedTest ("xmltest", false);
  18. RunNotWellFormedTest ("ibm", false);
  19. RunNotWellFormedTest ("sun", true);
  20. RunOASISTest ();
  21. }
  22. static void RunOASISTest ()
  23. {
  24. XmlDocument doc = new XmlDocument ();
  25. foreach (FileInfo fi in
  26. new DirectoryInfo (@"XML-Test-Suite/xmlconf/oasis").GetFiles ("*.xml")) {
  27. try {
  28. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  29. xtr.Namespaces = false;
  30. xtr.Normalization = true;
  31. doc.RemoveAll ();
  32. doc.Load (xtr);
  33. if (fi.Name.IndexOf ("fail") >= 0)
  34. Console.WriteLine ("Incorrectly valid: " + fi.FullName);
  35. } catch (Exception ex) {
  36. if (fi.Name.IndexOf ("pass") >= 0)
  37. Console.WriteLine ("Incorrectly invalid: " + fi.FullName + "\n" + ex.Message);
  38. }
  39. }
  40. }
  41. static void RunNotWellFormedTest (string subdir, bool isSunTest)
  42. {
  43. string basePath = @"xml-test-suite/xmlconf/" + subdir + @"/not-wf";
  44. DirectoryInfo [] dirs = null;
  45. if (isSunTest)
  46. dirs = new DirectoryInfo [] {new DirectoryInfo (basePath)};
  47. else
  48. dirs = new DirectoryInfo (basePath).GetDirectories ();
  49. XmlDocument doc = new XmlDocument ();
  50. foreach (DirectoryInfo di in dirs) {
  51. foreach (FileInfo fi in di.GetFiles ("*.xml")) {
  52. try {
  53. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  54. xtr.Namespaces = false;
  55. doc.RemoveAll ();
  56. doc.Load (xtr);
  57. Console.WriteLine ("Incorrectly wf: " + fi.FullName);
  58. } catch (XmlException) {
  59. // expected
  60. } catch (Exception ex) {
  61. Console.WriteLine ("Unexpected Error: " + fi.FullName + "\n" + ex.Message);
  62. }
  63. }
  64. }
  65. }
  66. static void RunValidTest (string subdir, bool isSunTest)
  67. {
  68. string basePath = @"xml-test-suite/xmlconf/" + subdir + @"/valid";
  69. DirectoryInfo [] dirs = null;
  70. if (isSunTest)
  71. dirs = new DirectoryInfo [] {new DirectoryInfo (basePath)};
  72. else
  73. dirs = new DirectoryInfo (basePath).GetDirectories ();
  74. XmlDocument doc = new XmlDocument ();
  75. foreach (DirectoryInfo di in dirs) {
  76. foreach (FileInfo fi in di.GetFiles ("*.xml")) {
  77. try {
  78. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  79. xtr.Namespaces = false;
  80. xtr.Normalization = true;
  81. XmlReader xr = new XmlValidatingReader (xtr);
  82. while (!xr.EOF)
  83. xr.Read ();
  84. } catch (XmlException ex) {
  85. Console.WriteLine ("Incorrectly not-wf: " + fi.FullName + " " + ex.Message);
  86. } catch (XmlSchemaException ex) {
  87. Console.WriteLine ("Incorrectly invalid: " + fi.FullName + " " + ex.Message);
  88. } catch (Exception ex) {
  89. Console.WriteLine ("Unexpected Error: " + fi.FullName + "\n" + ex.Message);
  90. }
  91. }
  92. }
  93. }
  94. static void RunInvalidTest (string subdir, bool isSunTest)
  95. {
  96. string basePath = @"xml-test-suite/xmlconf/" + subdir + @"/invalid";
  97. DirectoryInfo [] dirs = null;
  98. if (isSunTest)
  99. dirs = new DirectoryInfo [] {new DirectoryInfo (basePath)};
  100. else
  101. dirs = new DirectoryInfo (basePath).GetDirectories ();
  102. XmlDocument doc = new XmlDocument ();
  103. foreach (DirectoryInfo di in dirs) {
  104. foreach (FileInfo fi in di.GetFiles ("*.xml")) {
  105. try {
  106. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  107. xtr.Namespaces = false;
  108. xtr.Normalization = true;
  109. doc.RemoveAll ();
  110. while (!xtr.EOF)
  111. xtr.Read ();
  112. } catch (Exception ex) {
  113. Console.WriteLine ("Incorrectly not-wf: " + fi.FullName + String.Concat ("(", ex.GetType ().Name, ") " + ex.Message));
  114. }
  115. }
  116. }
  117. foreach (DirectoryInfo di in dirs) {
  118. foreach (FileInfo fi in di.GetFiles ("*.xml")) {
  119. try {
  120. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  121. xtr.Namespaces = false;
  122. xtr.Normalization = true;
  123. doc.RemoveAll ();
  124. doc.Load (new XmlValidatingReader (xtr));
  125. Console.WriteLine ("Incorrectly valid: " + fi.FullName);
  126. } catch (XmlSchemaException) {
  127. // expected
  128. } catch (Exception ex) {
  129. Console.WriteLine ("Unexpected Error: " + fi.FullName + "\n" + ex.Message);
  130. }
  131. }
  132. }
  133. }
  134. }