2 // System.Xml.Xsl.MsxslScriptTests.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // (C) 2004 Novell Inc.
14 using NUnit.Framework;
16 namespace MonoTests.System.Xml.Xsl
19 public class MsxslScriptTests : Assertion
21 // PI calc stuff are one of MSDN samples.
23 static XmlDocument doc;
24 static MsxslScriptTests ()
26 string inputxml = @"<?xml version='1.0'?>
35 doc = new XmlDocument ();
36 doc.LoadXml (inputxml);
39 static string xslstring = @"<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
40 xmlns:msxsl='urn:schemas-microsoft-com:xslt'
41 xmlns:user='urn:my-scripts'>
43 ***** rewrite here *****
45 <xsl:template match='data'>
48 <xsl:for-each select='circle'>
50 <xsl:copy-of select='node()'/>
52 <!-- xsl:value-of select='user:circumference(radius)'/ -->
54 <xsl:value-of select='user:PadRight("test-string", 20)'/>
62 string cs1 = @"<msxsl:script language='C#' implements-prefix='user'>
64 public string PadRight( string str, int padding) {
65 return str.PadRight(padding);
67 public double circumference(double radius){
69 double circ = pi*radius*2;
74 string vb1 = @"<msxsl:script language='VB' implements-prefix='user'>
76 public function circumference(radius as double) as double
77 dim pi as double = 3.14
78 dim circ as double = pi*radius*2
81 public function PadRight(str as string, padding as integer) as string
82 return str.PadRight(padding)
86 string js1 = @"<msxsl:script language='JScript' implements-prefix='user'>
88 function circumference(radius : double) : double {
89 var pi : double = 3.14;
90 var circ : double = pi*radius*2;
93 function PadRight(str : String, padding : int) {
94 return str.PadRight(padding);
103 public void GetReady ()
105 xslt = new XslTransform ();
109 [Category ("NotWorking")] // it depends on "mcs" existence
110 public void TestCSharp ()
112 string style = xslstring.Replace ("***** rewrite here *****", cs1);
113 XmlTextReader xr = new XmlTextReader (style, XmlNodeType.Document, null);
115 xslt.Transform (doc.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
119 [Category ("NotWorking")] // it depends on "mbas" existence
120 public void TestVB ()
122 string style = xslstring.Replace ("***** rewrite here *****", vb1);
123 XmlTextReader xr = new XmlTextReader (style, XmlNodeType.Document, null);
125 xslt.Transform (doc.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
129 [Category ("NotWorking")] // it depends on "mjs" existence
130 public void TestJScript ()
132 string style = xslstring.Replace ("***** rewrite here *****", js1);
133 XmlTextReader xr = new XmlTextReader (style, XmlNodeType.Document, null);
135 xslt.Transform (doc.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
139 [Ignore ("Actually it should throw compile exception")]
140 [ExpectedException (typeof (XsltException))]
141 public void InvalidScript ()
143 string script = @"<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:user='urn:my-scripts'
144 xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
146 <xsl:output method='html' indent='no' />
148 <xsl:template match='/project'>
149 <xsl:if test='user:BadScriptFunction('test')'></xsl:if>
152 <msxsl:script language='C#' implements-prefix='user'>
154 string BadScriptFunction(string test) {
161 xslt.Load (new XmlTextReader (script, XmlNodeType.Document, null));