| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- //
- // Tests for System.Web.UI.WebControls.XmlDataSource.cs
- //
- // Author:
- // Chris Toshok ([email protected])
- // Yoni Klain ([email protected])
- //
- //
- // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // 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 System;
- using System.Collections;
- using System.Collections.Specialized;
- using System.IO;
- using System.Globalization;
- using System.Web;
- 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
- {
- class DSPoker : XmlDataSource
- {
- public DSPoker () {
- TrackViewState ();
- }
- public object SaveState () {
- return SaveViewState ();
- }
- 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 ()
- {
- DSPoker p = new DSPoker ();
- Assert.AreEqual ("", p.Data, "A4");
- Assert.AreEqual ("", p.DataFile, "A5");
- 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");
- Assert.AreEqual (true, p.EnableCaching, "A15");
- }
- [Test]
- public void Attributes ()
- {
- DSPoker p = new DSPoker ();
- p.Data = data;
- Assert.AreEqual (data, p.Data, "A1");
- p.Transform = "transform";
- Assert.AreEqual ("transform", p.Transform, "A2");
- p.XPath = "xpath";
- Assert.AreEqual ("xpath", p.XPath, "A3");
- }
- [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 = data;
- p.Transform = "transform";
- p.XPath = "xpath";
- 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 ();
- copy = new DSPoker ();
- copy.LoadState (state);
- Assert.AreEqual ("", copy.DataFile, "A1");
- Assert.AreEqual ("", copy.TransformFile, "A2");
- }
- [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
|