Prechádzať zdrojové kódy

2006-10-09 Igor Zelmanovich <[email protected]>

	* DataSourceSelectArguments.cs: fixed: Equals method.


svn path=/trunk/mcs/; revision=66464
Igor Zelmanovich 19 rokov pred
rodič
commit
a5eca432e7

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

@@ -1,3 +1,7 @@
+2006-10-09 Igor Zelmanovich <[email protected]>
+
+	* DataSourceSelectArguments.cs: fixed: Equals method.
+
 2006-10-09 Gonzalo Paniagua Javier <[email protected]>
 
 	* CssStyleCollection.cs: don't clear the collection of properties, but

+ 13 - 7
mcs/class/System.Web/System.Web.UI/DataSourceSelectArguments.cs

@@ -76,21 +76,27 @@ namespace System.Web.UI
 			this.dsc = this.dsc | srcCapabilities;
 		}
 
+		// MSDN: The DataSourceSelectArguments class overrides the Object.Equals method to test 
+		// equality using the various properties of the objects. If the MaximumRows, 
+		// RetrieveTotalRowCount, SortExpression, StartRowIndex, and TotalRowCount properties 
+		// are all equal in value, the Equals(Object) method returns true.
 		public override bool Equals (object obj)
 		{
-			if (!(obj is DataSourceSelectArguments))
+			DataSourceSelectArguments args = obj as DataSourceSelectArguments;
+			if (args == null)
 				return false;
 
-			DataSourceSelectArguments args = (DataSourceSelectArguments)obj;
-			return (this.sortExpression == args.sortExpression &&
-				this.startingRowIndex == args.startingRowIndex &&
-				this.maxRows == args.maxRows);
+			return (this.SortExpression == args.SortExpression &&
+				this.StartRowIndex == args.StartRowIndex &&
+				this.MaximumRows == args.MaximumRows &&
+				this.RetrieveTotalRowCount == args.RetrieveTotalRowCount &&
+				this.TotalRowCount == args.TotalRowCount);
 		}
 
-		[MonoTODO]
 		public override int GetHashCode ()
 		{
-			return sortExpression.GetHashCode ();
+			int hash = SortExpression != null ? SortExpression.GetHashCode() : 0;
+			return hash ^ StartRowIndex ^ MaximumRows ^ RetrieveTotalRowCount.GetHashCode() ^ TotalRowCount;
 		}
 
 		public void RaiseUnsupportedCapabilitiesError (DataSourceView view)

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

@@ -113,6 +113,7 @@ System.Web.UI.HtmlControls/HtmlTableCellTest.cs
 System.Web.UI.HtmlControls/HtmlTableRowTest.cs
 System.Web.UI.HtmlControls/HtmlTableTest.cs
 System.Web.UI.HtmlControls/HtmlTextAreaTest.cs
+System.Web.UI/DataSourceSelectArgumentsTest.cs
 System.Web.UI/HtmlTextWriterTest.cs
 System.Web.UI/MinimizableAttributeTypeConverterTest.cs
 System.Web.UI/OutputCacheParametersTest.cs

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

@@ -1,3 +1,7 @@
+2006-10-09  Igor Zelmanovich   <[email protected]>
+
+	* DataSourceSelectArgumentsTest.cs: New test.
+
 2006-10-04  Klain Yoni   <[email protected]>
 
 	* PageTest.cs: New test.

+ 78 - 0
mcs/class/System.Web/Test/System.Web.UI/DataSourceSelectArgumentsTest.cs

@@ -0,0 +1,78 @@
+//
+// DataSourceSelectArgumentsTest.cs - unit tests for System.Web.UI.DataSourceSelectArguments
+//
+// Author:
+//	Igor Zelmanovich  <[email protected]>
+//
+// Copyright (C) 2006 Mainsoft, Inc (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.Security.Permissions;
+using System.Web;
+using System.Web.UI;
+
+namespace MonoCasTests.System.Web.UI
+{
+
+	[TestFixture]
+	public class DataSourceSelectArgumentsTest
+	{
+
+		[Test]
+		public void Equals ()
+		{
+			DataSourceSelectArguments arg1 = new DataSourceSelectArguments ();
+			DataSourceSelectArguments arg2 = DataSourceSelectArguments.Empty;
+
+			Assert.IsTrue (arg1.Equals (arg2), "Equals#1");
+			Assert.IsTrue (arg1.GetHashCode () == arg2.GetHashCode (), "GetHashCode#1");
+
+			arg1.SortExpression = "sort";
+			arg1.MaximumRows = 10;
+			arg1.StartRowIndex = 5;
+			arg1.RetrieveTotalRowCount = true;
+			arg1.TotalRowCount = 30;
+
+			Assert.IsFalse (arg1.Equals (arg2), "Equals#2");
+			Assert.IsFalse (arg1.GetHashCode () == arg2.GetHashCode (), "GetHashCode#2");
+
+			arg2.SortExpression = "sort";
+			arg2.MaximumRows = 10;
+			arg2.StartRowIndex = 5;
+
+			Assert.IsFalse (arg1.Equals (arg2), "Equals#3");
+			Assert.IsFalse (arg1.GetHashCode () == arg2.GetHashCode (), "GetHashCode#3");
+
+			arg2.RetrieveTotalRowCount = true;
+			arg2.TotalRowCount = 30;
+
+			Assert.IsTrue (arg1.Equals (arg2), "Equals#4");
+			Assert.IsTrue (arg1.GetHashCode () == arg2.GetHashCode (), "GetHashCode#4");
+		}
+	}
+}
+#endif