瀏覽代碼

add tests to XmlDataSourceTest.cs , add resources for this tests

svn path=/trunk/mcs/; revision=62943
Yoni Klain 19 年之前
父節點
當前提交
b52fdfeff3

+ 5 - 1
mcs/class/System.Web/ChangeLog

@@ -1,4 +1,8 @@
-2006-07-24 Merav Sudri <[email protected]>
+2006-07-25 Yoni Klain <[email protected]>
+				 
+	* Makefile: add resources for XmlDataSourceTest
+
+2006-07-24 Merav Sudri <[email protected]>
 				 
 	* Makefile: add Test/mainsoft/NunitWebResources/FormViewInsertEditDelete.aspx
 			resource for Postback functions

+ 6 - 0
mcs/class/System.Web/Makefile

@@ -91,6 +91,12 @@ TEST_RESOURCE_FILES = \
 	Test/mainsoft/NunitWebResources/Bluehills.jpg \
 	Test/mainsoft/NunitWebResources/FormViewTest1.aspx \
 	Test/mainsoft/NunitWebResources/FormViewInsertEditDelete.aspx \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest.xml \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest.xsl \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest1.aspx \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest2.aspx \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest3.aspx \
+	Test/mainsoft/NunitWebResources/XMLDataSourceTest4.aspx \
 	Test/mainsoft/MainsoftWebTest/nunitweb_config.xml 
 
 NUNIT_RESOURCE_FILES = $(TEST_RESOURCE_FILES)

+ 284 - 22
mcs/class/System.Web/Test/System.Web.UI.WebControls/XmlDataSourceTest.cs

@@ -3,6 +3,7 @@
 //
 // Author:
 //	Chris Toshok ([email protected])
+//      Yoni Klain   ([email protected])   
 //
 
 //
@@ -26,11 +27,12 @@
 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
+// NOTE: INCLUDE 2 CATEGORIES [Category ("NunitWeb")];[Category ("NotWorking")]
+		
 
 #if NET_2_0
 
-using NUnit.Framework;
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -41,6 +43,10 @@ using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.Xml;
 using System.Xml.Xsl;
+using NUnit.Framework;
+using MonoTests.SystemWeb.Framework;
+using MonoTests.stand_alone.WebHarness;
+using System.Threading;
 
 namespace MonoTests.System.Web.UI.WebControls
 {
@@ -56,11 +62,45 @@ namespace MonoTests.System.Web.UI.WebControls
 		public void LoadState (object o) {
 			LoadViewState (o);
 		}
+
+		public HierarchicalDataSourceView  DoGetHierarchicalView(string viewPath)
+		{
+			 return base.GetHierarchicalView(viewPath);
+		}
 	}
 
 	[TestFixture]
 	public class XmlDataSourceTest
 	{
+		string data = @"<?xml version=""1.0"" encoding=""utf-8""?><IranHistoricalPlaces name=""places""><Place name=""Taghe Bostan""><City>Kermanshah</City><Antiquity>2000</Antiquity></Place><Place name=""Persepolis""><City>Shiraz</City><Antiquity>2500</Antiquity></Place></IranHistoricalPlaces>";
+
+		[TestFixtureSetUp]
+		public void CopyTestResources ()
+		{
+#if DOT_NET 
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest.xml", "XMLDataSourceTest.xml");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest.xsl", "XMLDataSourceTest.xsl");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest1.aspx", "XMLDataSourceTest1.aspx");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest2.aspx", "XMLDataSourceTest2.aspx");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest3.aspx", "XMLDataSourceTest3.aspx");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.XMLDataSourceTest4.aspx", "XMLDataSourceTest4.aspx");
+#else
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest.xml", "XMLDataSourceTest.xml");
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest.xsl", "XMLDataSourceTest.xsl");
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest1.aspx", "XMLDataSourceTest1.aspx");
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest2.aspx", "XMLDataSourceTest2.aspx");
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest3.aspx", "XMLDataSourceTest3.aspx");
+			WebTest.CopyResource (GetType (), "XMLDataSourceTest4.aspx", "XMLDataSourceTest4.aspx");
+#endif
+		}
+
+		[SetUp]
+		
+		public void SetupTestCase ()
+		{
+			Thread.Sleep (100);
+		}
+
 		[Test]
 		public void Defaults ()
 		{
@@ -71,6 +111,16 @@ namespace MonoTests.System.Web.UI.WebControls
 			Assert.AreEqual ("", p.Transform, "A9");
 			Assert.AreEqual ("", p.TransformFile, "A10");
 			Assert.AreEqual ("", p.XPath, "A11");
+			
+			// Added
+			Assert.AreEqual (null, p.TransformArgumentList, "A17");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void Defaults_NotWorking ()
+		{
+			DSPoker p = new DSPoker ();
 			Assert.AreEqual (0, p.CacheDuration, "A12");
 			Assert.AreEqual (DataSourceCacheExpiry.Absolute, p.CacheExpirationPolicy, "A13");
 			Assert.AreEqual ("", p.CacheKeyDependency, "A14");
@@ -82,8 +132,8 @@ namespace MonoTests.System.Web.UI.WebControls
 		{
 			DSPoker p = new DSPoker ();
 
-			p.Data = Test1Document1;
-			Assert.AreEqual (Test1Document1, p.Data, "A1");
+			p.Data = data;
+			Assert.AreEqual (data, p.Data, "A1");
 
 			p.Transform = "transform";
 			Assert.AreEqual ("transform", p.Transform, "A2");
@@ -93,29 +143,29 @@ namespace MonoTests.System.Web.UI.WebControls
 		}
 
 		[Test]
+		[Category ("NotWorking")]
 		public void ViewState ()
 		{
 			// XXX weird... something odd going on with
 			// ViewState?  or are none of these stored?
 			DSPoker p = new DSPoker ();
 
-			p.Data = Test1Document1;
+			p.Data = data;
 			p.Transform = "transform";
 			p.XPath = "xpath";
-			
-			object state = p.SaveState();
+
+			object state = p.SaveState ();
 			DSPoker copy = new DSPoker ();
 			copy.LoadState (state);
 			Assert.AreEqual ("", copy.Data, "A1");
 			Assert.AreEqual ("", copy.Transform, "A2");
 			Assert.AreEqual ("", copy.XPath, "A3");
 
-
 			p = new DSPoker ();
 			p.DataFile = "DataFile";
 			p.TransformFile = "TransformFile";
 
-			state = p.SaveState();
+			state = p.SaveState ();
 			copy = new DSPoker ();
 
 			copy.LoadState (state);
@@ -123,19 +173,231 @@ namespace MonoTests.System.Web.UI.WebControls
 			Assert.AreEqual ("", copy.TransformFile, "A2");
 		}
 
-		const string Test1Document1 = 
-@"<?xml version=""1.0"" encoding=""utf-8"" ?>
-<IranHistoricalPlaces name=""places"">
- <Place name=""Taghe Bostan"">
-  <City>Kermanshah</City>
-  <Antiquity>2000</Antiquity>
- </Place>
- <Place name=""Persepolis"">
-  <City>Shiraz</City>
-  <Antiquity>2500</Antiquity>
- </Place>
-</IranHistoricalPlaces>";
-	}
+		[Test]
+		[Category ("NunitWeb")]
+		public void DataFile ()
+		{
+			new WebTest (PageInvoker.CreateOnLoad (datafile)).Run ();
+		}
+
+		public static void datafile (Page p)
+		{
+			string originalxml = @"<?xml version=""1.0"" encoding=""utf-8""?><bookstore xmlns:bk=""urn:samples""><book genre=""novel"" publicationdate=""1999"" bk:ISBN=""0192100262""><title>Pride and Prejudice</title><author><first-name>Jane</first-name><last-name>Austen</last-name></author><price>24.95</price>""
+			</book><book genre=""novel"" publicationdate=""1985"" bk:ISBN=""0771008139""><title>The Handmaid's Tale</title><author><first-name>Margaret</first-name><last-name>Atwood</last-name></author><price>29.95</price></book></bookstore>";
+
+			XmlDataSource ds = new XmlDataSource ();
+			p.Form.Controls.Add (ds);
+			ds.DataFile = "~/XMLDataSourceTest.xml";
+			ds.DataBind ();
+			string derivedxml = ((XmlDocument) ds.GetXmlDocument ()).InnerXml;
+			HtmlDiff.AssertAreEqual (originalxml, derivedxml, "Loading xml");
+		}
+
+		[Test]
+		public void GetXmlDocument ()
+		{
+			DSPoker p = new DSPoker ();
+			p.Data = data;
+			XmlDocument doc = p.GetXmlDocument ();
+			HtmlDiff.AssertAreEqual (data, doc.InnerXml, "GetXmlDocument");
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotWorking")]
+		public void XPath ()
+		{
+			Page page = new Page ();
+			XmlDataSource ds = new XmlDataSource ();
+			ds.ID = "ds";
+			ds.Data = @"<?xml version=""1.0"" encoding=""utf-8""?>
+					<bookstore xmlns:bk=""urn:samples"">
+					  <book genre=""novel"" publicationdate=""1999"" bk:ISBN=""0192100262"">
+					    <title>Pride and Prejudice</title>
+					    <author>
+					      <first-name>Jane</first-name>
+					      <last-name>Austen</last-name>
+					    </author>
+					    <price>24.95</price>""
+					  </book>
+					  <book genre=""novel"" publicationdate=""1985"" bk:ISBN=""0771008139"">
+					    <title>The Handmaid's Tale</title>
+					    <author>
+					      <first-name>Margaret</first-name>
+					      <last-name>Atwood</last-name>
+					    </author>
+					    <price>29.95</price>
+					  </book>
+					</bookstore>";
+			DataList list = new DataList ();
+			page.Controls.Add (list);
+			page.Controls.Add (ds);
+			list.DataSourceID = "ds";
+			list.DataBind ();
+			Assert.AreEqual (2, list.Items.Count, "Before XPath elements");
+			ds.XPath = "/bookstore/book [title='Pride and Prejudice']";
+			list.DataBind ();
+			Assert.AreEqual (1, list.Items.Count, "After XPath elements");
+			ds.XPath = "bookstore/book [@genre='novel']";
+			list.DataBind ();
+			Assert.AreEqual (2, list.Items.Count, "After XPath property");
+		}
+
+		[Test]
+		public void GetHierarchicalView ()
+		{
+			Page page = new Page ();
+			DSPoker ds = new DSPoker ();
+			ds.ID = "ds";
+			ds.Data = @"<?xml version=""1.0"" encoding=""utf-8""?>
+					<bookstore xmlns:bk=""urn:samples"">
+					  <book genre=""novel"" publicationdate=""1999"" bk:ISBN=""0192100262"">
+					    <title>Pride and Prejudice</title>
+					    <author>
+					      <first-name>Jane</first-name>
+					      <last-name>Austen</last-name>
+					    </author>
+					    <price>24.95</price>
+					  </book>
+					  <book genre=""novel"" publicationdate=""1985"" bk:ISBN=""0771008139"">
+					    <title>The Handmaid's Tale</title>
+					    <author>
+					      <first-name>Margaret</first-name>
+					      <last-name>Atwood</last-name>
+					    </author>
+					    <price>29.95</price>
+					  </book>
+					</bookstore>";
+			HierarchicalDataSourceView view = ds.DoGetHierarchicalView ("");
+			IHierarchicalEnumerable num = view.Select ();
+			foreach (object obj in num) {
+				IHierarchyData hdata = num.GetHierarchyData (obj);
+				XmlElement element = (XmlElement) hdata.Item;
+				Assert.AreEqual ("bookstore", element.Name, "RootElementName");
+				Assert.AreEqual ("Pride and PrejudiceJaneAusten24.95The Handmaid's TaleMargaretAtwood29.95", element.InnerText, "InnerText");
+				Assert.AreEqual (2, element.ChildNodes.Count, "ChildElementNodes");
+			}
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotWorking")] //NotImplementedException
+		public void Transform ()
+		{
+			string origin = @"<form name=""form1"" method=""post"" action=""XMLDataSourceTest1.aspx"" id=""form1"">
+						<div>
+						<input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""/wEPDwUKLTQyMTUyMDUzNQ9kFgICAw9kFgICAw8WAh4LXyFJdGVtQ291bnQCARYCZg9kFgJmDxUDBTEyMzQ1BFRvZGQEUm93ZWRk9AOJvfc/t+h2W5vJ8AYx34Ds9jA="" />
+						</div><div>
+						<h2>Order</h2><hr>
+						<table>
+						  <tr>
+						    <td>Customer</td>
+						    <td><font color=""blue"">12345</font></td>
+						    <td>Todd</td>
+						    <td>Rowe</td>
+						  </tr>
+						</table>
+						<hr></div></form>";
+			string result = new WebTest ("XMLDataSourceTest1.aspx").Run();
+			HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml(result) , "TransformFail");
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotWorking")] //NotImplementedException
+		public void TransformFile ()
+		{
+			string origin = @"<form name=""form1"" method=""post"" action=""XMLDataSourceTest2.aspx"" id=""form1"">
+					  <div><input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""/wEPDwUJOTQ2ODg0NTEwD2QWAgIDD2QWAgIDDxYCHgtfIUl0ZW1Db3VudAIBFgJmD2QWAmYPFQMFMTIzNDUEVG9kZARSb3dlZGRK01cIwfYACh3vzGkvlsmei3JplQ=="" /></div>
+					  <div><h2>Order</h2>
+						<hr>
+						<table>
+						  <tr>
+						    <td>Customer</td>
+						    <td><font color=""blue"">12345</font></td>
+						    <td>Todd</td>
+						    <td>Rowe</td>
+						  </tr>
+						</table>
+						<hr>
+					  </div></form>";
+			string result = new WebTest ("XMLDataSourceTest2.aspx").Run ();
+			HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (result), "TransformFileFail");
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotWorking")]
+		public void TransformArgumentList ()
+		{
+			string origin = @"<form name=""form1"" method=""post"" action=""XMLDataSourceTest3.aspx"" id=""form1"">
+					<div>
+					<input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""/wEPDwUKLTQyMTUyMDUzNQ9kFgICAw9kFgICAw8WAh4LXyFJdGVtQ291bnQCARYCZg9kFgJmDxUDJjEyMzQ1cHVyY2hhc2VkIGJ5OiBNYWluc29mdCBkZXZlbG9wZXJzBFRvZGQEUm93ZWRkrPuQleD/QDM5r+J2jFbRBXLNXkM="" />
+					</div><div>
+					      <h2>Order</h2>
+						<hr>
+						<table>
+						  <tr>
+						    <td>Customer</td>
+						    <td><font color=""blue"">12345purchased by: Mainsoft developers</font></td>
+						    <td>Todd</td>
+						    <td>Rowe</td>
+						  </tr>
+						</table>
+						<hr>
+					</div></form>";
+			string result = new WebTest ("XMLDataSourceTest3.aspx").Run ();
+			HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (result), "TransformArgumentListFail");
+		}
+
+		[Test]
+		[Category ("NunitWeb")]
+		[Category ("NotWorking")] // <div> expected
+		public void Save ()
+		{
+			string origin = @"<form name=""form1"" method=""post"" action=""XMLDataSourceTest4.aspx"" id=""form1"">
+						<div>
+						<input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""/wEPDwUJOTM3NTIxOTgxD2QWAgIDD2QWAgIDDxYCHgtfIUl0ZW1Db3VudAICFgRmD2QWAmYPFQQLVGhpc0lzQVRlc3QAAAUyNC45NWQCAQ9kFgJmDxUEE1RoZSBIYW5kbWFpZCdzIFRhbGUAAAUyOS45NWRkGq6R82J7BSf9/XWMvLgdDdRVqwM="" />
+						</div><div>
+						<h2>BookStore</h2><hr>
+						<table>
+						  <tr>
+						    <td>Book</td>
+						    <td><font color=""blue"">ThisIsATest</font></td>
+						    <td></td>
+						    <td></td>
+						    <td>24.95</td>
+						  </tr>
+						</table><hr>
+						<h2>BookStore</h2><hr>
+						<table>
+						  <tr>
+						    <td>Book</td>
+						    <td><font color=""blue"">The Handmaid's Tale</font></td>
+						    <td></td>
+						    <td></td>
+						    <td>29.95</td>
+						  </tr>
+						</table><hr></div></form>";
+			string result = new WebTest ("XMLDataSourceTest4.aspx").Run ();
+			HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (result), "TransformArgumentListFail");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void GetXmlDocumentException ()
+		{
+			DSPoker p = new DSPoker ();
+			p.GetXmlDocument ();
+		}
+
+		[TestFixtureTearDown]
+		public void TearDown ()
+		{
+			WebTest.Unload ();
+		}
+	}	
 }
 
 #endif

+ 6 - 0
mcs/class/System.Web/Test/mainsoft/ChangeLog

@@ -1,3 +1,9 @@
+2006-07-25 Yoni Klain <[email protected]>
+
+	* added : XMLDataSourceTest.xml;XMLDataSourceTest.xsl;XMLDataSourceTest1.aspx;
+	* XMLDataSourceTest2.aspx;XMLDataSourceTest3.aspx;XMLDataSourceTest4.aspx
+	* embedded resources for XmlDataSourceTest.cs
+
 2006-07-16 Yoni Klain <[email protected]>
 
 	* added WizardTest.skin embedded resources for WizardStepBase test

+ 19 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bookstore xmlns:bk="urn:samples">
+  <book genre="novel" publicationdate="1999" bk:ISBN="0192100262">
+    <title>Pride and Prejudice</title>
+    <author>
+      <first-name>Jane</first-name>
+      <last-name>Austen</last-name>
+    </author>
+    <price>24.95</price>"
+  </book>
+  <book genre="novel" publicationdate="1985" bk:ISBN="0771008139">
+    <title>The Handmaid's Tale</title>
+    <author>
+      <first-name>Margaret</first-name>
+      <last-name>Atwood</last-name>
+    </author>
+    <price>29.95</price>
+  </book>
+</bookstore>

+ 22 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest.xsl

@@ -0,0 +1,22 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="orders">
+    <orders>
+      <xsl:apply-templates select="order"/>
+    </orders>
+  </xsl:template>
+  <xsl:template match="order">
+    <order>
+      <customer>
+        <id>
+          <xsl:value-of select="customer/@id"/>
+        </id>
+        <firstname>
+          <xsl:value-of select="customername/firstn"/>
+        </firstname>
+        <lastname>
+          <xsl:value-of select="customername/lastn"/>
+        </lastname>
+      </customer>
+    </order>
+  </xsl:template>
+</xsl:stylesheet>

+ 92 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest1.aspx

@@ -0,0 +1,92 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head id="Head1" runat="server">
+    <title>Untitled Page</title>
+    <script language="C#" runat="server">
+        protected void Page_PreRender (object sender, EventArgs e)
+		{
+			XmlDataSource1.Data = @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
+					     <orders>
+					       <order>
+						 <customer id=""12345"" />
+						 <customername>
+						     <firstn>Todd</firstn>
+						     <lastn>Rowe</lastn>
+						 </customername>
+						 <transaction id=""12345"" />
+						 <shipaddress>
+						     <address1>1234 Tenth Avenue</address1>
+						     <city>Bellevue</city>
+						     <state>Washington</state>
+						     <zip>98001</zip>
+						 </shipaddress>
+						 <summary>
+						     <item dept=""tools"">screwdriver</item>
+						     <item dept=""tools"">hammer</item>
+						     <item dept=""plumbing"">fixture</item>
+						 </summary>
+					       </order>
+					    </orders>";      
+                 }
+    </script>
+</head>
+
+<body>
+begint
+    <form id="form1" runat="server">
+        <div>
+           <asp:XmlDataSource
+            runat="server"
+            id="XmlDataSource1">
+            
+            <Transform>
+              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+              <xsl:template match="orders">
+                <orders>
+                  <xsl:apply-templates select="order"/>
+                </orders>
+              </xsl:template>
+              <xsl:template match="order">
+                <order>
+                <customer>
+                  <id>
+                    <xsl:value-of select="customer/@id"/>
+                  </id>
+                  <firstname>
+                    <xsl:value-of select="customername/firstn"/>
+                  </firstname>
+                  <lastname>
+                    <xsl:value-of select="customername/lastn"/>
+                  </lastname>
+                </customer>
+                </order>
+              </xsl:template>
+              </xsl:stylesheet>
+            </Transform>
+          </asp:XmlDataSource>
+
+          <asp:Repeater ID="Repeater1"
+            runat="server"
+            DataSourceID="XmlDataSource1">
+            <ItemTemplate>
+                <h2>Order</h2>
+                <hr>
+                <table>
+                  <tr>
+                    <td>Customer</td>
+                    <td><font color="blue"><%# XPath ("customer/id") %></font></td>
+                    <td><%# XPath ("customer/firstname")%></td>
+                    <td><%# XPath ("customer/lastname")%></td>
+                  </tr>
+                </table>
+                <hr>
+            </ItemTemplate>
+        </asp:Repeater>
+      </div>
+      </form>
+      endt
+  </body>
+</html>

+ 68 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest2.aspx

@@ -0,0 +1,68 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head id="Head1" runat="server">
+    <title>Untitled Page</title>
+    <script language="C#" runat="server">
+        protected void Page_PreRender (object sender, EventArgs e)
+		{
+			XmlDataSource1.Data = @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
+					     <orders>
+					       <order>
+						 <customer id=""12345"" />
+						 <customername>
+						     <firstn>Todd</firstn>
+						     <lastn>Rowe</lastn>
+						 </customername>
+						 <transaction id=""12345"" />
+						 <shipaddress>
+						     <address1>1234 Tenth Avenue</address1>
+						     <city>Bellevue</city>
+						     <state>Washington</state>
+						     <zip>98001</zip>
+						 </shipaddress>
+						 <summary>
+						     <item dept=""tools"">screwdriver</item>
+						     <item dept=""tools"">hammer</item>
+						     <item dept=""plumbing"">fixture</item>
+						 </summary>
+					       </order>
+					    </orders>";      
+                 }
+    </script>
+</head>
+
+<body>
+begint
+    <form id="form1" runat="server">
+        <div>
+            <asp:XmlDataSource
+            runat="server"
+            id="XmlDataSource1"
+            TransformFile="~/XMLDataSourceTest.xsl">
+            </asp:XmlDataSource>
+
+          <asp:Repeater ID="Repeater1"
+            runat="server"
+            DataSourceID="XmlDataSource1">
+            <ItemTemplate>
+                <h2>Order</h2>
+                <hr>
+                <table>
+                  <tr>
+                    <td>Customer</td>
+                    <td><font color="blue"><%# XPath ("customer/id") %></font></td>
+                    <td><%# XPath ("customer/firstname")%></td>
+                    <td><%# XPath ("customer/lastname")%></td>
+                  </tr>
+                </table>
+                <hr>
+            </ItemTemplate>
+        </asp:Repeater>
+      </div>
+    </form>
+    endt
+</body>
+</html>

+ 106 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest3.aspx

@@ -0,0 +1,106 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head id="Head1" runat="server">
+    <title>Untitled Page</title>
+    <script language="C#" runat="server">
+        
+        public void TransformEventHandler (object sender, EventArgs e)
+        {
+
+            // Create an XsltArgumentList.
+            System.Xml.Xsl.XsltArgumentList xslArg = new System.Xml.Xsl.XsltArgumentList ();
+            xslArg.AddParam ("purchby", "", "Mainsoft developers");
+
+            ((XmlDataSource) sender).TransformArgumentList = xslArg;
+        }
+        
+        protected void Page_PreRender (object sender, EventArgs e)
+		{
+			XmlDataSource1.Data = @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
+					     <orders>
+					       <order>
+						 <customer id=""12345"" />
+						 <customername>
+						     <firstn>Todd</firstn>
+						     <lastn>Rowe</lastn>
+						 </customername>
+						 <transaction id=""12345"" />
+						 <shipaddress>
+						     <address1>1234 Tenth Avenue</address1>
+						     <city>Bellevue</city>
+						     <state>Washington</state>
+						     <zip>98001</zip>
+						 </shipaddress>
+						 <summary>
+						     <item dept=""tools"">screwdriver</item>
+						     <item dept=""tools"">hammer</item>
+						     <item dept=""plumbing"">fixture</item>
+						 </summary>
+					       </order>
+					    </orders>";      
+                 }
+    </script>
+</head>
+
+<body>
+begint
+    <form id="form1" runat="server">
+        <div>
+            <asp:XmlDataSource
+            runat="server"
+            id="XmlDataSource1"
+            ontransforming="TransformEventHandler">
+            
+            <Transform>
+              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+              <xsl:param name="purchby"/>
+              <xsl:template match="orders">
+                <orders>
+                  <xsl:apply-templates select="order"/>
+                </orders>
+              </xsl:template>
+              <xsl:template match="order">
+                <order>
+                <customer>
+                  <id>
+                    <xsl:value-of select="customer/@id"/>
+                    <div>purchased by: <xsl:value-of select="$purchby"/></div>  
+                  </id>
+                  <firstname>
+                    <xsl:value-of select="customername/firstn"/>
+                  </firstname>
+                  <lastname>
+                    <xsl:value-of select="customername/lastn"/>
+                  </lastname>
+                </customer>
+                </order>
+              </xsl:template>
+              </xsl:stylesheet>
+            </Transform>
+          </asp:XmlDataSource>
+
+          <asp:Repeater ID="Repeater1"
+            runat="server"
+            DataSourceID="XmlDataSource1">
+            <ItemTemplate>
+                <h2>Order</h2>
+                <hr>
+                <table>
+                  <tr>
+                    <td>Customer</td>
+                    <td><font color="blue"><%# XPath ("customer/id") %></font></td>
+                    <td><%# XPath ("customer/firstname")%></td>
+                    <td><%# XPath ("customer/lastname")%></td>
+                  </tr>
+                </table>
+                <hr>
+            </ItemTemplate>
+        </asp:Repeater>
+      </div>
+    </form>
+    endt
+</body>
+</html>

+ 50 - 0
mcs/class/System.Web/Test/mainsoft/NunitWebResources/XMLDataSourceTest4.aspx

@@ -0,0 +1,50 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head id="Head1" runat="server">
+    <title>Untitled Page</title>
+    <script language="C#" runat="server">
+        protected void Page_PreRender (object sender, EventArgs e)
+        {
+            System.Xml.XmlDocument myXml = new System.Xml.XmlDocument ();
+            myXml = (System.Xml.XmlDocument) XmlDataSource1.GetXmlDocument ();
+            System.Xml.XmlNode myNode = myXml.SelectSingleNode ("bookstore/book [title='Pride and Prejudice']/title");
+            myNode.InnerText = "ThisIsATest";
+            XmlDataSource1.Save ();
+        }
+    </script>
+</head>
+<body>
+begint
+    <form id="form1" runat="server">
+        <div>
+            <asp:XmlDataSource
+            runat="server"
+            id="XmlDataSource1"
+            DataFile="~/XMLDataSourceTest.xml" />
+            
+            <asp:Repeater ID="Repeater1"
+            runat="server"
+            DataSourceID="XmlDataSource1">
+            <ItemTemplate>
+                <h2>BookStore</h2>
+                <hr>
+                <table>
+                  <tr>
+                    <td>Book</td>
+                    <td><font color="blue"><%# XPath ("title")%></font></td>
+                    <td><%# XPath ("first_name")%></td>
+                    <td><%# XPath ("last_name")%></td>
+                    <td><%# XPath ("price") %></td>
+                  </tr>
+                </table>
+                <hr>
+            </ItemTemplate>
+        </asp:Repeater>
+      </div>
+    </form>
+    endt
+</body>
+</html>