Просмотр исходного кода

2009-02-06 Marek Habersack <[email protected]>

	* Style.cs: if CssClass is null, return String.Empty. Fixes bug
	#473303
	Added a range check to the BorderStyle property.

2009-02-06  Marek Habersack  <[email protected]>

	* StyleTest.cs: added tests for CssClass and BorderStyle.
	Renamed the Style_CssClass method to Style_RegisteredCssClass.

svn path=/trunk/mcs/; revision=126051
Marek Habersack 17 лет назад
Родитель
Сommit
883b592eb0

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

@@ -1,3 +1,9 @@
+2009-02-06  Marek Habersack  <[email protected]>
+
+	* Style.cs: if CssClass is null, return String.Empty. Fixes bug
+	#473303
+	Added a range check to the BorderStyle property.
+
 2009-02-05  Marek Habersack  <[email protected]>
 
 	* Login.cs: check the value of DisplayRememberMe when creating

+ 16 - 7
mcs/class/System.Web/System.Web.UI.WebControls/Style.cs

@@ -173,6 +173,9 @@ namespace System.Web.UI.WebControls {
 
 			set 
 			{
+				if (value < BorderStyle.NotSet || value > BorderStyle.Outset)
+					throw new ArgumentOutOfRangeException ("value", "The selected value is not one of the BorderStyle enumeration values.");
+				
 				viewstate["BorderStyle"] = value;
 				SetBit ((int) Styles.BorderStyle);
 			}
@@ -217,12 +220,16 @@ namespace System.Web.UI.WebControls {
 		{
 			get 
 			{
-				if (!CheckBit ((int) Styles.CssClass)) 
+				if (!CheckBit ((int) Styles.CssClass))
 				{
-					return string.Empty;
+					return String.Empty;
 				}
 
-				return (string)viewstate["CssClass"];
+				string ret = viewstate["CssClass"] as string;
+				if (ret == null)
+					return String.Empty;
+
+				return ret;
 			}
 
 			set 
@@ -403,16 +410,18 @@ namespace System.Web.UI.WebControls {
 		{
 #if NET_2_0
 			if (RegisteredCssClass.Length > 0) {
-				if (CssClass.Length > 0)
-					writer.AddAttribute (HtmlTextWriterAttribute.Class, CssClass + " " + RegisteredCssClass);
+				string cssclass = CssClass;
+				if (!String.IsNullOrEmpty (cssclass))
+					writer.AddAttribute (HtmlTextWriterAttribute.Class, cssclass + " " + RegisteredCssClass);
 				else
 					writer.AddAttribute (HtmlTextWriterAttribute.Class, RegisteredCssClass);
 			}
 			else 
 #endif
 			{
-				if (CssClass.Length > 0)
-					writer.AddAttribute (HtmlTextWriterAttribute.Class, CssClass);
+				string cssclass = CssClass;
+				if (cssclass != null && cssclass.Length > 0)
+					writer.AddAttribute (HtmlTextWriterAttribute.Class, cssclass);
 #if NET_2_0
 				CssStyleCollection col = new CssStyleCollection ();
 				FillStyleAttributes (col, owner);

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

@@ -1,3 +1,8 @@
+2009-02-06  Marek Habersack  <[email protected]>
+
+	* StyleTest.cs: added tests for CssClass and BorderStyle. 
+	Renamed the Style_CssClass method to Style_RegisteredCssClass.
+
 2009-02-05  Marek Habersack  <[email protected]>
 
 	* LoginTest.cs: added test for Bug #468359

+ 34 - 2
mcs/class/System.Web/Test/System.Web.UI.WebControls/StyleTest.cs

@@ -367,9 +367,41 @@ namespace MonoTests.System.Web.UI.WebControls
 			Assert.AreEqual (Color.Red, s.BackColor, "Copy1");
 		}
 
-#if NET_2_0
 		[Test]
 		public void Style_CssClass ()
+		{
+			StyleTestClass s = new StyleTestClass ();
+			Assert.AreEqual (String.Empty, s.CssClass, "#A1");
+
+			s.CssClass = "css1";
+			Assert.AreEqual ("css1", s.CssClass, "#A2");
+
+			s.CssClass = String.Empty;
+			Assert.AreEqual (String.Empty, s.CssClass, "#A3");
+
+			s.CssClass = null;
+			Assert.AreEqual (String.Empty, s.CssClass, "#A4");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void Style_BorderStyle_InvalidValue1 ()
+		{
+			StyleTestClass s = new StyleTestClass ();
+			s.BorderStyle = (BorderStyle)(BorderStyle.NotSet - 1);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void Style_BorderStyle_InvalidValue2 ()
+		{
+			StyleTestClass s = new StyleTestClass ();
+			s.BorderStyle = (BorderStyle)(BorderStyle.Outset + 1);
+		}
+		
+#if NET_2_0
+		[Test]
+		public void Style_RegisteredCssClass ()
 		{
 			StyleTestClass s = new StyleTestClass ();
 
@@ -381,7 +413,7 @@ namespace MonoTests.System.Web.UI.WebControls
 			s.BackColor = Color.AliceBlue;
 			Assert.AreEqual ("blah", s.RegisteredCssClass, "Css3");
 		}
-
+		
 		[Test]
 		[Category ("NunitWeb")]
 		public void Style_AddRegisteredCssClassAttribute () {