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' xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
64 string PadRight( string str, int padding) {
65 return str.PadRight(padding);
69 string cs2
= @"<msxsl:script language='C#' implements-prefix='user' xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
71 public double circumference(double radius){
73 double circ = pi*radius*2;
78 string vb1
= @"<msxsl:script language='VB' implements-prefix='user' xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
80 public function circumference(radius as double) as double
81 dim pi as double = 3.14
82 dim circ as double = pi*radius*2
85 public function greet () as string
86 return " + "\"Hey! you should not depend on proprietary scripting!!\"" + @"
90 string js1
= @"<msxsl:script language='JScript' implements-prefix='user' xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
92 function circumference(radius : double) : double {
93 var pi : double = 3.14;
94 var circ : double = pi*radius*2;
97 function greet () : String {
98 return " + "\"Hey! you should not depend on proprietary scripting!!\"" + @";
107 public void GetReady ()
109 xslt
= new XslTransform ();
113 public void TestCSharp ()
115 XmlTextReader xr
= new XmlTextReader (cs1
, XmlNodeType
.Document
, null);
117 xslt
.Transform (doc
.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
119 xr
= new XmlTextReader (cs2
, XmlNodeType
.Document
, null);
121 xslt
.Transform (doc
.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
125 public void TestVB ()
127 XmlTextReader xr
= new XmlTextReader (vb1
, XmlNodeType
.Document
, null);
129 xslt
.Transform (doc
.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
133 public void TestJScript ()
135 XmlTextReader xr
= new XmlTextReader (js1
, XmlNodeType
.Document
, null);
137 xslt
.Transform (doc
.CreateNavigator (), null, new XmlTextWriter (new StringWriter ()));
141 [ExpectedException (typeof (XsltCompileException
))]
142 public void InvalidScript ()
144 string script
= @"<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:user='urn:my-scripts'
145 xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
147 <xsl:output method='html' indent='no' />
149 <xsl:template match='/project'>
150 <xsl:if test='user:BadScriptFunction('test')'></xsl:if>
153 <msxsl:script language='C#' implements-prefix='user'>
155 string BadScriptFunction(string test) {
162 xslt
.Load (new XmlTextReader (script
, XmlNodeType
.Document
, null));