|
|
@@ -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
|