// // Tests for System.Web.UI.WebControls.View.cs // // Author: // Yoni Klein (yonik@mainsoft.com) // // (C) 2005 Mainsoft Corporation (http://www.mainsoft.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. // #if NET_2_0 using NUnit.Framework; using System; using System.IO; using System.Globalization; using System.Configuration; using System.Collections; using System.Collections.Specialized; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Security.Permissions; namespace MonoTests.System.Web.UI.WebControls { class PokerSiteMapDataSource : SiteMapDataSource { public PokerSiteMapDataSource () { TrackViewState (); } public object SaveState () { return SaveViewState (); } public void LoadState (object o) { LoadViewState (o); } public StateBag StateBag { get { return base.ViewState; } } public HierarchicalDataSourceView DoHierarchicalDataSourceView (string str) { return GetHierarchicalView (str); } } [TestFixture] public class SiteMapDataSourceTest { [Test] public void SiteMapDataSource_DefaultProperties () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); Assert.AreEqual (true, p.ShowStartingNode, "ShowStartingNode"); Assert.AreEqual (string.Empty, p.SiteMapProvider, "SiteMapProvider"); Assert.AreEqual (false, p.StartFromCurrentNode, "StartFromCurrentNode"); Assert.AreEqual (0, p.StartingNodeOffset, "StartingNodeOffset"); Assert.AreEqual (string.Empty, p.StartingNodeUrl, "StartingNodeUrl"); } [Test] public void SiteMapDataSource_ContainsListCollection () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); Assert.AreEqual (true, p.ContainsListCollection, "ContainsListCollection"); } [Test] public void SiteMapDataSource_ChangeProperties () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); p.ShowStartingNode = false; Assert.AreEqual (false, p.ShowStartingNode, "ShowStartingNode"); Assert.AreEqual (1, p.StateBag.Count, "ShowStartingNode#1"); p.SiteMapProvider = "test"; Assert.AreEqual ("test", p.SiteMapProvider, "SiteMapProvider"); Assert.AreEqual (2, p.StateBag.Count, "SiteMapProvider#1"); // null properties doe's not affects on state bag count p.SiteMapProvider = null; Assert.AreEqual (2, p.StateBag.Count, "SiteMapProvider#2"); p.StartFromCurrentNode = true; Assert.AreEqual (true, p.StartFromCurrentNode, "StartFromCurrentNode"); Assert.AreEqual (3, p.StateBag.Count, "StartFromCurrentNode#1"); p.StartingNodeOffset = 1; Assert.AreEqual (1, p.StartingNodeOffset, "StartingNodeOffset"); Assert.AreEqual (4, p.StateBag.Count, "StartingNodeOffset#2"); p.StartingNodeUrl = "default.aspx"; Assert.AreEqual ("default.aspx", p.StartingNodeUrl, "StartingNodeUrl"); Assert.AreEqual (5, p.StateBag.Count, "StartingNodeUrl#1"); // null properties doe's not affects on state bag count p.StartingNodeUrl = null; Assert.AreEqual (5, p.StateBag.Count, "StartingNodeUrl#2"); } [Test] public void SiteMapDataSource_GetList () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); Assert.IsNotNull (p.GetList (), "GetList"); Assert.IsTrue (p.ContainsListCollection, "ContainsListCollection"); } [Test] public void SiteMapDataSource_GetViewNames () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); Assert.AreEqual (1, p.GetViewNames ().Count, "GetViewNames().Count"); Assert.AreEqual ("DefaultView", ((string []) p.GetViewNames ()) [0], "GetViewNames () [0]"); } [Test] public void SiteMapDataSource_GetView () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); p.Provider = new mySiteMapProvider (); DataSourceView V = p.GetView(""); Assert.IsNotNull (V, "GetView"); } [Test] public void SiteMapDataSource_ViewState () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); p.SiteMapProvider = "test"; p.StartFromCurrentNode = false; p.StartingNodeOffset = 1; p.StartingNodeUrl = "default.aspx"; object state = p.SaveState (); PokerSiteMapDataSource copy = new PokerSiteMapDataSource (); copy.LoadState (state); Assert.AreEqual ("test", copy.SiteMapProvider, "SiteMapProvider"); Assert.AreEqual (false, copy.StartFromCurrentNode, "StartFromCurrentNode"); Assert.AreEqual (1, copy.StartingNodeOffset, "StartingNodeOffset"); Assert.AreEqual ("default.aspx", copy.StartingNodeUrl, "StartingNodeUrl"); } [Test] public void SiteMapDataSource_HierarchicalDataSourceView () { PokerSiteMapDataSource p = new PokerSiteMapDataSource (); p.Provider = new mySiteMapProvider (); HierarchicalDataSourceView h = p.DoHierarchicalDataSourceView ("1"); Assert.IsNotNull (h, "HierarchicalDataSourceView"); } } // Helper Class public class mySiteMapProvider : StaticSiteMapProvider { private SiteMapNode rootNode = null; // Implement a default constructor. public mySiteMapProvider () { } // Some basic state to help track the initialization state of the provider. private bool initialized = false; public virtual bool IsInitialized { get { return initialized; } } // Return the root node of the current site map. public override SiteMapNode RootNode { get { SiteMapNode temp = null; temp = BuildSiteMap (); return temp; } } protected override SiteMapNode GetRootNodeCore () { return RootNode; } // Initialize is used to initialize the properties and any state that the // AccessProvider holds, but is not used to build the site map. // The site map is built when the BuildSiteMap method is called. public override void Initialize (string name, NameValueCollection attributes) { if (IsInitialized) return; base.Initialize (name, attributes); initialized = true; } /// /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override. /// // Clean up any collections or other state that an instance of this may hold. protected override void Clear () { lock (this) { rootNode = null; base.Clear (); } } // Build an in-memory representation from persistent // storage, and return the root node of the site map. public override SiteMapNode BuildSiteMap () { // Since the SiteMap class is static, make sure that it is // not modified while the site map is built. lock (this) { // If there is no root node, then there is no site map. if (null == rootNode) { // Start with a clean slate Clear (); // Select the root node of the site map . rootNode = new SiteMapNode (this, "1", "default.aspx", "Default"); } else return null; SiteMapNode childNode = null; childNode = new SiteMapNode (this, "2", "catalog.aspx", "catalog"); AddNode (childNode, rootNode); childNode = new SiteMapNode (this, "3", "aboutus.aspx", "about us"); AddNode (childNode, rootNode); return rootNode; } } } } #endif