2007-02-20 <yonik@mainsoft.com>
authorYoni Klain <yonik@mono-cvs.ximian.com>
Tue, 20 Feb 2007 08:49:52 +0000 (08:49 -0000)
committerYoni Klain <yonik@mono-cvs.ximian.com>
Tue, 20 Feb 2007 08:49:52 +0000 (08:49 -0000)
Add events tests

svn path=/trunk/mcs/; revision=73148

mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web/Test/System.Web.UI.WebControls/GridViewTest.cs

index 53153bd379410058fc0b18683dad628a387087de..419c11eb64af71facabed0c2205ab85fb2ab84e0 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-20  yonik <yonik@mainsoft.com>
+
+     * GridViewTest.cs: Add new tests for PostbackEvents 
+
 2007-02-19  yonik <yonik@mainsoft.com>
 
      * ChangePasswordTest.cs,BulletedListTest.cs: Add new tests for PostbackEvents 
index a29b7d5702188f5b5408927b6a03db21728619e3..d4b2af141f053d8abf45674d08e1fd1c596e7a70 100644 (file)
@@ -303,7 +303,11 @@ namespace MonoTests.System.Web.UI.WebControls
                {
                        RequiresDataBinding = value;
                }
-       }
+       }\r
+\r
+       \r
+\r
+       
 
        [Serializable]
        [TestFixture]
@@ -383,8 +387,8 @@ namespace MonoTests.System.Web.UI.WebControls
                                get { return _name; }
                                set { _name = value; }
                        }
-               }
-
+               }\r
+\r
                public const string BOOLFIELD = "bool";
                public const string STRINGFIELD = "str";
                ArrayList myds = new ArrayList ();
@@ -392,18 +396,16 @@ namespace MonoTests.System.Web.UI.WebControls
 
                [TestFixtureSetUp]
                public void GridViewInit ()
-               {
+               {\r
+                       
                        myds.Add ("Norway");
                        myds.Add ("Sweden");
                        myds.Add ("France");
                        myds.Add ("Italy");
                        myds.Add ("Israel");
                        myds.Add ("Russia");
-#if VISUAL_STUDIO
-                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.GridViewUpdate.aspx", "GridViewUpdate.aspx");
-#else
-                       WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");
-#endif
+                       WebTest.CopyResource (GetType (), "GridViewUpdate.aspx", "GridViewUpdate.aspx");\r
+                       WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
                }
 
                [Test]
@@ -2164,8 +2166,8 @@ namespace MonoTests.System.Web.UI.WebControls
                        t.Request = fr;
                        pageHTML = t.Run ();
                        Assert.AreEqual (0, t.UserData , "ObjectDataSource after delete from grid");
-               }
-
+               }\r
+\r
                public static void GridView_checkrows (Page p)
                {
                        GridView grid = p.FindControl ("Grid") as GridView;
@@ -2271,7 +2273,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        GridView grid = new GridView ();
                        ObjectDataSource ds = new ObjectDataSource ();
 
-                       ds.ID = "ObjectDataSource2";
+                       ds.ID = "ObjectDataSource2";\r
                        ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";
                        ds.SelectMethod = "Select";
                        ds.DeleteMethod = "Delete";
@@ -2357,35 +2359,16 @@ namespace MonoTests.System.Web.UI.WebControls
                        }
                }
 
-               [Test]
-               [Category ("NunitWeb")]
-               public void GridView_PostBackSelect ()
-               {
-                       WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback));
-                       string pageHTML = t.Run ();
-                       Assert.AreEqual (-1, pageHTML.IndexOf ("SelectSuccess"), "BeforeSelect");
-                       FormRequest fr = new FormRequest (t.Response, "form1");
-                       fr.Controls.Add ("__EVENTTARGET");
-                       fr.Controls.Add ("__EVENTARGUMENT");
-                       fr.Controls["__EVENTTARGET"].Value = "mygrid";
-                       fr.Controls["__EVENTARGUMENT"].Value = "Select$0";
-                       t.Request = fr;
-                       t.Invoker = PageInvoker.CreateOnLoad (GridView_postback);
-                       pageHTML = t.Run ();
-                       if (pageHTML.IndexOf ("SelectSuccess") < 0) {
-                               Assert.Fail ("SelectFail");
-                       }
-               }
-
                public void GridView_postback (Page p)
                {
+
                        PokerGridView b = new PokerGridView ();
                        b.ID = "mygrid";
                        b.PageIndexChanging += new GridViewPageEventHandler (b_PageIndexChanging);
                        b.Sorting += new GridViewSortEventHandler (b_Sorting);
                        b.RowDeleting += new GridViewDeleteEventHandler (b_RowDeleting);
                        b.RowEditing += new GridViewEditEventHandler (b_RowEditing);
-                       b.SelectedIndexChanging += new GridViewSelectEventHandler (b_SelectedIndexChanging);
+                       
                        ArrayList myds = new ArrayList ();
                        myds.Add ("Norway");
                        myds.Add ("Sweden");
@@ -2403,8 +2386,10 @@ namespace MonoTests.System.Web.UI.WebControls
 
                        b.DataSource = myds;
                        b.DataBind ();
-               }
-
+               }\r
+\r
+\r
+\r
                public void b_RowEditing (object o, GridViewEditEventArgs e)
                {
                        ((GridView) o).Page.Controls.Add (new LiteralControl ("EditSuccess"));
@@ -2432,8 +2417,436 @@ namespace MonoTests.System.Web.UI.WebControls
                {
                        ((GridView) o).Page.Controls.Add (new LiteralControl ("SelectSuccess"));
                }
-               
-               
+
+
+               //////// Post back events /////////////\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               public void GridView_PostBackRowEvents ()\r
+               {\r
+                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
+                       t.UserData = new Hashtable ();\r
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));\r
+                       string html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert(t,"RowCreated");\r
+                       CustomEventAssert (t,"RowDataBound");\r
+                       \r
+                       // Remove grid to edit mode (Edit button pressed)                       \r
+                       FormRequest fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";\r
+                       t.Request = fr;\r
+                       t.UserData = new Hashtable ();\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t,"RowCreated");\r
+                       CustomEventAssert (t,"RowCommand");\r
+                       CustomEventAssert (t,"RowEditing");\r
+                       CustomEventAssert (t,"RowDataBound");\r
+\r
+                       // Cancel button pressed\r
+                       fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Cancel$0";\r
+                       t.Request = fr;\r
+                       t.UserData = new Hashtable ();\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t,"RowCreated");\r
+                       CustomEventAssert (t,"RowCommand");\r
+                       CustomEventAssert (t,"RowCancelingEdit");\r
+                       CustomEventAssert (t,"RowDataBound");\r
+               }\r
+\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               [Category ("NotWorking")]\r
+               public void GridView_PostBackUpdateEvents ()\r
+               {\r
+                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
+                       t.UserData = new Hashtable ();\r
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackRowEvents));\r
+                       string html = t.Run ();\r
+\r
+                       // Remove grid to edit mode (Edit button pressed)                       \r
+                       FormRequest fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";\r
+                       t.Request = fr;\r
+                       html = t.Run ();\r
+\r
+                       // Update button pressed\r
+                       fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls.Add ("Grid$ctl02$ctl02");\r
+                       fr.Controls.Add ("Grid$ctl02$ctl03");\r
+                       fr.Controls.Add ("Grid$ctl02$ctl04");\r
+\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid$ctl02$ctl00";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "";\r
+                       fr.Controls["Grid$ctl02$ctl02"].Value = "1001";\r
+                       fr.Controls["Grid$ctl02$ctl03"].Value = "Mahesh";\r
+                       fr.Controls["Grid$ctl02$ctl04"].Value = "Chand";\r
+\r
+                       t.Request = fr;\r
+                       t.UserData = new Hashtable ();\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t, "RowCreated");\r
+                       CustomEventAssert (t, "RowCommand");\r
+                       CustomEventAssert (t, "RowUpdating");\r
+                       CustomEventAssert (t, "RowUpdated");\r
+                       CustomEventAssert (t, "RowDataBound");\r
+               }\r
+\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               public void GridView_PostBackPagingEvents ()\r
+               {\r
+                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
+                       t.UserData = new Hashtable ();\r
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackPagingEvents));\r
+                       string html = t.Run ();\r
+\r
+                       // Move to page 2\r
+                       FormRequest fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Page$2";\r
+                       t.Request = fr;\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t, "PageIndexChanging");\r
+                       CustomEventAssert (t, "PageIndexChanged");\r
+               }\r
+\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               public void GridView_PostBackSortingEvents ()\r
+               {\r
+                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
+                       t.UserData = new Hashtable ();\r
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSortingEvents));\r
+                       string html = t.Run ();\r
+\r
+                       // Sort by ID\r
+                       FormRequest fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Sort$ID";\r
+                       t.Request = fr;\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t, "Sorting");\r
+                       CustomEventAssert (t, "Sorted");\r
+               }\r
+\r
+               [Test]\r
+               [Category ("NunitWeb")]\r
+               public void GridView_PostBackSelectingEvents ()\r
+               {\r
+                       WebTest t = new WebTest ("NoEventValidation.aspx");\r
+                       t.UserData = new Hashtable ();\r
+                       t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackSelectingEvents));\r
+                       string html = t.Run ();\r
+\r
+                       // Select\r
+                       FormRequest fr = new FormRequest (t.Response, "form1");\r
+                       fr.Controls.Add ("__EVENTTARGET");\r
+                       fr.Controls.Add ("__EVENTARGUMENT");\r
+                       fr.Controls["__EVENTTARGET"].Value = "Grid";\r
+                       fr.Controls["__EVENTARGUMENT"].Value = "Select$0";\r
+                       t.Request = fr;\r
+                       html = t.Run ();\r
+\r
+                       // Check if events done\r
+                       CustomEventAssert (t, "SelectedIndexChanging");\r
+                       CustomEventAssert (t, "SelectedIndexChanged");\r
+               }\r
+\r
+               #region PostBackEvents_helpers\r
+               \r
+               private void CustomEventAssert (WebTest t, string c)\r
+               {\r
+                       Hashtable local = t.UserData as Hashtable;\r
+                       if (local == null)\r
+                               Assert.Fail ("User data not created");\r
+                       if(!local.ContainsValue(c))\r
+                               Assert.Fail (c + " not fired!"); \r
+               }\r
+\r
+               public static void _PostBackSelectingEvents (Page p)\r
+               {\r
+                       if (!p.IsPostBack)\r
+                               DataObjects.Reset ();\r
+\r
+                       GridView grid = new GridView ();\r
+                       ObjectDataSource ds = new ObjectDataSource ();\r
+                       grid.SelectedIndexChanged += new EventHandler (grid_SelectedIndexChanged);\r
+                       grid.SelectedIndexChanging += new GridViewSelectEventHandler (grid_SelectedIndexChanging);\r
+                       ds.ID = "ObjectDataSource2";\r
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
+                       ds.SelectMethod = "Select";\r
+                       ds.DeleteMethod = "Delete";\r
+                       ds.InsertMethod = "Insert";\r
+                       ds.UpdateMethod = "Update";\r
+                       grid.ID = "Grid";\r
+                       grid.AutoGenerateColumns = true;\r
+                       grid.AutoGenerateSelectButton = true;\r
+                       grid.DataSourceID = "ObjectDataSource2";\r
+                       p.Form.Controls.Add (ds);\r
+                       p.Form.Controls.Add (grid);\r
+               }\r
+\r
+               public static void _PostBackSortingEvents (Page p)\r
+               {\r
+                       if (!p.IsPostBack)\r
+                               DataObjects.Reset ();\r
+\r
+                       GridView grid = new GridView ();\r
+                       ObjectDataSource ds = new ObjectDataSource ();\r
+                       ds.ID = "ObjectDataSource2";\r
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
+                       ds.SelectMethod = "Select";\r
+                       ds.DeleteMethod = "Delete";\r
+                       ds.InsertMethod = "Insert";\r
+                       ds.UpdateMethod = "Update";\r
+\r
+                       grid.Sorted += new EventHandler (grid_Sorted);\r
+                       grid.Sorting += new GridViewSortEventHandler (grid_Sorting);\r
+                       grid.AllowSorting = true;\r
+                       grid.ID = "Grid";\r
+                       grid.AutoGenerateColumns = true;\r
+                       \r
+                       grid.DataSourceID = "ObjectDataSource2";\r
+                       p.Form.Controls.Add (ds);\r
+                       p.Form.Controls.Add (grid);\r
+               }\r
+\r
+               \r
+               public static void _PostBackPagingEvents (Page p)\r
+               {\r
+                       if (!p.IsPostBack)\r
+                               DataObjects.Reset ();\r
+\r
+                       GridView grid = new GridView ();\r
+                       ObjectDataSource ds = new ObjectDataSource ();\r
+                       ds.ID = "ObjectDataSource2";\r
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObjects";\r
+                       ds.SelectMethod = "Select";\r
+                       ds.DeleteMethod = "Delete";\r
+                       ds.InsertMethod = "Insert";\r
+                       ds.UpdateMethod = "Update";\r
+\r
+                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);\r
+                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);\r
+                       grid.AllowPaging = true;\r
+                       grid.ID = "Grid";\r
+                       grid.AutoGenerateColumns = false;\r
+                       grid.PageSize = 1;\r
+\r
+                       BoundField field = new BoundField ();\r
+                       field.DataField = "ID";\r
+                       grid.Columns.Add (field);\r
+\r
+                       field = new BoundField ();\r
+                       field.DataField = "FName";\r
+                       grid.Columns.Add (field);\r
+\r
+                       field = new BoundField ();\r
+                       field.DataField = "LName";\r
+                       grid.Columns.Add (field);\r
+\r
+                       grid.DataSourceID = "ObjectDataSource2";\r
+                       p.Form.Controls.Add (ds);\r
+                       p.Form.Controls.Add (grid);\r
+               }\r
+\r
+               public static void _PostBackRowEvents (Page p)\r
+               {\r
+                       if (!p.IsPostBack)\r
+                               DataObject.Reset ();\r
+\r
+                       GridView grid = new GridView ();\r
+                       ObjectDataSource ds = new ObjectDataSource ();\r
+                       ds.ID = "ObjectDataSource2";\r
+                       ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataObject";\r
+                       ds.SelectMethod = "Select";\r
+                       ds.DeleteMethod = "Delete";\r
+                       ds.InsertMethod = "Insert";\r
+                       ds.UpdateMethod = "Update";\r
+\r
+\r
+                       grid.RowCancelingEdit += new GridViewCancelEditEventHandler (grid_RowCancelingEdit);\r
+                       grid.RowCommand += new GridViewCommandEventHandler (grid_RowCommand);\r
+                       grid.RowCreated += new GridViewRowEventHandler (grid_RowCreated);\r
+                       grid.RowDataBound += new GridViewRowEventHandler (grid_RowDataBound);\r
+                       grid.RowEditing += new GridViewEditEventHandler (grid__RowEditing);\r
+                       grid.RowUpdating += new GridViewUpdateEventHandler (grid_RowUpdating);\r
+                       grid.RowUpdated += new GridViewUpdatedEventHandler (grid_RowUpdated);\r
+                       grid.PageIndexChanged += new EventHandler (grid_PageIndexChanged);\r
+                       grid.PageIndexChanging += new GridViewPageEventHandler (grid_PageIndexChanging);\r
+\r
+                       Parameter p1 = new Parameter ("ID", TypeCode.String);\r
+                       Parameter p2 = new Parameter ("FName", TypeCode.String);\r
+                       Parameter p3 = new Parameter ("LName", TypeCode.String);\r
+\r
+                       ds.UpdateParameters.Add (p1);\r
+                       ds.UpdateParameters.Add (p2);\r
+                       ds.UpdateParameters.Add (p3);\r
+\r
+                       grid.ID = "Grid";\r
+                       grid.AutoGenerateEditButton = true;\r
+\r
+                       grid.AutoGenerateColumns = false;\r
+\r
+                       BoundField field = new BoundField ();\r
+                       field.DataField = "ID";\r
+                       grid.Columns.Add (field);\r
+\r
+                       field = new BoundField ();\r
+                       field.DataField = "FName";\r
+                       grid.Columns.Add (field);\r
+\r
+                       field = new BoundField ();\r
+                       field.DataField = "LName";\r
+                       grid.Columns.Add (field);\r
+\r
+                       grid.DataSourceID = "ObjectDataSource2";\r
+                       p.Form.Controls.Add (ds);\r
+                       p.Form.Controls.Add (grid);\r
+               }\r
+\r
+               static void grid_SelectedIndexChanging (object sender, GridViewSelectEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "SelectedIndexChanging");\r
+                       }\r
+               }\r
+\r
+               static void grid_SelectedIndexChanged (object sender, EventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "SelectedIndexChanged");\r
+                       }\r
+               }\r
+\r
+               static void grid_PageIndexChanging (object sender, GridViewPageEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "PageIndexChanging");\r
+                       }\r
+               }\r
+\r
+               static void grid_PageIndexChanged (object sender, EventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "PageIndexChanged");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowUpdated (object sender, GridViewUpdatedEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowUpdated");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowUpdating (object sender, GridViewUpdateEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowUpdating");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowEditing (object sender, GridViewEditEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowEditing");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowDataBound (object sender, GridViewRowEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowDataBound");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowCreated (object sender, GridViewRowEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowCreated");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowCommand (object sender, GridViewCommandEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowCommand");\r
+                       }\r
+               }\r
+\r
+               public static void grid_RowCancelingEdit (object sender, GridViewCancelEditEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowCancelingEdit");\r
+                       }\r
+               }\r
+\r
+               public static void grid__RowEditing (object sender, GridViewEditEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "RowEditing");\r
+                       }\r
+               }\r
+\r
+               static void grid_Sorting (object sender, GridViewSortEventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "Sorting");\r
+                       }\r
+               }\r
+\r
+               static void grid_Sorted (object sender, EventArgs e)\r
+               {\r
+                       Hashtable local = WebTest.CurrentTest.UserData as Hashtable;\r
+                       if (local != null) {\r
+                               local.Add (local.Count, "Sorted");\r
+                       }\r
+               }\r
+\r
+               #endregion\r
+\r
                /// <summary>
                /// All possible exceptions what can be thrown 
                /// </summary>
@@ -2712,6 +3125,103 @@ namespace MonoTests.System.Web.UI.WebControls
                        return aTable;
                }
        }
+\r
+       public class DataObjects\r
+       {\r
+               public static DataTable ds = CreateDataTable ();\r
+               public static DataTable Select ()\r
+               {\r
+                       return ds;\r
+               }\r
+\r
+               public static void Reset ()\r
+               {\r
+                       ds = CreateDataTable ();\r
+               }\r
+\r
+               public static DataTable Delete (string ID, string FName, string LName)\r
+               {\r
+                       DataRow dr = ds.Rows.Find (ID);\r
+                       if (dr != null) {\r
+                               ds.Rows.Remove (dr);\r
+                       }\r
+                       return ds;\r
+               }\r
+\r
+               public static DataTable Insert (string ID, string FName, string LName)\r
+               {\r
+                       DataRow dr = ds.NewRow ();\r
+                       dr["ID"] = ID;\r
+                       dr["FName"] = FName;\r
+                       dr["LName"] = LName;\r
+                       ds.Rows.Add (dr);\r
+                       return ds;\r
+               }\r
+\r
+               public static DataTable Update (string ID, string FName, string LName)\r
+               {\r
+                       foreach (DataRow row in ds.Rows) {\r
+                               if (row["ID"].ToString () == ID) {\r
+                                       row["FName"] = FName;\r
+                                       row["LName"] = LName;\r
+                               }\r
+                       }\r
+                       return ds;\r
+               }\r
+\r
+               public static DataTable CreateDataTable ()\r
+               {\r
+                       DataTable aTable = new DataTable ("A");\r
+                       DataColumn dtCol;\r
+                       DataRow dtRow;\r
+\r
+                       // Create ID column and add to the DataTable.\r
+                       dtCol = new DataColumn ();\r
+                       dtCol.DataType = Type.GetType ("System.Int32");\r
+                       dtCol.ColumnName = "ID";\r
+                       dtCol.AutoIncrement = true;\r
+                       dtCol.Caption = "ID";\r
+                       dtCol.ReadOnly = true;\r
+                       dtCol.Unique = true;\r
+                       aTable.Columns.Add (dtCol);\r
+\r
+                       // Create Name column and add to the table\r
+                       dtCol = new DataColumn ();\r
+                       dtCol.DataType = Type.GetType ("System.String");\r
+                       dtCol.ColumnName = "FName";\r
+                       dtCol.AutoIncrement = false;\r
+                       dtCol.Caption = "First Name";\r
+                       dtCol.ReadOnly = false;\r
+                       dtCol.Unique = false;\r
+                       aTable.Columns.Add (dtCol);\r
+\r
+                       // Create Last Name column and add to the table.\r
+                       dtCol = new DataColumn ();\r
+                       dtCol.DataType = Type.GetType ("System.String");\r
+                       dtCol.ColumnName = "LName";\r
+                       dtCol.AutoIncrement = false;\r
+                       dtCol.Caption = "Last Name";\r
+                       dtCol.ReadOnly = false;\r
+                       dtCol.Unique = false;\r
+                       aTable.Columns.Add (dtCol);\r
+\r
+                       // Create three rows to the table\r
+                       dtRow = aTable.NewRow ();\r
+                       dtRow["ID"] = 1001;\r
+                       dtRow["FName"] = "Mahesh";\r
+                       dtRow["LName"] = "Chand";\r
+                       aTable.Rows.Add (dtRow);\r
+\r
+                       dtRow = aTable.NewRow ();\r
+                       dtRow["ID"] = 1002;\r
+                       dtRow["FName"] = "Vadim";\r
+                       dtRow["LName"] = "Popik";\r
+                       aTable.Rows.Add (dtRow);\r
+\r
+                       aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };\r
+                       return aTable;\r
+               }\r
+       }
 }
 
 #endif