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>2009-04-15 12:54:10 +0400
committerAtsushi Eno <atsushieno@gmail.com>2009-04-15 12:54:10 +0400
commitd54e48a2c1c738b64bc35c93a07733fde224d652 (patch)
treedfcb5e76623d1cdc75603634882e17ada12bde25 /mcs/class/System.XML/Test
parenta7cbc14542ed93afff61083d901f480e02bbfb96 (diff)
2009-04-15 Atsushi Enomoto <atsushi@ximian.com>
* Expression.cs : extensions could return null and it should be regarded as empty node-set, not an error. svn path=/trunk/mcs/; revision=131738
Diffstat (limited to 'mcs/class/System.XML/Test')
-rw-r--r--mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs53
1 files changed, 53 insertions, 0 deletions
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 2c77adfd90b..aac0d89be94 100644
--- a/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
@@ -2325,6 +2325,59 @@ World";
xslt.Transform (new XmlTextReader (new StringReader (@"<foo>bar</foo>")), null, sw);
Assert.AreEqual (" ", sw.ToString ());
}
+
+ [Test]
+ public void Bug487065 ()
+ {
+ using (XmlReader input = GetInput ()) {
+ using (XmlWriter output = XmlWriter.Create (Path.Combine(Path.GetTempPath(), "out.xml"))) {
+ PreProcess (input, output);
+ Assert.IsTrue (valueHasBeenSet, "#1");
+ }
+ }
+ }
+
+ private static XmlReader GetInput ()
+ {
+ return XmlReader.Create (new StringReader ("<cb:config-template xmlns:cb=\"urn:ccnet.config.builder\"><cb:define name=\"var1\">value1</cb:define></cb:config-template>"));
+ }
+
+ private void PreProcess (XmlReader input, XmlWriter output)
+ {
+ var xsltsettings = new XsltSettings (true, true);
+ var xsltpreprocess = new XslCompiledTransform (true);
+
+ var stream =
+ new StringReader (@"
+<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+ xmlns:msxsl='urn:schemas-microsoft-com:xslt'
+ xmlns:cb='urn:ccnet.config.builder'
+ xmlns:env='environment'
+ xmlns:exsl='http://exslt.org/common'
+ exclude-result-prefixes='msxsl cb env exsl'>
+ <xsl:template match='cb:define[not(*) and @name]'>
+ <xsl:for-each select='env:define_text_constant(@name,.)'/>
+ </xsl:template>
+</xsl:stylesheet>");
+
+ using (XmlReader xsltreader = XmlReader.Create (stream))
+ xsltpreprocess.Load (xsltreader, xsltsettings, new XmlUrlResolver());
+
+ var xsltargs = new XsltArgumentList ();
+
+ // The XSLT calls extension functions in _current_env.
+ xsltargs.AddExtensionObject ("environment", this);
+ xsltpreprocess.Transform (input, xsltargs, output, null);
+ }
+
+ public void define_text_constant (string name, string value)
+ {
+ Assert.AreEqual("var1", name, "#a1");
+ Assert.AreEqual("value1", value, "#a2");
+ valueHasBeenSet = true;
+ }
+
+ private bool valueHasBeenSet;
#endif
}
}