Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAtsushi Eno <atsushieno@gmail.com>2003-07-19 20:49:18 +0400
committerAtsushi Eno <atsushieno@gmail.com>2003-07-19 20:49:18 +0400
commitdd380a932657003a3209e2ec934f755d07739b71 (patch)
tree8f84c04af059cd8499056fc03eca8b865a9266fe
parent934b8c07bc88643b5e08630c16f9e89dab3a566e (diff)
2003-07-19 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
* XmlValidatingReaderTests.cs : added TestValidationEvent() and some code refactory. svn path=/trunk/mcs/; revision=16431
-rw-r--r--mcs/class/System.XML/Test/System.Xml/ChangeLog5
-rw-r--r--mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs150
2 files changed, 86 insertions, 69 deletions
diff --git a/mcs/class/System.XML/Test/System.Xml/ChangeLog b/mcs/class/System.XML/Test/System.Xml/ChangeLog
index be1359e74e2..5c9792b64a9 100644
--- a/mcs/class/System.XML/Test/System.Xml/ChangeLog
+++ b/mcs/class/System.XML/Test/System.Xml/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-19 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+
+ * XmlValidatingReaderTests.cs : added TestValidationEvent() and
+ some code refactory.
+
2003-07-12 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
* XmlValidatingReaderTests.cs : added TestNonDeterministicContent() and
diff --git a/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs b/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
index 9dbbbcc04c0..720bb7a0ad7 100644
--- a/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
@@ -8,6 +8,7 @@
//
using System;
using System.Xml;
+using System.Xml.Schema;
using NUnit.Framework;
namespace MonoTests.System.Xml
@@ -19,56 +20,58 @@ namespace MonoTests.System.Xml
{
}
- XmlTextReader xtr;
+ XmlReader xtr;
XmlValidatingReader dvr;
+ private XmlReader PrepareXmlReader (string xml)
+ {
+ return new XmlTextReader (xml, XmlNodeType.Document, null);
+// XmlDocument doc = new XmlDocument ();
+// doc.LoadXml (xml);
+// return new XmlNodeReader (doc);
+ }
+
[Test]
public void TestSingleElement ()
{
string intSubset = "<!ELEMENT root EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root />";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read ();
string xml2 = dtd + "<invalid />";
- xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml2);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
try {
dvr.Read (); // invalid element.
Fail ("should be failed.");
- } catch (XmlException ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml3 = dtd + "<root>invalid PCDATA.</root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // invalid text
Fail ("should be failed.");
- } catch (XmlException ex) {
- if (!ex.Message.StartsWith ("Current element root does not allow"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml4 = dtd + "<root><invalid_child /></root>";
- xtr = new XmlTextReader (xml4, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml4);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // invalid child
Fail ("should be failed.");
- } catch (XmlException ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -78,48 +81,42 @@ namespace MonoTests.System.Xml
string intSubset = "<!ELEMENT root (foo)><!ELEMENT foo EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root />";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
try {
dvr.Read (); // root: invalid end
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid end element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml2 = dtd + "<root>Test.</root>";
- xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml2);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // invalid end
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Current element root"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml3 = dtd + "<root><foo /></root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
dvr.Read (); // foo
string xml4 = dtd + "<root><bar /></root>";
- xtr = new XmlTextReader (xml4, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml4);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // invalid element
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -129,14 +126,14 @@ namespace MonoTests.System.Xml
string intSubset = "<!ELEMENT root (#PCDATA | foo)*><!ELEMENT foo EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root />";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
dvr.Read (); // end
string xml2 = dtd + "<root>Test.</root>";
- xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml2);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -144,7 +141,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // endelement root
string xml3 = dtd + "<root><foo/>Test.<foo></foo></root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -155,7 +152,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // valid endElement root
string xml4 = dtd + "<root>Test.<bar /></root>";
- xtr = new XmlTextReader (xml4, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml4);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -163,9 +160,7 @@ namespace MonoTests.System.Xml
try {
dvr.Read (); // invalid element
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -175,7 +170,7 @@ namespace MonoTests.System.Xml
string intSubset = "<!ELEMENT root (foo, bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root><foo/><bar/></root>";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -184,7 +179,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
string xml2 = dtd + "<root><foo/></root>";
- xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml2);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -192,22 +187,18 @@ namespace MonoTests.System.Xml
try {
dvr.Read (); // invalid end root
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid end element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml3 = dtd + "<root><bar/></root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // invalid element bar
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -217,7 +208,7 @@ namespace MonoTests.System.Xml
string intSubset = "<!ELEMENT root (foo|bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root><foo/><bar/></root>";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -225,13 +216,11 @@ namespace MonoTests.System.Xml
try {
dvr.Read (); // invalid element bar
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Invalid start element"))
- throw ex;
+ } catch (XmlSchemaException) {
}
string xml2 = dtd + "<root><foo/></root>";
- xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml2);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -239,7 +228,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
string xml3 = dtd + "<root><bar/></root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -247,7 +236,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
string xml4 = dtd + "<root><foo/>text.<bar/></root>";
- xtr = new XmlTextReader (xml4, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml4);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -255,9 +244,7 @@ namespace MonoTests.System.Xml
try {
dvr.Read (); // invalid text
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Current element root"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -267,13 +254,14 @@ namespace MonoTests.System.Xml
string intSubset = "<!ELEMENT root ANY><!ELEMENT foo EMPTY>";
string dtd = "<!DOCTYPE root [" + intSubset + "]>";
string xml1 = dtd + "<root />";
- xtr = new XmlTextReader (xml1, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml1);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // empty root.
dvr.Read (); // end of document.
string xml2 = dtd + "<root><foo/></root>";
+ xtr = PrepareXmlReader (xml2);
xtr = new XmlTextReader (xml2, XmlNodeType.Document, null);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
@@ -282,7 +270,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
string xml3 = dtd + "<root><foo /><foo></foo><foo/></root>";
- xtr = new XmlTextReader (xml3, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml3);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -292,16 +280,14 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
string xml4 = dtd + "<root><bar /></root>";
- xtr = new XmlTextReader (xml4, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml4);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
try {
dvr.Read (); // bar: invalid (undeclared) element
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Element bar is not declared"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -320,7 +306,7 @@ namespace MonoTests.System.Xml
dvr.Read (); // end root
xml = dtd + "<root><foo/><baz/></root>";
- xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
@@ -340,35 +326,31 @@ namespace MonoTests.System.Xml
try {
dvr.Read (); // missing attributes
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Required attribute root"))
- throw ex;
+ } catch (XmlSchemaException ex) {
}
xml = dtd + "<root foo='value' />";
- xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
dvr.Read (); // end of document
xml = dtd + "<root foo='value' bar='2nd' />";
- xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
dvr.Read (); // root
dvr.Read (); // end of document
xml = dtd + "<root foo='value' bar='2nd' baz='3rd' />";
- xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+ xtr = PrepareXmlReader (xml);
dvr = new XmlValidatingReader (xtr);
dvr.Read (); // DTD
try {
dvr.Read (); // undeclared attribute baz
Fail ("should be failed.");
- } catch (Exception ex) {
- if (!ex.Message.StartsWith ("Attribute baz is not declared"))
- throw ex;
+ } catch (XmlSchemaException) {
}
}
@@ -391,5 +373,35 @@ namespace MonoTests.System.Xml
AssertEquals ("bar", dvr.Name);
AssertEquals ("bar-def", dvr.Value);
}
+
+ [Test]
+ public void TestValidationEvent ()
+ {
+ string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'>";
+ string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+ string xml = dtd + "<foo><bar att='val' /></foo>";
+ eventFired = false;
+ dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+ dvr.ValidationEventHandler += new ValidationEventHandler (OnInvalidityFound);
+ dvr.ValidationType = ValidationType.DTD;
+ dvr.Read (); // DTD
+ Assert (dvr.Read ()); // invalid foo
+ Assert (eventFired);
+ AssertEquals ("foo", dvr.Name);
+ Assert (dvr.Read ()); // invalid bar
+ AssertEquals ("bar", dvr.Name);
+ Assert (dvr.MoveToFirstAttribute ()); // att
+ AssertEquals ("att", dvr.Name);
+ Assert (dvr.Read ()); // invalid end foo
+ AssertEquals ("foo", dvr.Name);
+ AssertEquals (XmlNodeType.EndElement, dvr.NodeType);
+ Assert (!dvr.Read ());
+ }
+
+ private bool eventFired;
+ private void OnInvalidityFound (object o, ValidationEventArgs e)
+ {
+ eventFired = true;
+ }
}
}