perform case insensitive compare; return correct key in default case
authorKonstantin Triger <kostat@mono-cvs.ximian.com>
Wed, 18 Jan 2006 08:38:04 +0000 (08:38 -0000)
committerKonstantin Triger <kostat@mono-cvs.ximian.com>
Wed, 18 Jan 2006 08:38:04 +0000 (08:38 -0000)
svn path=/trunk/mcs/; revision=55708

mcs/class/System.Web/System.Web.UI/ChangeLog
mcs/class/System.Web/System.Web.UI/HtmlTextWriter.cs
mcs/class/System.Web/Test/System.Web.UI/ChangeLog
mcs/class/System.Web/Test/System.Web.UI/HtmlTextWriterTest.cs

index dc19b9f8dfc5b7296feeff6e32ee449cc6dd63ef..c46181bd5fce49e2ab141bd9b1e865faed3d2b46 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-18 Konstantin Triger <kostat@mainsoft.com>
+
+       * HtmlTextWriter.cs: perform case insensitive compare;
+         return correct key in default case.
+
 2006-01-11  Chris Toshok  <toshok@ximian.com>
 
        * ClientScriptManager.cs (RegisterClientScriptResource):
index 30cca3967a605c8d4f649c29fe4f39bab9d913e7..9bb5f4ada08d4da7c3b6ece7b63589f031cb43e7 100644 (file)
@@ -204,11 +204,11 @@ namespace System.Web.UI {
                        // faster than a linear search?
                        
                        foreach (HtmlAttribute t in htmlattrs) {
-                               if (t.name == attrName)
+                               if (String.Compare(t.name, attrName, true, CultureInfo.InvariantCulture) == 0)
                                        return t.key;
                        }
 
-                       return 0;               
+                       return (HtmlTextWriterAttribute)(-1);           
                }
 
                [MonoTODO]
@@ -229,11 +229,11 @@ namespace System.Web.UI {
                        // faster than a linear search?
                        
                        foreach (HtmlStyle t in htmlstyles) {
-                               if (t.name == styleName)
+                               if (String.Compare(t.name, styleName, true, CultureInfo.InvariantCulture) == 0)
                                        return t.key;
                        }
 
-                       return 0;                       
+                       return (HtmlTextWriterStyle)(-1);                       
                }
                
                [MonoTODO]
@@ -251,7 +251,7 @@ namespace System.Web.UI {
                        // faster than a linear search?
                        
                        foreach (HtmlTag t in tags) {
-                               if (t.name == tagName)
+                               if (String.Compare(t.name, tagName, true, CultureInfo.InvariantCulture) == 0)
                                        return t.key;
                        }
 
index 0b8bb79b811f31e0cc9b8caf18d03968cf7cf7da..9394061344d7f80c6a254beb79c5fb85859cdb25 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-18 Konstantin Triger <kostat@mainsoft.com>
+
+       * HtmlTextWriterTest.cs: Added tests enduring case insensitivity of
+         attributes and correctness of HtmlTextWriterAttribute
+
 2005-12-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * ControlTest.cs: new tests to prove that Control uses its own
index fce8924f0874397a7b89f5caf1f03ff170cfcfed..5425864f364ac41b7ad2d07ae77051620736c5a5 100644 (file)
@@ -352,5 +352,34 @@ namespace MonoTests.System.Web.UI {
 
                        Assert.AreEqual ("<div>\n\n</div>", sw.ToString ());
                }
+               
+               class MyHttpTextWriter : HtmlTextWriter {
+                       int i = 0;
+                       public MyHttpTextWriter(TextWriter tw) : base(tw) {
+       
+                       }
+                       protected override bool OnAttributeRender(string name, string value, HtmlTextWriterAttribute key) {
+                               switch (i++) {
+                               case 0:
+                               case 1: Assert.AreEqual(HtmlTextWriterAttribute.Border, key);
+                                       break;
+                               case 2: Assert.AreEqual((HtmlTextWriterAttribute)(-1), key);
+                                       break;
+                               }
+                               return base.OnAttributeRender (name, value, key);
+                       }
+       
+               }
+               
+               [Test]
+               public void TestOnAttributeRender() {
+                       MyHttpTextWriter myw = new MyHttpTextWriter (sw);
+                       
+                       myw.AddAttribute ("border", "0");
+                       myw.AddAttribute ("BoRDeR", "0");
+                       myw.AddAttribute ("error", "0");
+                       myw.RenderBeginTag ("div");
+                       myw.RenderEndTag ();
+               }
        }
 }