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:
authorGert Driesen <drieseng@users.sourceforge.net>2005-12-23 23:42:46 +0300
committerGert Driesen <drieseng@users.sourceforge.net>2005-12-23 23:42:46 +0300
commit357e2fccaac4dbe2a168f727435af5ee52ebbd55 (patch)
treed6fe9f09312c7106c1d44795328201543d783f6b /mcs/class/System.XML
parent0f03636edf21dd485314428c5c972a0dd74ebc44 (diff)
* XslTransformTests.cs: Added working XML/HTML indentation tests.
svn path=/trunk/mcs/; revision=54803
Diffstat (limited to 'mcs/class/System.XML')
-rw-r--r--mcs/class/System.XML/Test/System.Xml.Xsl/ChangeLog4
-rw-r--r--mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs129
2 files changed, 131 insertions, 2 deletions
diff --git a/mcs/class/System.XML/Test/System.Xml.Xsl/ChangeLog b/mcs/class/System.XML/Test/System.Xml.Xsl/ChangeLog
index 8b7a9f8d25f..a87e54670e3 100644
--- a/mcs/class/System.XML/Test/System.Xml.Xsl/ChangeLog
+++ b/mcs/class/System.XML/Test/System.Xml.Xsl/ChangeLog
@@ -1,5 +1,9 @@
2005-12-23 Gert Driesen <drieseng@users.sourceforge.net>
+ * XslTransformTests.cs: Added working XML/HTML indentation tests.
+
+2005-12-23 Gert Driesen <drieseng@users.sourceforge.net>
+
* XslTransformTests.cs: Added bug numbers to test cases.
2005-12-17 Gert Driesen <drieseng@users.sourceforge.net>
diff --git a/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs b/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
index 1e8f9dacf58..02d58c65d81 100644
--- a/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
@@ -886,7 +886,7 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
[Test]
[Category ("NotWorking")] // bug #77082: mono does not output newline after xml declaration
- public void Output_Indent_Xml ()
+ public void Output_Indent_Xml_DocType ()
{
XsltArgumentList xsltArgs = new XsltArgumentList ();
XslTransform xsltProcessor = new XslTransform ();
@@ -954,7 +954,7 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
[Test]
[Category ("NotWorking")] // bug #77081: mono does not output newline and indentation for non-html elements
- public void Output_Indent_Html ()
+ public void Output_Indent_Html_DocType ()
{
XsltArgumentList xsltArgs = new XsltArgumentList ();
XslTransform xsltProcessor = new XslTransform ();
@@ -1024,6 +1024,131 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
}
[Test]
+ public void Output_Indent_Xml ()
+ {
+ XsltArgumentList xsltArgs = new XsltArgumentList ();
+ XslTransform xsltProcessor = new XslTransform ();
+
+ string xsltFragment = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>
+ <xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0"">
+ <xsl:output
+ {0} />
+ <xsl:template match=""/"">
+ <xsl:element name=""test"">
+ <xsl:element name=""something"">
+ <xsl:element name=""else"" />
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+ </xsl:stylesheet>";
+
+ XmlDocument xmlDoc = new XmlDocument ();
+ xmlDoc.LoadXml ("<dummy />");
+
+ // set indent to yes
+ StringWriter sw = new StringWriter ();
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, "indent=\"yes\""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<?xml version=\"1.0\" encoding=\"utf-16\"?>{0}" +
+ "<test>{0}" +
+ " <something>{0}" +
+ " <else />{0}" +
+ " </something>{0}" +
+ "</test>", Environment.NewLine), sw.ToString (), "#1");
+
+ // set indent to no
+ sw.GetStringBuilder ().Length = 0;
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, "indent=\"no\""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (
+ "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
+ "<test><something><else /></something></test>", sw.ToString (),
+ "#2");
+
+ // indent not set
+ sw.GetStringBuilder ().Length = 0;
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, ""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (
+ "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
+ "<test><something><else /></something></test>", sw.ToString (),
+ "#3");
+ }
+
+ [Test]
+ public void Output_Indent_Html ()
+ {
+ XsltArgumentList xsltArgs = new XsltArgumentList ();
+ XslTransform xsltProcessor = new XslTransform ();
+
+ string xsltFragment = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>
+ <xsl:stylesheet xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" version=""1.0"">
+ <xsl:output
+ method=""html""
+ {0} />
+ <xsl:template match=""/"">
+ <xsl:element name=""html"">
+ <xsl:element name=""body"">
+ <xsl:element name=""p"" />
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+ </xsl:stylesheet>";
+
+ XmlDocument xmlDoc = new XmlDocument ();
+ xmlDoc.LoadXml ("<dummy />");
+
+ // set indent to yes
+ StringWriter sw = new StringWriter ();
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, "indent=\"yes\""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<html>{0}" +
+ " <body>{0}" +
+ " <p></p>{0}" +
+ " </body>{0}" +
+ "</html>", Environment.NewLine), sw.ToString (), "#1");
+
+ // set indent to no
+ sw.GetStringBuilder ().Length = 0;
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, "indent=\"no\""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<html><body><p></p></body></html>",
+ Environment.NewLine), sw.ToString (), "#2");
+
+ // indent not set
+ sw.GetStringBuilder ().Length = 0;
+ xsltProcessor.Load (new XmlTextReader (new StringReader (
+ string.Format (xsltFragment, ""))),
+ new XmlUrlResolver (), AppDomain.CurrentDomain.Evidence);
+ xsltProcessor.Transform (xmlDoc, xsltArgs, sw, new XmlUrlResolver ());
+
+ Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+ "<html>{0}" +
+ " <body>{0}" +
+ " <p></p>{0}" +
+ " </body>{0}" +
+ "</html>", Environment.NewLine), sw.ToString (), "#3");
+ }
+
+ [Test]
[ExpectedException (typeof (XsltCompileException))]
public void Output_Indent_Invalid ()
{