New tests for ListControl 2.0 + resource ListControlPage.aspx
authorYoni Klain <yonik@mono-cvs.ximian.com>
Wed, 29 Nov 2006 12:15:58 +0000 (12:15 -0000)
committerYoni Klain <yonik@mono-cvs.ximian.com>
Wed, 29 Nov 2006 12:15:58 +0000 (12:15 -0000)
svn path=/trunk/mcs/; revision=68659

mcs/class/System.Web/ChangeLog
mcs/class/System.Web/Makefile
mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/Test/System.Web.UI.WebControls/ListControlTest.cs
mcs/class/System.Web/Test/mainsoft/NunitWebResources/ListControlPage.aspx [new file with mode: 0644]

index 328a3fa5a8934ba007e523e6d1e7e43288a22745..e63a8209c21e53885c3166427c2ce1d89d9a2432 100644 (file)
@@ -1,3 +1,7 @@
+2006-11-29  Yoni Klain   <yonik@mainsoft.com>
+
+       * MakeFile added new resources ListControlPage.aspx for ListControlTest.cs
+
 2006-11-28  Miguel de Icaza  <miguel@novell.com>
 
        * Rationalize the user of MonoTODOs.  
index acbd273f68f2fde578323c1302e7f8854f10c5f9..d3913ea01678c6778179ae110c2ed99c196a8092 100644 (file)
@@ -128,6 +128,7 @@ TEST_RESOURCE_FILES = \
        Test/mainsoft/NunitWebResources/PageCultureTest.aspx \
        Test/mainsoft/NunitWebResources/adapters.browser \
        Test/mainsoft/NunitWebResources/NoEventValidation.aspx \
+       Test/mainsoft/NunitWebResources/ListControlPage.aspx \
        Test/mainsoft/MainsoftWebTest/nunitweb_config.xml 
 
 NUNIT_RESOURCE_FILES = $(TEST_RESOURCE_FILES)
index 7d088afbcfb18e3791e06de97cd8c0ba0dd32b3d..07b5d9cba0f487169beec301eeed8e1279a939fe 100644 (file)
@@ -1,3 +1,7 @@
+2006-11-27  Yoni Klain         <yonik@mainsoft.com>
+
+       * ListControlTest.cs: added new test for 2.0 
+
 2006-11-29  Vladimir Krasnov  <vladimirk@mainsoft.com>
 
        * SqlDataSourceDerbyTest.cs: fixed connection on db init
index 5ebddaf1dc2eb18046450485612e0d356cf84c58..3be4d7cd4022baf5e37b52a226f8824fb4bdd45f 100644 (file)
@@ -36,6 +36,8 @@ using System.Globalization;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;
+using MonoTests.stand_alone.WebHarness;
+using MonoTests.SystemWeb.Framework;
 
 namespace MonoTests.System.Web.UI.WebControls {
 
@@ -79,14 +81,109 @@ namespace MonoTests.System.Web.UI.WebControls {
                {
                        return TagKey;
                }
+
+               public new void OnSelectedIndexChanged (EventArgs e)
+               {
+                       base.OnSelectedIndexChanged (e);
+               }
+
+               public new void OnTextChanged (EventArgs e)
+               {
+                       base.OnTextChanged (e);
+               }
+
+               public new void VerifyMultiSelect ()
+               {
+                       base.VerifyMultiSelect ();
+               }
+
 #endif
        }
 
        [TestFixture]
-       public class ListControlTest {
+       public class ListControlTest
+       {
+               #region help_class_for_addattributetorender
+               class Poker : ListControl
+               {
+                       public void TrackState ()
+                       {
+                               TrackViewState ();
+                       }
+
+                       public object SaveState ()
+                       {
+                               return SaveViewState ();
+                       }
+
+                       public void LoadState (object state)
+                       {
+                               LoadViewState (state);
+                       }
 
+                       public object ViewStateValue (string name)
+                       {
+                               return ViewState[name];
+                       }
+
+
+                       public string Render ()
+                       {
+                               StringWriter sw = new StringWriter ();
+                               sw.NewLine = "\n";
+                               HtmlTextWriter writer = new HtmlTextWriter (sw);
+                               base.Render (writer);
+                               return writer.InnerWriter.ToString ();
+                       }
+#if NET_2_0
+                       ArrayList Databound ()
+                       {
+                               ArrayList list = new ArrayList ();
+                               list.Add (1);
+                               list.Add (2);
+                               list.Add (3);
+                               return list;
+                       }
+
+                       public HtmlTextWriterTag GetTagKey ()
+                       {
+                               return TagKey;
+                       }
+
+                       protected override void AddAttributesToRender (HtmlTextWriter writer)
+                       {
+                               writer.AddAttribute (HtmlTextWriterAttribute.Type, "MyType");
+                               writer.AddAttribute (HtmlTextWriterAttribute.Name, "MyName");
+                               writer.AddAttribute (HtmlTextWriterAttribute.Value, "MyValue");
+                               base.AddAttributesToRender (writer);
+                       }
+
+                       protected override void PerformDataBinding (IEnumerable dataSource)
+                       {
+                               base.PerformDataBinding (Databound());
+                       }
+
+                       protected override void PerformSelect ()
+                       {
+                               base.PerformSelect ();
+                               SelectedIndex = 0;
+                       }
+
+                       public new void SetPostDataSelection(int selectedItem)
+                       {
+                               base.SetPostDataSelection(selectedItem);
+                       }
+#endif
+               }
+               #endregion
                private Hashtable changed = new Hashtable ();
 
+               [TestFixtureSetUp]
+               public void SetUp ()
+               {
+                       WebTest.CopyResource (GetType (), "ListControlPage.aspx", "ListControlPage.aspx");
+               }
+
                [Test]
                public void DefaultProperties ()
                {
@@ -106,8 +203,212 @@ namespace MonoTests.System.Web.UI.WebControls {
                        Assert.IsFalse (p.AppendDataBoundItems, "A11");
                        Assert.AreEqual (p.Text, "", "A12");
                        Assert.AreEqual (p.GetTagKey(), HtmlTextWriterTag.Select, "A13");
+                       Assert.AreEqual (false, p.AppendDataBoundItems, "A14");
+                       Assert.AreEqual (false, p.CausesValidation, "A15");
 #endif
                }
+#if NET_2_0
+
+               [Test]
+               public void AddAttributesToRender ()
+               {
+                       Poker p = new Poker ();
+                       ListItem foo = new ListItem ("foo");
+                       ListItem bar = new ListItem ("bar");
+                       p.Items.Add (foo);
+                       p.Items.Add (bar);
+#region orig
+                       string orig = "<select type=\"MyType\" name=\"MyName\" value=\"MyValue\"><option value=\"foo\">foo</option><option value=\"bar\">bar</option></select>";
+#endregion
+                       string html =  p.Render ();
+                       HtmlDiff.AssertAreEqual(orig,html,"AddAttributesToRender failed");
+               }
+
+               [Test]
+               public void AppendDataBoundItems ()
+               {
+                       ListControlPoker p = new ListControlPoker ();
+                       ListItem foo = new ListItem ("foo");
+                       ListItem bar = new ListItem ("bar");
+                       p.Items.Add (foo);
+                       p.Items.Add (bar);
+                       Assert.AreEqual (2, p.Items.Count, "Before databound");
+                       p.AppendDataBoundItems = true; // Not to clear list before databind
+                       p.DataSource = Databound ();
+                       p.DataBind ();
+                       Assert.AreEqual (5, p.Items.Count, "After databound");
+                       p.AppendDataBoundItems = false; // To clear list before databind
+                       p.DataBind ();
+                       Assert.AreEqual (3, p.Items.Count, "Clear list and databound");
+               }
+
+               ArrayList Databound ()
+               {
+                       ArrayList list = new ArrayList ();
+                       list.Add (1);
+                       list.Add (2);
+                       list.Add (3);
+                       return list;
+               }
+
+               [Test]
+               [Category ("NunitWeb")]
+               public void CausesValidation_ValidationGroup ()
+               {
+                       WebTest t = new WebTest ("ListControlPage.aspx");
+                       string str = t.Run ();
+                       FormRequest fr = new FormRequest (t.Response, "form1");
+                       fr.Controls.Add ("__EVENTTARGET");
+                       fr.Controls.Add ("__EVENTARGUMENT");
+                       fr.Controls.Add ("ListBox1");
+                       fr.Controls["__EVENTTARGET"].Value = "ListBox1";
+                       fr.Controls["__EVENTARGUMENT"].Value = "";
+                       fr.Controls["ListBox1"].Value = "2";
+                       t.Request = fr;
+                       string html = t.Run ();
+
+                       if (html.IndexOf ("Validate_validation_group") == -1)
+                               Assert.Fail ("Validate not created");
+                       if (html.IndexOf ("MyValidationGroup") == -1)
+                               Assert.Fail ("Wrong validation group");
+               }
+
+               [Test]
+               public void OnTextChanged ()
+               {
+                       ListControlPoker p = new ListControlPoker ();
+                       p.TextChanged += new EventHandler (p_TextChanged);
+                       Assert.AreEqual (false, eventTextChanged, "Before");
+                       p.OnTextChanged (new EventArgs ());
+                       Assert.AreEqual (true, eventTextChanged, "After");
+               }
+
+               bool eventTextChanged;
+               void p_TextChanged (object sender, EventArgs e)
+               {
+                       eventTextChanged = true;
+               }
+
+               [Test]
+               public void PerformDataBind_PerformSelect ()
+               {
+                       Poker p = new Poker ();
+                       p.DataBind ();
+                       string html = p.Render ();
+#region #1
+                       string orig = @"<select type=""MyType"" name=""MyName"" value=""MyValue"">
+                                       <option selected=""selected"" value=""1"">1</option>
+                                       <option value=""2"">2</option>
+                                       <option value=""3"">3</option>
+                                       </select>";
+#endregion
+                       HtmlDiff.AssertAreEqual (orig, html, "PerformDataBind");
+               }
+
+               [Test]
+               [Category("NotWorking")] //Not implemented
+               public void SetPostDataSelection ()
+               {
+                       Poker p = new Poker ();
+                       ListItem foo = new ListItem ("foo");
+                       ListItem bar = new ListItem ("bar");
+                       p.Items.Add (foo);
+                       p.Items.Add (bar);
+                       p.SetPostDataSelection (1);
+                       Assert.AreEqual (1, p.SelectedIndex, "SetPostDataSelection");
+               }
+
+               [Test]
+               public void Text ()
+               {
+                       Poker p = new Poker ();
+                       ListItem foo = new ListItem ("foo");
+                       ListItem bar = new ListItem ("bar");
+                       p.Items.Add (foo);
+                       p.Items.Add (bar);
+                       Assert.AreEqual (string.Empty, p.Text, "Text#1");
+                       p.SelectedIndex = 1;
+                       Assert.AreEqual ("bar", p.Text, "Text#2");
+               }
+
+               #region HelpListForMultiple
+               class PokerL : ListBox
+               {
+                       public PokerL ()
+                       {
+                               InitializeMyListBox ();
+                       }
+                       private void InitializeMyListBox ()
+                       {
+                               // Add items to the ListBox.
+                               Items.Add ("A");
+                               Items.Add ("C");
+                               Items.Add ("E");
+                               Items.Add ("F");
+                               Items.Add ("G");
+                               Items.Add ("D");
+                               Items.Add ("B");
+
+                               // Set the SelectionMode to select multiple items.
+                               SelectionMode = ListSelectionMode.Multiple;
+
+                               Items[0].Selected = true;
+                               Items[2].Selected = true;
+                       }
+
+                       public void TrackState ()
+                       {
+                               TrackViewState ();
+                       }
+
+                       public object SaveState ()
+                       {
+                               return SaveViewState ();
+                       }
+
+                       public void LoadState (object state)
+                       {
+                               LoadViewState (state);
+                       }
+
+                       public object ViewStateValue (string name)
+                       {
+                               return ViewState[name];
+                       }
+
+                       public string Render ()
+                       {
+                               StringWriter sw = new StringWriter ();
+                               sw.NewLine = "\n";
+                               HtmlTextWriter writer = new HtmlTextWriter (sw);
+                               base.Render (writer);
+                               return writer.InnerWriter.ToString ();
+                       }
+               }
+               #endregion
+               [Test]
+               public void Multiple ()
+               {
+                       PokerL p = new PokerL ();
+                       Assert.AreEqual (true, p.Items[0].Selected, "MultipleSelect#1");
+                       Assert.AreEqual (true, p.Items[2].Selected, "MultipleSelect#2");
+                       string html = p.Render ();
+                       #region origin
+                       string orig = @"<select size=""4"" multiple=""multiple"">
+                                       <option selected=""selected"" value=""A"">A</option>
+                                       <option value=""C"">C</option>
+                                       <option selected=""selected"" value=""E"">E</option>
+                                       <option value=""F"">F</option>
+                                       <option value=""G"">G</option>
+                                       <option value=""D"">D</option>
+                                       <option value=""B"">B</option>
+                                       </select>";
+                       #endregion
+                       HtmlDiff.AssertAreEqual (orig, html, "MultipleSelect#3");
+               }
+#endif
+
+
 
                [Test]
                public void CleanProperties ()
@@ -568,6 +869,23 @@ namespace MonoTests.System.Web.UI.WebControls {
             Assert.AreEqual(null, p.SelectedItem, "SelectedItem");
             Assert.AreEqual(-1, p.SelectedIndex, "SelectedIndex");
                }
+#if NET_2_0
+               [Test]
+               [Category ("NotWorking")]
+               [ExpectedException (typeof (HttpException))]
+               public void VerifyMultiSelect_Exception ()
+               {
+                       ListControlPoker p = new ListControlPoker ();
+                       p.VerifyMultiSelect ();
+               }
+
+               [TestFixtureTearDown]
+               public void TearDown ()
+               {
+                       WebTest.Unload ();
+               }
+#endif
+
        }
 }
 
diff --git a/mcs/class/System.Web/Test/mainsoft/NunitWebResources/ListControlPage.aspx b/mcs/class/System.Web/Test/mainsoft/NunitWebResources/ListControlPage.aspx
new file mode 100644 (file)
index 0000000..44127e0
--- /dev/null
@@ -0,0 +1,32 @@
+<%@ Page Language="C#" AutoEventWireup="true"   %>\r
+<%@ Import Namespace="MonoTests.SystemWeb.Framework" %>\r
+\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+\r
+<html xmlns="http://www.w3.org/1999/xhtml" >\r
+<head id="Head1" runat="server">\r
+    <title>Untitled Page</title>\r
+    <script runat="server">\r
+        public override void Validate (string validationGroup)\r
+        {\r
+            Response.Write ("Validate_validation_group" + " " + validationGroup); \r
+        }\r
+\r
+        public override void Validate ()\r
+        {\r
+            Response.Write ("Validate");\r
+        }\r
+</script>\r
+\r
+</head>\r
+<body>\r
+    <form id="form1" runat="server">\r
+    <div>\r
+        <asp:ListBox ID="ListBox1" runat="server" CausesValidation="true" ValidationGroup="MyValidationGroup" AutoPostBack="true">\r
+        <asp:ListItem>1</asp:ListItem>\r
+        <asp:ListItem>2</asp:ListItem>\r
+        </asp:ListBox>\r
+    </div>\r
+    </form>\r
+</body>\r
+</html>\r