TARGET_JVM and test message
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / DetailsViewTest.cs
index b44847d0a673fdbfae62a8814511eb52615f6e70..2cf12e186db936b7bd5716942d6ca844ddde318a 100644 (file)
@@ -43,6 +43,7 @@ using System.Web.UI.HtmlControls;
 using System.Web.UI.WebControls;
 using MonoTests.SystemWeb.Framework;
 using MonoTests.stand_alone.WebHarness;
+using System.Collections.Generic;
 
 
 namespace MonoTests.System.Web.UI.WebControls
@@ -50,13 +51,43 @@ namespace MonoTests.System.Web.UI.WebControls
        [TestFixture]   
        public class DetailsViewTest {
 
+               public class DataSourceObject
+               {
+                       public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows) {
+                               return GetList ();
+                       }
+
+                       public static List<string> GetList (int startRowIndex, int maximumRows) {
+                               return GetList ();
+                       }
+
+                       public static List<string> GetList (string sortExpression) {
+                               return GetList ();
+                       }
+
+                       public static List<string> GetList () {
+                               List<string> list = new List<string> ();
+                               list.Add ("Norway");
+                               list.Add ("Sweden");
+                               list.Add ("France");
+                               list.Add ("Italy");
+                               list.Add ("Israel");
+                               list.Add ("Russia");
+                               return list;
+                       }
+
+                       public static int GetCount () {
+                               return GetList ().Count;
+                       }
+               }
+               
                public class PokerDetailsView: DetailsView 
                {
                        public bool ensureDataBound=false;
                        public bool isInitializePager = false;
-                       public bool controlHierarchy = false;\r
-                       public bool ensureCreateChildControls = false;\r
-                       public bool createChildControls1 = false;\r
+                       public bool controlHierarchy = false;
+                       public bool ensureCreateChildControls = false;
+                       public bool createChildControls1 = false;
                        public bool createChildControls2 = false;
                        public PokerDetailsView () 
                        {
@@ -171,9 +202,9 @@ namespace MonoTests.System.Web.UI.WebControls
                        {
                                OnUnload (e);
                        }
-                       public void DoOnBubbleEvent (Object sender, EventArgs e)
+                       public bool DoOnBubbleEvent (Object sender, EventArgs e)
                        {
-                               OnBubbleEvent (sender,e);
+                               return OnBubbleEvent (sender, e);
                        }
 
                        public Object DoSaveControlState ()
@@ -220,24 +251,24 @@ namespace MonoTests.System.Web.UI.WebControls
                        {
                                base.EnsureDataBound ();
                                ensureDataBound = true;
-                       }\r
-\r
-                       protected override void EnsureChildControls ()\r
-                       {\r
-                               base.EnsureChildControls ();\r
-                               ensureCreateChildControls = true;\r
-                       }\r
-\r
-                       protected override void CreateChildControls ()\r
-                       {\r
-                               base.CreateChildControls ();\r
-                               createChildControls1 = true;\r
-                       }\r
-\r
-                       protected override int CreateChildControls (IEnumerable data, bool dataBinding)\r
-                       {\r
-                               createChildControls2 = true;\r
-                               return base.CreateChildControls (data, dataBinding);\r
+                       }
+
+                       protected override void EnsureChildControls ()
+                       {
+                               base.EnsureChildControls ();
+                               ensureCreateChildControls = true;
+                       }
+
+                       protected override void CreateChildControls ()
+                       {
+                               base.CreateChildControls ();
+                               createChildControls1 = true;
+                       }
+
+                       protected override int CreateChildControls (IEnumerable data, bool dataBinding)
+                       {
+                               createChildControls2 = true;
+                               return base.CreateChildControls (data, dataBinding);
                        }
 
                        public void DoConfirmInitState ()
@@ -280,22 +311,33 @@ namespace MonoTests.System.Web.UI.WebControls
                        {
                                base.PrepareControlHierarchy ();
                                controlHierarchy = true;
-                       }\r
-\r
-                       public void DoRaiseCallbackEvent (string eventArgument)\r
-                       {\r
-                               base.RaiseCallbackEvent (eventArgument);\r
                        }
-\r
-                       public void DoEnsureChildControls ()\r
-                       {\r
-                               base.EnsureChildControls ();\r
-                       }\r
+
+                       public void DoRaiseCallbackEvent (string eventArgument)
+                       {
+                               base.RaiseCallbackEvent (eventArgument);
+                       }
+
+                       public void DoEnsureChildControls ()
+                       {
+                               base.EnsureChildControls ();
+                       }
+
+                       public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
+                       {
+                               return CreateDataSourceSelectArguments ();
+               }
+
+                       public DataSourceView DoGetData ()
+                       {
+                               return GetData ();
+                       }
                }
 
                ArrayList myds = new ArrayList ();
+
                [TestFixtureSetUp]
-               public void setup ()
+               public void constract ()
                {
                        myds.Add ("Item1");
                        myds.Add ("Item2");
@@ -303,13 +345,19 @@ namespace MonoTests.System.Web.UI.WebControls
                        myds.Add ("Item4");
                        myds.Add ("Item5");
                        myds.Add ("Item6");
-#if VISUAL_STUDIO\r
-                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FooterTemplateTest.aspx",\r
-                               "FooterTemplateTest.aspx");\r
-                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewTemplates.aspx",\r
-                               "DetailsViewTemplates.aspx");\r
-                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewDataActions.aspx",\r
-                               "DetailsViewDataActions.aspx");\r
+               }
+
+               
+               [SetUp]
+               public void setup ()
+               {
+#if VISUAL_STUDIO
+                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FooterTemplateTest.aspx",
+                               "FooterTemplateTest.aspx");
+                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewTemplates.aspx",
+                               "DetailsViewTemplates.aspx");
+                       WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewDataActions.aspx",
+                               "DetailsViewDataActions.aspx");
                        WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewProperties1.aspx",
                                "DetailsViewProperties1.aspx");
 #else
@@ -318,16 +366,17 @@ namespace MonoTests.System.Web.UI.WebControls
                        WebTest.CopyResource (GetType (), "DetailsViewDataActions.aspx", "DetailsViewDataActions.aspx");
                        WebTest.CopyResource (GetType (), "DetailsViewProperties1.aspx", "DetailsViewProperties1.aspx");
 #endif
-                       
                }
 
 
 
                [Test]
-               [Category ("NotWorking")] 
+#if TARGET_JVM //probably dependant on BUG #6489
+               [Category ("NotWorking")]
+#endif
                public void DetailsView_DefaultProperties ()
                {
-                       PokerDetailsView dv = new PokerDetailsView ();\r
+                       PokerDetailsView dv = new PokerDetailsView ();
                        Assert.IsNotNull (dv.Rows);                     
                        Assert.AreEqual (false, dv.AllowPaging, "AllowPagingDefault");
                        Assert.AreEqual (typeof(TableItemStyle), dv.AlternatingRowStyle.GetType(),"AlternatingRowStyleDefault") ;
@@ -376,11 +425,13 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual (typeof (DetailsViewRowCollection), dv.Rows.GetType (), "RowDefault2");
                        Assert.AreEqual (typeof (TableItemStyle), dv.RowStyle.GetType (), "RowStyleDefault");
                        Assert.AreEqual (null, dv.SelectedValue, "SelectedValueDefault");
-                       Assert.AreEqual (null, dv.TopPagerRow, "TopPagerRow");\r
+                       Assert.AreEqual (null, dv.TopPagerRow, "TopPagerRow");
                }
 
-               [Test]
-               [Category ("NotWorking")] 
+               [Test]\r
+#if TARGET_JVM //probably dependant on BUG #6489\r
+               [Category ("NotWorking")]\r
+#endif\r
                public void DetailsView_AssignToDefaultProperties ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -497,14 +548,13 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_AssignedPropertiesRender ()
                {
-                                               string RenderedPageHtml = new WebTest ("DetailsViewProperties1.aspx").Run ();
+                       string RenderedPageHtml = new WebTest ("DetailsViewProperties1.aspx").Run ();
                        string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("starttest") + 9, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("starttest") - 9);
                        string origHtmlValue = @" <div>
                        <div>
-                       <table cellspacing=""20"" cellpadding=""30"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;background-image:url(Blue%20hills.jpg);"">
+                       <table cellspacing=""20"" cellpadding=""30"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;background-image:url(Blue_hills.jpg);"">
                        <caption align=""Bottom"">
                        Caption Test
                        </caption><tr>
@@ -522,15 +572,13 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual (true, origHtmlValue.Contains (@"cellspacing=""20"""), "CellspacingRender");
                        Assert.AreEqual (true, origHtmlValue.Contains ("Caption Test"), "CaptionRender");
                        Assert.AreEqual (true, origHtmlValue.Contains (@"caption align=""Bottom"""), "CaptionalignRender");
-                       Assert.AreEqual (true, origHtmlValue.Contains ("Blue%20hills.jpg"), "BackImageRender");
-                       Assert.AreEqual (true, origHtmlValue.Contains ("Blue%20hills.jpg"), "BackImageRender");
+                       Assert.AreEqual (true, origHtmlValue.Contains ("Blue_hills.jpg"), "BackImageRender");
                        //GridLines and HorizontalAlign were set but can not be shown in this rendering.
                }
 
                
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_EmptyDataTextPropertyRender ()
                {       
                        PageDelegate pd = new PageDelegate (DetailsView_EmptyDataTextProperty);
@@ -593,8 +641,10 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual (DetailsViewMode.ReadOnly, dv.CurrentMode, "ChangeModeReadOnly");
                }
 
-               [Test]
-               [Category ("NotWorking")] 
+               [Test]\r
+#if TARGET_JVM //BUG #6484\r
+               [Category ("NotWorking")]\r
+#endif\r
                public void FormView_DataBind ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -609,7 +659,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void FormView_IsBindableType ()
                {
                        bool isBindable = false;
@@ -635,8 +684,10 @@ namespace MonoTests.System.Web.UI.WebControls
 
                private bool isDeleted = false;
 
-               [Test]
-               [Category ("NotWorking")] 
+               [Test]\r
+#if TARGET_JVM //BUG #6484\r
+               [Category ("NotWorking")]\r
+#endif
                public void DetailsView_DeleteItemHandler ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -656,7 +707,6 @@ namespace MonoTests.System.Web.UI.WebControls
 
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_DeleteItemTest ()
                {
                        string html = new WebTest (PageInvoker.CreateOnLoad (
@@ -709,18 +759,18 @@ namespace MonoTests.System.Web.UI.WebControls
                        dv.AllowPaging = true;
                        dv.DataKeyNames = new string[] { "ID", "FName", "LName" };
                        dv.DataSourceID = "ObjectDataSource1";
-                       dv.DataBind ();\r
-                       dv.DeleteItem ();\r
+                       dv.DataBind ();
+                       dv.DeleteItem ();
                }
 
                //ToDo: InsertItem method should be checked using postback
                private bool insertItem = false;
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_InsertItem ()
                {
-                       PokerDetailsView dv = new PokerDetailsView ();\r
+                       PokerDetailsView dv = new PokerDetailsView ();
                        dv.Page = new Page ();
+                       dv.Page.Validate();
                        dv.ChangeMode (DetailsViewMode.Insert);
                        dv.ItemInserting += new DetailsViewInsertEventHandler (insert_item);
                        Assert.AreEqual (false, insertItem, "BeforeInsertItem");
@@ -737,12 +787,12 @@ namespace MonoTests.System.Web.UI.WebControls
                //ToDo: UpdateItem method should be checked using postback
                private bool updateItem = false;
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_UpdateItem ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
-                       dv.ChangeMode (DetailsViewMode.Edit);\r
+                       dv.ChangeMode (DetailsViewMode.Edit);
                        dv.Page = new Page ();
+                       dv.Page.Validate ();
                        dv.ItemUpdating += new DetailsViewUpdateEventHandler (update_item);
                        Assert.AreEqual (false, updateItem, "BeforeUpdateItem");
                        dv.UpdateItem (true);
@@ -758,7 +808,6 @@ namespace MonoTests.System.Web.UI.WebControls
                //protected methods
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_CreateAutoGeneratedRows ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();                  
@@ -776,7 +825,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_CreateAutoGenerateRow ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();                  
@@ -791,8 +839,10 @@ namespace MonoTests.System.Web.UI.WebControls
 
                }
 
-               [Test]
-               [Category ("NotWorking")] 
+               [Test]\r
+#if TARGET_JVM //BUG #6484\r
+               [Category ("NotWorking")]\r
+#endif
                public void DetailsView_CreateChildControls ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();                  
@@ -801,7 +851,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_CreateControlStyle ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -812,7 +861,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_CreateRow ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -837,7 +885,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_CreateTable ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -853,7 +900,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_EnsureDataBound ()
                {
                        ObjectDataSource ds = new ObjectDataSource ();
@@ -871,22 +917,20 @@ namespace MonoTests.System.Web.UI.WebControls
                        dv.DoConfirmInitState ();
                        dv.DoOnPreRender (EventArgs.Empty);
                        Assert.AreEqual (true, dv.ensureDataBound, "AfterEnsureDataBound");
-               }\r
-\r
-               [Test]\r
-               [Category ("NotWorking")]\r
-               public void DetailsView_EnsureChildControls ()\r
-               {\r
-                       PokerDetailsView dv = new PokerDetailsView ();\r
-                       int i = dv.Rows.Count;\r
-                       Assert.IsTrue (dv.ensureCreateChildControls);\r
-                       Assert.IsFalse (dv.ensureDataBound);\r
-                       Assert.IsFalse (dv.createChildControls1);\r
-                       Assert.IsFalse (dv.createChildControls2);\r
                }
 
                [Test]
-               [Category ("NotWorking")] 
+               public void DetailsView_EnsureChildControls ()
+               {
+                       PokerDetailsView dv = new PokerDetailsView ();
+                       int i = dv.Rows.Count;
+                       Assert.IsTrue (dv.ensureCreateChildControls);
+                       Assert.IsFalse (dv.ensureDataBound);
+                       Assert.IsTrue (dv.createChildControls1);
+                       Assert.IsFalse (dv.createChildControls2);
+               }
+
+               [Test]
                public void DetailsView_ExtractRowValues ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -920,20 +964,20 @@ namespace MonoTests.System.Web.UI.WebControls
                        dv.DoExtractRowValues (fieldsValues, false, true);
                        Assert.AreEqual (0, fieldsValues.Count, "ExtractRowValues-NotReadOnly2");
                        Assert.AreEqual (0, fieldsValues.Keys.Count, "ExtractRowValues-NotReadOnly3");
-               }\r
-\r
-               [Test]\r
-               [Category ("NotWorking")]\r
-               public void DetailsView_CreateFieldSet_dont_useDataSource ()\r
-               {\r
-                       DataTable ds = TableObject.CreateDataTable ();\r
-                       PokerDetailsView dv1 = new PokerDetailsView ();\r
-                       dv1.DataSource = ds;\r
-                       dv1.DataBind ();\r
-                       ICollection fieldSet1 = dv1.DoCreateFieldSet ("FieldTest", true);\r
-                       Assert.AreEqual (1, fieldSet1.Count, "FiledSetCount");\r
-                       AutoGeneratedField agf = (AutoGeneratedField) ((ArrayList) fieldSet1)[0];\r
-                       Assert.AreEqual ("Item", agf.HeaderText, "FieldSetCount");\r
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void DetailsView_CreateFieldSet_dont_useDataSource ()
+               {
+                       DataTable ds = TableObject.CreateDataTable ();
+                       PokerDetailsView dv1 = new PokerDetailsView ();
+                       dv1.DataSource = ds;
+                       dv1.DataBind ();
+                       ICollection fieldSet1 = dv1.DoCreateFieldSet ("FieldTest", true);
+                       Assert.AreEqual (1, fieldSet1.Count, "FiledSetCount");
+                       AutoGeneratedField agf = (AutoGeneratedField) ((ArrayList) fieldSet1)[0];
+                       Assert.AreEqual ("Item", agf.HeaderText, "FieldSetCount");
                }
 
                [Test]
@@ -956,28 +1000,24 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_GetCallBackResult ()
                {
+
                        PokerDetailsView dv = new PokerDetailsView ();
                        Page p = new Page ();
+                       p.EnableEventValidation = false;
                        p.Controls.Add (dv);
-                       DataTable ds = TableObject.CreateDataTable ();                  
+
+                       DataTable ds = TableObject.CreateDataTable ();
+                       dv.AllowPaging = true;
+                       dv.EnablePagingCallbacks = true;
                        dv.DataSource = ds;
-                       dv.DataBind ();\r
-                       dv.DoRaiseCallbackEvent ("a|b$c");\r
-                       string callbackResult=@"<table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
-                                               <tr>
-                                               <td>ID</td><td>1001</td>
-                                               </tr><tr>
-                                               <td>FName</td><td>Mahesh</td>
-                                               </tr><tr>
-                                               <td>LName</td><td>Chand</td>
-                                               </tr>
-                                               </table>";\r
-                       string cbres = dv.DoGetCallbackResult ();\r
+                       dv.DataBind ();
+                       dv.DoRaiseCallbackEvent ("1||0|");
+                       string cbres = dv.DoGetCallbackResult ();
                        Assert.IsNotNull (cbres);
-                       HtmlDiff.AssertAreEqual (callbackResult, cbres.Substring(dv.DoGetCallbackResult().IndexOf ("<table")), "GetCallbackResult");
+                       if (cbres.IndexOf ("1002") == -1)
+                               Assert.Fail ("Wrong item rendered fail");
                                
                }
 
@@ -987,8 +1027,10 @@ namespace MonoTests.System.Web.UI.WebControls
                        //Not implemented
                }
 
-               [Test]
-               [Category ("NotWorking")] 
+               [Test]\r
+#if TARGET_JVM //BUG #6484\r
+               [Category ("NotWorking")]\r
+#endif\r
                public void DetailsView_InitializePager ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -1010,7 +1052,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_PerformDataBinding ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -1020,24 +1061,25 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_PrepareControlHierarchy ()
                {
-                       PokerDetailsView dv = new PokerDetailsView ();\r
+                       PokerDetailsView dv = new PokerDetailsView ();
                        //dv.Render ();
                        //Assert.AreEqual (0, dv.Controls.Count, "ControlHierarchy1");
                        //Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy2");
                        dv.controlHierarchy = false;
                        dv.AllowPaging = true;
                        dv.DataSource = myds;
-                       dv.DataBind ();\r
+                       dv.DataBind ();
                        dv.Page = new Page ();
                        dv.Render ();
                        Assert.AreEqual (1, dv.Controls.Count, "ControlHierarchy3");
                        Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy4");
                        Button bt = new Button ();
+                       dv.Page.EnableEventValidation = false;
                        dv.Controls.Add (bt);
                        dv.controlHierarchy = false;
+
                        dv.Render ();
                        Assert.AreEqual (2, dv.Controls.Count, "ControlHierarchy3");
                        Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy4");
@@ -1045,9 +1087,9 @@ namespace MonoTests.System.Web.UI.WebControls
                
                //Render Methods
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_FooterTemplateRender ()
                {
+
                        //Footer Template property is checked.
                        string RenderedPageHtml = new WebTest ("FooterTemplateTest.aspx").Run ();
                        string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("starttest")+9, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("starttest")-9); 
@@ -1183,7 +1225,6 @@ namespace MonoTests.System.Web.UI.WebControls
 
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_PagingPostback ()
                {
                        WebTest t = new WebTest ("DetailsViewDataActions.aspx");
@@ -1248,7 +1289,6 @@ namespace MonoTests.System.Web.UI.WebControls
 
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_EditPostback ()
                {                       
                        WebTest t = new WebTest ("DetailsViewDataActions.aspx");
@@ -1285,13 +1325,10 @@ namespace MonoTests.System.Web.UI.WebControls
                                                </div>     
                                                </div>";
                                        HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "AfterEditPostback");
-                         
-
                }
 
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_DeletePostback ()
                {                       
                        WebTest t = new WebTest ("DetailsViewDataActions.aspx");                        
@@ -1330,17 +1367,12 @@ namespace MonoTests.System.Web.UI.WebControls
 
                        HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "DeleteDataPostback");
                        Assert.AreEqual (false, pageHTML.Contains ("1001"), "AfterDeletePostback");
-                       
-                       
-
                }
 
                [Test]
                [Category ("NunitWeb")]
-               [Category ("NotWorking")] 
                public void DetailsView_InsertPostback ()
                {
-
                        WebTest t = new WebTest ("DetailsViewDataActions.aspx");
                        string pageHTML = t.Run ();
                        Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDeletePostback");
@@ -1374,7 +1406,6 @@ namespace MonoTests.System.Web.UI.WebControls
 
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_ViewState ()
                {
                        PokerDetailsView dv = new PokerDetailsView ();
@@ -1390,10 +1421,8 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_ControlState ()
                {
-
                        PokerDetailsView dv = new PokerDetailsView ();
                        PokerDetailsView copy = new PokerDetailsView ();
                        string[] keys = new String[2];
@@ -1452,17 +1481,18 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_BubbleEvents ()
                {
                        ResetEvents ();
                        DetailsViewCommandEventArgs com;
-                       PokerDetailsView dv = new PokerDetailsView ();\r
+                       PokerDetailsView dv = new PokerDetailsView ();
                        dv.DataSource = TableObject.CreateDataTable ();
                        Page page = new Page ();
                        Button bt = new Button ();
                        dv.AllowPaging = true;
+                       dv.DataSource = myds;
                        page.Controls.Add (dv);         
+                       dv.DataBind ();
                        dv.ItemCommand += new DetailsViewCommandEventHandler (dv_ItemCommand );
                        dv.ItemDeleted += new DetailsViewDeletedEventHandler (dv_ItemDeleted );
                        //Delete
@@ -1470,7 +1500,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));
                        Assert.AreEqual (false, itemCommand, "BeforeDeleteCommandBubbleEvent");
                        Assert.AreEqual (false, itemDeleting, "BeforeDeleteBubbleEvent");                       
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Delete");
                        Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");                 
                        Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");
 
@@ -1481,7 +1511,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));
                        Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");
                        Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Insert");
                        Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");
                        Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");
 
@@ -1492,7 +1522,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));
                        Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");
                        Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Update");
                        Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");
                        Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");
 
@@ -1502,7 +1532,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));
                        Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");
                        Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Cancel");
                        Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");
                        Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");
 
@@ -1512,7 +1542,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));
                        Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");
                        Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Edit");
                        Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");
                        Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");
 
@@ -1522,7 +1552,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("New", null));
                        Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");
                        Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - New");
                        Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");
                        Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");
 
@@ -1532,9 +1562,10 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));
                        Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");
                        Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Page Index default");
                        Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");
                        Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");
+                       Assert.AreEqual (-1, newPageIndex, "PageIndex");
 
                        //Next Page
                        itemCommand = false;
@@ -1542,7 +1573,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));
                        Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");
                        Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Next Page");
                        Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");
                        Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");
                        Assert.AreEqual (1, newPageIndex, "NextPageIndex");
@@ -1553,7 +1584,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));
                        Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");
                        Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Prev Page");
                        Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");
                        Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");
                        Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");
@@ -1564,7 +1595,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));
                        Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");
                        Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - First Page");
                        Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");
                        Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");
                        Assert.AreEqual (0, newPageIndex, "FirstPageIndex");
@@ -1575,21 +1606,20 @@ namespace MonoTests.System.Web.UI.WebControls
                        com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));
                        Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");
                        Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");
-                       dv.DoOnBubbleEvent (bt, com);
+                       Assert.IsTrue (dv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Last Page");
                        Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");
                        Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
-                       Assert.AreEqual (-1, newPageIndex, "FirstPageIndex");
+                       Assert.AreEqual (5, newPageIndex, "FirstPageIndex");
 
                }
 
                [Test]
-               [Category ("NotWorking")] 
                public void DetailsView_Events ()
                {
                        ResetEvents ();
                        PokerDetailsView dv = new PokerDetailsView ();
                        Button bt = new Button ();
-                       Page pg = new Page ();\r
+                       Page pg = new Page ();
                        dv.Page = pg;
                        dv.Init += new EventHandler (dv_Init);
                        dv.ItemCommand += new DetailsViewCommandEventHandler (dv_ItemCommand);
@@ -1684,6 +1714,7 @@ namespace MonoTests.System.Web.UI.WebControls
                {
                        pageIndexChanging = true;
                        newPageIndex = e.NewPageIndex;
+                       e.NewPageIndex = -1;
                }
 
                void dv_PageIndexChanged (object sender, EventArgs e)
@@ -1752,7 +1783,6 @@ namespace MonoTests.System.Web.UI.WebControls
                //Exceptions
 
                [Test]
-               [Category ("NotWorking")] 
                [ExpectedException (typeof (ArgumentOutOfRangeException))]
                public void CellPaddingException ()
                {
@@ -1761,7 +1791,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                [ExpectedException (typeof (ArgumentOutOfRangeException))]
                public void CellSpacingException ()
                {
@@ -1770,7 +1799,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                [ExpectedException (typeof (ArgumentOutOfRangeException))]
                public void PageIndexException ()
                {
@@ -1779,7 +1807,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                [ExpectedException (typeof (HttpException))]
                public void InsertItemException ()
                {
@@ -1788,7 +1815,6 @@ namespace MonoTests.System.Web.UI.WebControls
                }
 
                [Test]
-               [Category ("NotWorking")] 
                [ExpectedException (typeof (HttpException))]
                public void UpdateItemException ()
                {
@@ -1796,8 +1822,141 @@ namespace MonoTests.System.Web.UI.WebControls
                        dv.UpdateItem (true);
                }
 
+               [Test]
+               public void DetailsView_CreateDataSourceSelectArguments () {
+                       DataSourceView view;
+                       Page p = new Page ();
+
+                       PokerDetailsView dv = new PokerDetailsView ();
+                       p.Controls.Add (dv);
+
+                       ObjectDataSource data = new ObjectDataSource ();
+                       data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;
+                       data.SelectMethod = "GetList";
+                       data.SortParameterName = "sortExpression";
+                       DataSourceSelectArguments arg;
+                       p.Controls.Add (data);
+
+                       dv.DataSource = data;
+                       dv.DataBind ();
 
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");
 
+                       dv.AllowPaging = true;
+                       dv.PageIndex = 2;
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       view = dv.DoGetData ();
+                       Assert.IsFalse (view.CanPage);
+                       Assert.IsTrue (view.CanRetrieveTotalRowCount);
+                       Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");
+
+                       // make DataSourceView.CanPage = true
+                       data.EnablePaging = true;
+
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       view = dv.DoGetData ();
+                       Assert.IsTrue (view.CanPage);
+                       Assert.IsFalse (view.CanRetrieveTotalRowCount);
+                       Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (2, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");
+
+                       dv.AllowPaging = false;
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");
+
+                       // make DataSourceView.CanRetrieveTotalRowCount = true
+                       data.SelectCountMethod = "GetCount";
+
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");
+
+                       dv.AllowPaging = true;
+                       arg = dv.DoCreateDataSourceSelectArguments ();
+                       DataSourceSelectArguments arg1 = new DataSourceSelectArguments (2, 1);
+                       arg1.RetrieveTotalRowCount = true;
+                       view = dv.DoGetData ();
+                       Assert.IsTrue (view.CanPage);
+                       Assert.IsTrue (view.CanRetrieveTotalRowCount);
+                       Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");
+       }
+
+               [Test]
+               public void DetailsView_CurrentMode () {
+                       DetailsView view = new DetailsView ();
+                       view.DefaultMode = DetailsViewMode.Insert;
+                       Assert.AreEqual (DetailsViewMode.Insert, view.CurrentMode, "DetailsView_CurrentMode#1");
+                       view.ChangeMode (DetailsViewMode.Edit);
+                       Assert.AreEqual (DetailsViewMode.Edit, view.CurrentMode, "DetailsView_CurrentMode#2");
+               }
+
+               [TearDown]
+               public void Tear ()
+               {
+                       WebTest.Unload ();
+               }
+
+               [Test]
+               public void DetailsView_GetPostBackOptions () {
+                       DetailsView dv = new DetailsView ();
+                       dv.Page = new Page ();
+                       IButtonControl btn = new Button ();
+                       btn.CausesValidation = false;\r
+                       Assert.IsFalse (btn.CausesValidation, "DetailsView_GetPostBackOptions #1");\r
+                       Assert.AreEqual (String.Empty, btn.CommandName, "DetailsView_GetPostBackOptions #2");\r
+                       Assert.AreEqual (String.Empty, btn.CommandArgument, "DetailsView_GetPostBackOptions #3");\r
+                       Assert.AreEqual (String.Empty, btn.PostBackUrl, "DetailsView_GetPostBackOptions #4");\r
+                       Assert.AreEqual (String.Empty, btn.ValidationGroup, "DetailsView_GetPostBackOptions #5");
+                       PostBackOptions options = ((IPostBackContainer) dv).GetPostBackOptions (btn);\r
+                       Assert.IsFalse (options.PerformValidation, "DetailsView_GetPostBackOptions #6");\r
+                       Assert.IsFalse (options.AutoPostBack, "DetailsView_GetPostBackOptions #7");\r
+                       Assert.IsFalse (options.TrackFocus, "DetailsView_GetPostBackOptions #8");\r
+                       Assert.IsTrue (options.ClientSubmit, "DetailsView_GetPostBackOptions #9");\r
+                       Assert.IsTrue (options.RequiresJavaScriptProtocol, "DetailsView_GetPostBackOptions #10");\r
+                       Assert.AreEqual ("$", options.Argument, "DetailsView_GetPostBackOptions #11");\r
+                       Assert.AreEqual (null, options.ActionUrl, "DetailsView_GetPostBackOptions #12");\r
+                       Assert.AreEqual (null, options.ValidationGroup, "DetailsView_GetPostBackOptions #13");
+
+                       btn.ValidationGroup = "VG";
+                       btn.CommandName = "CMD";
+                       btn.CommandArgument = "ARG";
+                       btn.PostBackUrl = "Page.aspx";\r
+                       Assert.IsFalse (btn.CausesValidation, "DetailsView_GetPostBackOptions #14");\r
+                       Assert.AreEqual ("CMD", btn.CommandName, "DetailsView_GetPostBackOptions #15");\r
+                       Assert.AreEqual ("ARG", btn.CommandArgument, "DetailsView_GetPostBackOptions #16");\r
+                       Assert.AreEqual ("Page.aspx", btn.PostBackUrl, "DetailsView_GetPostBackOptions #17");\r
+                       Assert.AreEqual ("VG", btn.ValidationGroup, "DetailsView_GetPostBackOptions #18");
+                       options = ((IPostBackContainer) dv).GetPostBackOptions (btn);\r
+                       Assert.IsFalse (options.PerformValidation, "DetailsView_GetPostBackOptions #19");\r
+                       Assert.IsFalse (options.AutoPostBack, "DetailsView_GetPostBackOptions #20");\r
+                       Assert.IsFalse (options.TrackFocus, "DetailsView_GetPostBackOptions #21");\r
+                       Assert.IsTrue (options.ClientSubmit, "DetailsView_GetPostBackOptions #22");\r
+                       Assert.IsTrue (options.RequiresJavaScriptProtocol, "DetailsView_GetPostBackOptions #23");\r
+                       Assert.AreEqual ("CMD$ARG", options.Argument, "DetailsView_GetPostBackOptions #24");\r
+                       Assert.AreEqual (null, options.ActionUrl, "DetailsView_GetPostBackOptions #25");\r
+                       Assert.AreEqual (null, options.ValidationGroup, "DetailsView_GetPostBackOptions #26");
+               }
+
+               [Test]
+               [ExpectedException (typeof (InvalidOperationException))]
+               public void DetailsView_GetPostBackOptions_CausesValidation () {
+                       DetailsView dv = new DetailsView ();
+                       dv.Page = new Page ();
+                       IButtonControl btn = new Button ();
+                       Assert.IsTrue (btn.CausesValidation);
+                       Assert.AreEqual (String.Empty, btn.CommandName);
+                       Assert.AreEqual (String.Empty, btn.CommandArgument);
+                       Assert.AreEqual (String.Empty, btn.PostBackUrl);
+                       Assert.AreEqual (String.Empty, btn.ValidationGroup);
+                       PostBackOptions options = ((IPostBackContainer) dv).GetPostBackOptions (btn);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void DetailsView_GetPostBackOptions_Null_Argument () {
+                       DetailsView dv = new DetailsView ();
+                       dv.Page = new Page ();
+                       PostBackOptions options = ((IPostBackContainer) dv).GetPostBackOptions (null);
+               }
        }
 
        public class DTemplate : ITemplate
@@ -1830,10 +1989,10 @@ namespace MonoTests.System.Web.UI.WebControls
 
                public static DataTable Delete (string ID, string FName, string LName)
                {
-                       DataRow dr = ds.Rows.Find (ID);\r
-                       Assert.IsNotNull (dr);\r
+                       DataRow dr = ds.Rows.Find (ID);
+                       Assert.IsNotNull (dr);
                        int oldCount = ds.Rows.Count;
-                       ds.Rows.Remove (dr);\r
+                       ds.Rows.Remove (dr);
                        Assert.AreEqual (oldCount - 1, ds.Rows.Count);
                        return ds;
 
@@ -1858,10 +2017,10 @@ namespace MonoTests.System.Web.UI.WebControls
                        DataRow dr = ds.NewRow ();
                        dr["ID"] = ID;
                        dr["FName"] = FName;
-                       dr["LName"] = LName;\r
-                       int oldCount = ds.Rows.Count;\r
-                       ds.Rows.Add (dr);\r
-                       Assert.AreEqual (oldCount + 1, ds.Rows.Count);\r
+                       dr["LName"] = LName;
+                       int oldCount = ds.Rows.Count;
+                       ds.Rows.Add (dr);
+                       Assert.AreEqual (oldCount + 1, ds.Rows.Count);
                        return ds;
                }
 
@@ -1939,3 +2098,6 @@ namespace MonoTests.System.Web.UI.WebControls
 }
 #endif
 
+
+
+