Ver código fonte

Added SiteMapDataSourceTest.cs

svn path=/trunk/mcs/; revision=60250
Yoni Klain 19 anos atrás
pai
commit
47d01bc69c

+ 4 - 0
mcs/class/System.Web/ChangeLog

@@ -1,3 +1,7 @@
+2006-04-30 Yoni Klain <[email protected]>
+
+	* System.Web_test.dll.sources: add SiteMapDataSourceTest.cs 
+
 2006-04-23 Tal Klahr <[email protected]>
 
 	* System.Web_test.dll.sources: add ViewTest.cs and MultiViewTest.cs

+ 1 - 0
mcs/class/System.Web/System.Web_test.dll.sources

@@ -174,6 +174,7 @@ System.Web.UI.WebControls/WebColorConverterTest.cs
 System.Web.UI.WebControls/WebControlTest.cs
 System.Web.UI.WebControls/XmlTest.cs
 System.Web.UI.WebControls/XmlDataSourceTest.cs
+System.Web.UI.WebControls/SiteMapDataSourceTest.cs
 System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollectionTest.cs
 System.Web.UI.WebControls.WebParts/WebPartTest.cs
 System.Web/VirtualPathUtilityTest.cs

+ 4 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,7 @@
+2006-04-30 Yoni Klain <[email protected]>
+
+	* Added SiteMapDataSourceTest.cs 
+
 2006-04-23 Tal Klahr <[email protected]>
 
 	* Added ViewTest.cs and MultiViewTest.cs

+ 272 - 0
mcs/class/System.Web/Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs

@@ -0,0 +1,272 @@
+//
+// Tests for System.Web.UI.WebControls.View.cs
+//
+// Author:
+//	Yoni Klein ([email protected])
+//
+// (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]
+		[Category ("NotWorking")]  // not implemented in mono
+		public void SiteMapDataSource_NotWorkingDefaultProperties ()
+		{	
+			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]
+		[Category ("NotWorking")]  // Throws NotImplementedException in mono
+		public void SiteMapDataSource_GetList ()
+		{
+			PokerSiteMapDataSource p = new PokerSiteMapDataSource ();
+			Assert.IsNotNull (p.GetList (), "GetList");
+			Assert.IsTrue (p.ContainsListCollection, "ContainsListCollection");
+		}
+		
+		[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]
+		[Category ("NotWorking")]  //throws System.IndexOutOfRangeException : Array index is out of range
+		public void SiteMapDataSource_HierarchicalDataSourceView ()
+		{
+			PokerSiteMapDataSource p = new PokerSiteMapDataSource ();
+			p.Provider = new mySiteMapProvider ();
+			HierarchicalDataSourceView h = p.DoHierarchicalDataSourceView ("1");
+			Assert.IsNotNull (h, "HierarchicalDataSourceView");
+		}
+
+		[Test]
+		[Category ("NotWorking")] //must be throw ConfigurationErrorsException but was IndexOutOfRangeException 
+		[ExpectedException (typeof (ConfigurationErrorsException))]
+		public void SiteMapDataSource_GetViewExeption1 ()
+		{
+			PokerSiteMapDataSource p = new PokerSiteMapDataSource ();
+			p.GetView ("1");
+		}
+	}
+
+   
+	// 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