diff options
author | Gert Driesen <drieseng@users.sourceforge.net> | 2005-12-23 23:42:46 +0300 |
---|---|---|
committer | Gert Driesen <drieseng@users.sourceforge.net> | 2005-12-23 23:42:46 +0300 |
commit | 357e2fccaac4dbe2a168f727435af5ee52ebbd55 (patch) | |
tree | d6fe9f09312c7106c1d44795328201543d783f6b /mcs/class/System.XML | |
parent | 0f03636edf21dd485314428c5c972a0dd74ebc44 (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/ChangeLog | 4 | ||||
-rw-r--r-- | mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs | 129 |
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 () { |