// // Tests for System.Web.UI.WebControls.GridView.cs // // Author: // Tal Klahr (talk@mainsoft.com) // Yoni Klain (yonik@mainsoft.com) // // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // NOT TESTED : // ondatasourceviewchanged(),onpagepreload(),RaiseCallbackEvent(),RaisePostbackEvent #if NET_2_0 using NUnit.Framework; using System; using System.IO; using System.Globalization; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; using MonoTests.SystemWeb.Framework; using MonoTests.stand_alone.WebHarness; using MyWebControl = System.Web.UI.WebControls; using System.Data; using System.Drawing; using System.Threading; namespace MonoTests.System.Web.UI.WebControls { class PokerGridView : GridView { public bool ifPagerInitilized; public bool dataPropertyChanged; public bool pagePreLoad; public bool controlHierarchy; public PokerGridView () { TrackViewState (); } public object SaveState () { return SaveViewState (); } public void LoadState (object o) { LoadViewState (o); } public StateBag StateBag { get { return base.ViewState; } } public HtmlTextWriterTag PTagKey { get { return base.TagKey;} } public string Render () { StringWriter sw = new StringWriter (); HtmlTextWriter tw = new HtmlTextWriter (sw); Render (tw); return sw.ToString (); } public AutoGeneratedField DoCreateAutoGeneratedColumn (AutoGeneratedFieldProperties fieldProperties) { return base.CreateAutoGeneratedColumn (fieldProperties); } public int DoCreateChildControls (IEnumerable dataSource, bool dataBinding) { return base.CreateChildControls (dataSource, dataBinding); } public Table DoCreateChildTable () { return base.CreateChildTable (); } public ICollection DoCreateColumns (PagedDataSource dataSource, bool useDataSource) { return base.CreateColumns (dataSource, useDataSource); } public Style DoCreateControlStyle () { return base.CreateControlStyle (); } public GridViewRow doCreateRow (int rowIndex, int dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState) { return base.CreateRow (rowIndex, dataSourceIndex, rowType, rowState); } public string doGetCallbackResult () { return base.GetCallbackResult (); } public string doGetCallbackScript (IButtonControl buttonControl, string argument) { return base.GetCallbackScript (buttonControl, argument); } protected override void InitializePager (GridViewRow row, int columnSpan, PagedDataSource pagedDataSource) { base.InitializePager (row, columnSpan, pagedDataSource); ifPagerInitilized = true; } protected override void InitializeRow (GridViewRow row, DataControlField[] fields) { base.InitializeRow (row, fields); } public bool DoOnBubbleEvent (object source, EventArgs e) { return base.OnBubbleEvent (source, e); } public void DoOnDataBinding (EventArgs e) { base.OnDataBinding (e); } public void DoOnDataBound (EventArgs e) { base.OnDataBound (e); } protected override void OnDataPropertyChanged () { base.OnDataPropertyChanged (); dataPropertyChanged = true; } public void DoOnDataSourceViewChanged (object sender, EventArgs e) { base.OnDataSourceViewChanged (sender, e); } public void DoOnInit (EventArgs e) { base.OnInit (e); } public void DoOnLoad (EventArgs e) { base.OnLoad (e); } public void DoOnPageIndexChanged (EventArgs e) { base.OnPageIndexChanged (e); } public void DoOnPageIndexChanging (GridViewPageEventArgs e) { base.OnPageIndexChanging (e); } protected override void OnPagePreLoad (object sender, EventArgs e) { base.OnPagePreLoad (sender, e); pagePreLoad = true; } public void DoOnPreRender (EventArgs e) { base.OnPreRender (e); } public void DoOnRowCancelingEdit (GridViewCancelEditEventArgs e) { base.OnRowCancelingEdit (e); } public void DoOnRowCommand (GridViewCommandEventArgs e) { base.OnRowCommand (e); } public void DoOnRowCreated (GridViewRowEventArgs e) { base.OnRowCreated (e); } public void DoOnRowDataBound (GridViewRowEventArgs e) { base.OnRowDataBound (e); } public void DoOnRowDeleted (GridViewDeletedEventArgs e) { base.OnRowDeleted (e); } public void DoOnRowDeleting (GridViewDeleteEventArgs e) { base.OnRowDeleting (e); } public void DoOnRowEditing (GridViewEditEventArgs e) { base.OnRowEditing (e); } public void DoOnRowUpdated (GridViewUpdatedEventArgs e) { base.OnRowUpdated (e); } public void DoOnRowUpdating (GridViewUpdateEventArgs e) { base.OnRowUpdating (e); } public void DoOnSelectedIndexChanged (EventArgs e) { base.OnSelectedIndexChanged (e); } public void DoOnSelectedIndexChanging (GridViewSelectEventArgs e) { base.OnSelectedIndexChanging (e); } public void DoOnSorted (EventArgs e) { base.OnSorted (e); } public void DoOnSorting (GridViewSortEventArgs e) { base.OnSorting (e); } public void DoOnUnload (EventArgs e) { base.OnUnload (e); } public void DoPerformDataBinding (IEnumerable data) { base.PerformDataBinding (data); } protected override void PrepareControlHierarchy () { base.PrepareControlHierarchy (); controlHierarchy = true; } public object DoSaveControlState () { return base.SaveControlState (); } public void DoLoadControlState (object savedState) { base.LoadControlState (savedState); } } [Serializable] [TestFixture] public class GridViewTest { public const string BOOLFIELD = "bool"; public const string STRINGFIELD = "str"; ArrayList myds = new ArrayList (); public bool InitilizePager; [SetUp] public void SetupTestCase () { Thread.Sleep (100); } [TestFixtureSetUp] public void GridViewInit () { myds.Add ("Norway"); myds.Add ("Sweden"); myds.Add ("France"); myds.Add ("Italy"); myds.Add ("Israel"); myds.Add ("Russia"); } [Test] public void GridView_DefaultProperties () { PokerGridView g = new PokerGridView (); Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count"); Assert.AreEqual (false, g.AllowPaging, "AllowPaging"); Assert.AreEqual (false, g.AllowSorting, "AllowSorting"); // The AlternatingRowStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (true, g.AutoGenerateColumns, "AutoGenerateColumns"); Assert.AreEqual (false, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton"); Assert.AreEqual (false, g.AutoGenerateEditButton, "AutoGenerateEditButton"); Assert.AreEqual (false, g.AutoGenerateSelectButton, "AutoGenerateSelectButton"); Assert.AreEqual ("", g.BackImageUrl, "BackImageUrl"); Assert.AreEqual (null, g.BottomPagerRow, "BottomPagerRow"); Assert.AreEqual ("", g.Caption, "Caption"); Assert.AreEqual (TableCaptionAlign.NotSet, g.CaptionAlign, "CaptionAlign"); Assert.AreEqual (-1, g.CellPadding, "CellPadding"); Assert.AreEqual (0, g.CellSpacing, "CellSpacing"); // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests Assert.AreEqual (0, g.DataKeyNames.Length, "DataKeyNames"); // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests Assert.AreEqual (-1, g.EditIndex, "EditIndex"); // The EditRowStyle property is tested by the TableItemStyle test (already exists) // The EmptyDataRowStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (null, g.EmptyDataTemplate, "EmptyDataTemplate"); Assert.AreEqual ("", g.EmptyDataText, "EmptyDataText"); Assert.AreEqual (false, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks"); // The FooterStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (GridLines.Both, g.GridLines, "GridLines"); // The HeaderStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (HorizontalAlign.NotSet, g.HorizontalAlign, "HorizontalAlign"); Assert.AreEqual (0, g.PageIndex, "PageIndex"); // ToDo: The PagerSettings property is tested by the PagerSettings test // The PagerStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (null, g.PagerTemplate, "PagerTemplate"); Assert.AreEqual (10, g.PageSize, "PageSize"); Assert.AreEqual ("", g.RowHeaderColumn, "RowHeaderColumn"); // ToDo: The Rows property is tested by the GridViewRowCollection and GridViewRow test // The RowStyle property is tested by the TableItemStyle test (already exists) Assert.AreEqual (false, g.ShowFooter, "ShowFooter"); Assert.AreEqual (true, g.ShowHeader, "ShowHeader"); Assert.AreEqual (SortDirection.Ascending, g.SortDirection, "SortDirection"); Assert.AreEqual (null, g.TopPagerRow, "TopPagerRow"); Assert.AreEqual (true, g.UseAccessibleHeader, "UseAccessibleHeader"); } [Test] public void GridView_DefaultPropertiesNotWorking () { PokerGridView g = new PokerGridView (); Assert.AreEqual (null, g.FooterRow, "FooterRow"); Assert.AreEqual (null, g.HeaderRow, "HeaderRow"); Assert.AreEqual (true, g.Visible, "ViewVisible"); Assert.AreEqual (0, g.PageCount, "PageCount"); Assert.AreEqual ("", g.SortExpression, "SortExpression"); } [Test] public void GridView_AssignedProperties () { PokerGridView g = new PokerGridView (); Assert.AreEqual (0, g.StateBag.Count, "ViewState.Count"); g.AllowPaging = true; Assert.AreEqual (true, g.AllowPaging, "AllowPaging"); g.AllowSorting = true; Assert.AreEqual (true, g.AllowSorting, "AllowSorting"); g.AutoGenerateColumns = false; Assert.AreEqual (false, g.AutoGenerateColumns, "AutoGenerateColumns"); g.AutoGenerateDeleteButton = true; Assert.AreEqual (true, g.AutoGenerateDeleteButton, "AutoGenerateDeleteButton"); g.AutoGenerateEditButton = true; Assert.AreEqual (true, g.AutoGenerateEditButton, "AutoGenerateEditButton"); g.AutoGenerateSelectButton = true; Assert.AreEqual (true, g.AutoGenerateSelectButton, "AutoGenerateSelectButton"); g.BackImageUrl = "test"; Assert.AreEqual ("test", g.BackImageUrl, "BackImageUrl"); g.Caption = "test"; Assert.AreEqual ("test", g.Caption, "Caption"); g.CaptionAlign = TableCaptionAlign.Left; Assert.AreEqual (TableCaptionAlign.Left, g.CaptionAlign, "CaptionAlign"); g.CellPadding = 0; Assert.AreEqual (0, g.CellPadding, "CellPadding"); g.CellSpacing = 1; Assert.AreEqual (1, g.CellSpacing, "CellSpacing"); // ToDo: The Columns property default value is tested by the DataControlFieldCollection and DataControlField tests string[] str = new String[1]; str[0] = "test"; g.DataKeyNames = str; Assert.AreEqual ("test", g.DataKeyNames[0], "DataKeyNames"); // ToDo: The DataKeys property default value is tested by the DataKeyArray and DataKey tests g.EditIndex = 0; Assert.AreEqual (0, g.EditIndex, "EditIndex"); // The EditRowStyle property default value is tested by the TableItemStyle test (already exists) // The EmptyDataRowStyle property default value is tested by the TableItemStyle test (already exists) MyWebControl.Image myImage = new MyWebControl.Image (); myImage.ImageUrl = "myimage.jpg"; ImageTemplate template = new ImageTemplate (); template.MyImage = myImage; // end create template image g.EmptyDataTemplate = template; Assert.IsNotNull (g.EmptyDataTemplate, "EmptyDataTemplate"); g.EmptyDataText = "test"; Assert.AreEqual ("test", g.EmptyDataText, "EmptyDataText"); g.EnableSortingAndPagingCallbacks = true; Assert.AreEqual (true, g.EnableSortingAndPagingCallbacks, "EnableSortingAndPagingCallbacks"); // The FooterStyle property default value is tested by the TableItemStyle test (already exists) g.GridLines = GridLines.Horizontal; Assert.AreEqual (GridLines.Horizontal, g.GridLines, "GridLines"); g.HorizontalAlign = HorizontalAlign.Justify; Assert.AreEqual (HorizontalAlign.Justify, g.HorizontalAlign, "HorizontalAlign"); g.PageIndex = 1; Assert.AreEqual (1, g.PageIndex, "PageIndex"); // ToDo: The PagerSettings property default value is tested by the PagerSettings test // The PagerStyle property default value is tested by the TableItemStyle test (already exists) g.PagerTemplate = template; Assert.IsNotNull (g.PagerTemplate, "PagerTemplate"); g.PageSize = 5; Assert.AreEqual (5, g.PageSize, "PageSize"); g.RowHeaderColumn = "test"; Assert.AreEqual ("test", g.RowHeaderColumn, "RowHeaderColumn"); // ToDo: The Rows property default value is tested by the GridViewRowCollection and GridViewRow test // The RowStyle property default value is tested by the TableItemStyle test (already exists) g.ShowFooter = true; Assert.AreEqual (true, g.ShowFooter, "ShowFooter"); g.ShowHeader = false; Assert.AreEqual (false, g.ShowHeader, "ShowHeader"); g.UseAccessibleHeader = false; Assert.AreEqual (false, g.UseAccessibleHeader, "UseAccessibleHeader"); } [Test] public void GridView_DefaultProtectedProperties () { PokerGridView g = new PokerGridView (); Assert.AreEqual (HtmlTextWriterTag.Table, g.PTagKey, "TagKey"); } [Test] public void GridView_DataBind() { PokerGridView g = new PokerGridView (); g.DataSource = myds; g.DataBind (); Assert.AreEqual (6, g.Rows.Count, "DataBind"); } bool rowcreatedchecker; bool deleteitemchecker; bool sortingaction; [Test] [Category ("NotWorking")] public void GridView_DeleteItem() { PokerGridView g = new PokerGridView (); Assert.AreEqual (false, deleteitemchecker, "DeleteItem#1"); g.RowDeleting += new GridViewDeleteEventHandler (RowDeletingHandler); g.DeleteRow (0); Assert.AreEqual (true, deleteitemchecker, "DeleteItem#2"); } protected void RowDeletingHandler (object sender, GridViewDeleteEventArgs e) { deleteitemchecker = true; } [Test] [Category ("NotWorking")] public void GridView_RowCreated () { GridView g = new GridView (); g.RowCreated += new GridViewRowEventHandler (RowCreatedHandler); Assert.AreEqual (false, rowcreatedchecker, "RowCreated#1"); ArrayList myds = new ArrayList (); myds.Add ("Norway"); myds.Add ("Sweden"); myds.Add ("France"); myds.Add ("Italy"); g.DataSource = myds; g.DataBind (); Assert.AreEqual (true, rowcreatedchecker, "RowCreated#2"); } protected void RowCreatedHandler (object sender, GridViewRowEventArgs e) { if (e.Row.Cells.Count > 0) rowcreatedchecker = true; } [Test] public void GridView_Sort () { PokerGridView g = new PokerGridView (); Assert.AreEqual (false, sortingaction, "BeforeSorting"); g.Sorting += new GridViewSortEventHandler (Gridview_sorting); g.Sort("Item",SortDirection.Descending); Assert.AreEqual (true, sortingaction, "AfterSorting"); } protected void Gridview_sorting (object sender, GridViewSortEventArgs e) { sortingaction = true; } [Test] public void GridView_IsBindableType () { PokerGridView g = new PokerGridView (); Assert.AreEqual (true, g.IsBindableType (typeof (Int32)), "test"); Assert.AreEqual (false, g.IsBindableType (typeof (Enum)), "test"); } [Test] public void GridView_CreateAutoGeneratedColumn () { PokerGridView g = new PokerGridView (); AutoGeneratedFieldProperties fp = new AutoGeneratedFieldProperties(); fp.Name = "testfield"; fp.Type = typeof (string); AutoGeneratedField gf = g.DoCreateAutoGeneratedColumn (fp); Assert.AreEqual (typeof (string), gf.DataType , "AutoGeneratedColumn#1"); Assert.AreEqual ("testfield", gf.HeaderText, "AutoGeneratedColumn#2"); Assert.AreEqual ("System.Web.UI.WebControls.AutoGeneratedField", gf.GetType ().ToString (), "AutoGeneratedColumn#3"); } [Test] public void GridView_CreateChildControls () { PokerGridView g = new PokerGridView (); g.DataSource = myds; Assert.AreEqual(6,g.DoCreateChildControls(myds,true),"CreateChildControls#1"); } [Test] [Category ("NotWorking")] // LAMESPEC: msdn talks about number of row created by this method public void GridView_CreateChildControls_2 () { PokerGridView g = new PokerGridView (); g.DataSource = myds; Assert.AreEqual (-1, g.DoCreateChildControls (myds, false), "CreateChildControls#2"); } [Test] public void GridView_CreateChildTable() { PokerGridView g = new PokerGridView (); Assert.IsNotNull (g.DoCreateChildTable (), "CreateChildTable"); Assert.IsTrue (g.DoCreateChildTable() is Table, "CreateChildTable"); } [Test] public void GridView_CreateControlStyle () { PokerGridView g = new PokerGridView (); g.BorderColor = Color.Red; g.BorderStyle = BorderStyle.Dashed; Style s = g.DoCreateControlStyle (); Assert.AreEqual (typeof(TableStyle), s.GetType(), "CreateControlStyle#1"); Assert.AreEqual (((TableStyle) s).GridLines, GridLines.Both, "CreateControlStyle#2"); Assert.AreEqual (((TableStyle) s).CellSpacing, 0, "CreateControlStyle#3"); } [Test] public void GridView_CreateRow () { PokerGridView g = new PokerGridView (); GridViewRow gr = g.doCreateRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal); Assert.AreEqual (0, gr.RowIndex, "CreateRow#1"); Assert.AreEqual (0, gr.DataItemIndex, "CreateRow#2"); Assert.AreEqual (DataControlRowType.Pager, gr.RowType, "CreateRow#3"); Assert.AreEqual (DataControlRowState.Normal, gr.RowState, "CreateRow#4"); } [Test] public void GridView_GetCallbackResult() { Page page = new Page (); PokerGridView g = new PokerGridView (); page.Controls.Add (g); if (g.doGetCallbackResult () == string.Empty) { Assert.Fail ("GetCallbackResult"); } } [Test] public void GridView_InitializePager () { PokerGridView gv = new PokerGridView (); Page page = new Page (); page.Controls.Add (gv); gv.AllowPaging = true; gv.PageSize = 2; gv.DataSource = myds; Assert.AreEqual (false, gv.ifPagerInitilized, "BeforeInitializePagerRunned"); Assert.AreEqual (0, gv.PageCount, "BeforeInitializePagerPageCount"); gv.DataBind (); Assert.AreEqual (true, gv.ifPagerInitilized, "AfterInitializePagerRunned"); Assert.AreEqual (3, gv.PageCount, "AfterInitializePagerPageCount"); } [Test] public void GridView_InitializeRow () { // not implemented yet } [Test] public void GridView_ViewState () { PokerGridView gv = new PokerGridView (); PokerGridView copy = new PokerGridView (); gv.AllowPaging = true; gv.AllowSorting = true; gv.BackColor = Color.Red; object state = gv.SaveState (); copy.LoadState (state); Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging"); Assert.AreEqual (true, copy.AllowSorting, "ViewStateAllowSorting"); Assert.AreEqual (Color.Red, copy.BackColor, "ViewStateBackColor"); } // Private variables for bubble events private bool bubbledeleterow; private bool bubbleupdaterow; private bool bubbleeditingrow; private bool bubblesortint; private bool bubblecanceling; private bool bubbleselect; private bool bubblepage; private int newPageIndex; [Test] [Category ("NotWorking")] public void GridView_BubbleEvent () { PokerGridView gv = new PokerGridView (); Page page = new Page (); LinkButton lb = new LinkButton (); gv.AllowPaging = true; page.Controls.Add (gv); // gv.RowDeleting += new GridViewDeleteEventHandler (gv_RowDeleting); gv.RowUpdating += new GridViewUpdateEventHandler (gv_RowUpdating); gv.RowEditing += new GridViewEditEventHandler (gv_RowEditing); gv.Sorting += new GridViewSortEventHandler (gv_Sorting); gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit); gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging); gv.PageIndexChanging+=new GridViewPageEventHandler(gv_PageIndexChanging); // Delete GridViewCommandEventArgs com1 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Delete", null)); Assert.AreEqual (false, bubbledeleterow, "BeforeBubbleEventDeleteRow"); gv.DoOnBubbleEvent (gv, com1); Assert.AreEqual (true, bubbledeleterow, "AfterBubbleEventDeleteRow"); // Update GridViewCommandEventArgs com2 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Update", null)); Assert.AreEqual (false, bubbleupdaterow, "BeforeBubbleEventUpdateRow"); gv.DoOnBubbleEvent (gv, com2); Assert.AreEqual (true, bubbleupdaterow, "AfterBubbleEventUpdateRow"); // Edit GridViewCommandEventArgs com3 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Edit", null)); Assert.AreEqual (false, bubbleeditingrow, "BeforeBubbleEventEditingRow"); gv.DoOnBubbleEvent (gv, com3); Assert.AreEqual (true, bubbleeditingrow, "AfterBubbleEventEditingRow"); // Sort gv.AllowSorting = true; GridViewCommandEventArgs com4 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Sort", null)); Assert.AreEqual (false, bubblesortint, "BeforeBubbleEventSortingRow"); gv.DoOnBubbleEvent (gv, com4); Assert.AreEqual (true, bubblesortint, "AfterBubbleEventSortingRow"); // Canceling Edit GridViewCommandEventArgs com5 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Cancel", null)); Assert.AreEqual (false, bubblecanceling, "BeforeBubbleEventcancelingEdit"); gv.DoOnBubbleEvent (gv, com5); Assert.AreEqual (true, bubblecanceling, "AfterBubbleEventcancelingEdit"); // Select GridViewCommandEventArgs com6 = new GridViewCommandEventArgs (gv.SelectedRow, lb, new CommandEventArgs ("Select", "2")); Assert.AreEqual (false, bubbleselect, "BeforeBubbleEventSelect"); gv.DoOnBubbleEvent (gv, com6); Assert.AreEqual (true, bubbleselect, "AfterBubbleEventSelect"); //Next Page GridViewCommandEventArgs com7 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Next")); Assert.AreEqual (false, bubblepage, "BeforeBubbleEventNextPage"); gv.DoOnBubbleEvent (gv, com7); Assert.AreEqual (true, bubblepage, "AfterBubbleEventNextPage"); Assert.AreEqual (1, newPageIndex, "NextPage"); // Prev Page ResetEvents (); GridViewCommandEventArgs com8 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Prev")); Assert.AreEqual (false, bubblepage, "BeforeBubbleEventPrevPage"); gv.DoOnBubbleEvent (gv, com8); Assert.AreEqual (true, bubblepage, "AfterBubbleEventPrevPage"); Assert.AreEqual (-1, newPageIndex, "PrevPage"); ResetEvents (); GridViewCommandEventArgs com9 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "Last")); Assert.AreEqual (false, bubblepage, "BeforeBubbleEventLastPage"); gv.DoOnBubbleEvent (gv, com9); Assert.AreEqual (true, bubblepage, "AfterBubbleEventLastPage"); ResetEvents (); GridViewCommandEventArgs com10 = new GridViewCommandEventArgs (lb, new CommandEventArgs ("Page", "First")); Assert.AreEqual (false, bubblepage, "BeforeBubbleEventFirstPage"); gv.DoOnBubbleEvent (gv, com10); Assert.AreEqual (true, bubblepage, "AfterBubbleEventFirstPage"); Assert.AreEqual (0, newPageIndex, "FirstPage"); } private void gv_RowDeleting (object sender, EventArgs e) { bubbledeleterow = true; rowDeleting = true; } private void gv_RowUpdating (object sender, EventArgs e) { bubbleupdaterow = true; rowUpdating = true; } private void gv_RowEditing (object sender, EventArgs e) { bubbleeditingrow = true; rowEditing = true; } private void gv_Sorting (object sender, EventArgs e) { bubblesortint = true; sorting = true; } private void gv_RowCancelingEdit (object sender, EventArgs e) { bubblecanceling = true; gridViewCancelEdit = true; } private void gv_SelectedIndexChanging (object sender, GridViewSelectEventArgs e) { bubbleselect = true; selectIndexChanging = true; Assert.AreEqual (2, e.NewSelectedIndex, "SelectedIndexChanging"); } private void gv_PageIndexChanging (object sender, GridViewPageEventArgs e) { bubblepage = true; pageIndexChanging = true; newPageIndex = e.NewPageIndex; } private void ResetEvents () { bubblepage = false; dataBinding = false; pageIndexChanging = false; gridViewCancelEdit = false; rowDeleting = false; rowEditing = false; rowUpdating = false; selectIndexChanging = false; sorting = false; } // Events variable private bool dataBinding; private bool dataBound; private bool init; private bool load; private bool pageIndexChanged; private bool pageIndexChanging; private bool preRender; private bool gridViewCancelEdit; private bool rowCommand; private bool rowCreated; private bool rowDataBound; private bool rowDeleted; private bool rowDeleting; private bool rowEditing; private bool rowUpdated; private bool rowUpdating; private bool selectIndexChanged; private bool selectIndexChanging; private bool sorted; private bool sorting; private bool unload; [Test] [Category ("NotWorking")] public void GridView_EventsNotWorking () { PokerGridView gv = new PokerGridView (); Assert.AreEqual (false, gv.dataPropertyChanged, "BeforedataPropertyChanged"); gv.DataSource = myds; // not initialized gv Assert.AreEqual (true, gv.dataPropertyChanged, "AfterdataPropertyChanged"); gv.Init += new EventHandler (gv_Init); gv.Load += new EventHandler (gv_Load); Assert.AreEqual (false, init, "BeforeInit"); gv.DoOnInit (new EventArgs ()); // page does not exist Assert.AreEqual (true, init, "AfterInit"); Assert.AreEqual (false, load, "BeforeLoad"); gv.DoOnLoad (new EventArgs ()); // page does not exist Assert.AreEqual (true, load, "AfterLoad"); } [Test] public void GridView_Events () { PokerGridView gv = new PokerGridView (); gv.DataSource = myds; gv.DataBinding += new EventHandler (gv_DataBinding); gv.DataBound += new EventHandler (gv_DataBound); gv.PageIndexChanging += new GridViewPageEventHandler (gv_PageIndexChanging); gv.PageIndexChanged += new EventHandler (gv_PageIndexChanged); gv.PreRender += new EventHandler (gv_PreRender); gv.RowCancelingEdit += new GridViewCancelEditEventHandler (gv_RowCancelingEdit); gv.RowCommand += new GridViewCommandEventHandler (gv_RowCommand); gv.RowCreated += new GridViewRowEventHandler (gv_RowCreated); gv.RowDataBound += new GridViewRowEventHandler (gv_RowDataBound); gv.RowDeleted += new GridViewDeletedEventHandler(gv_RowDeleted); gv.RowDeleting+= new GridViewDeleteEventHandler(gv_RowDeleting); gv.RowEditing+=new GridViewEditEventHandler(gv_RowEditing); gv.RowUpdated+= new GridViewUpdatedEventHandler(gv_RowUpdated); gv.RowUpdating+=new GridViewUpdateEventHandler(gv_RowUpdating); gv.SelectedIndexChanged +=new EventHandler(gv_SelectedIndexChanged); gv.SelectedIndexChanging+=new GridViewSelectEventHandler(gv_SelectedIndexChanging); gv.Sorted +=new EventHandler(gv_Sorted); gv.Sorting +=new GridViewSortEventHandler(gv_Sorting); gv.Unload+=new EventHandler(gv_Unload); Assert.AreEqual (false, dataBinding, "BeforeDataBinding"); gv.DoOnDataBinding (new EventArgs ()); Assert.AreEqual (true, dataBinding, "AfterDataBinding"); Assert.AreEqual (false, dataBound, "BeforeDataBound"); gv.DoOnDataBound (new EventArgs ()); Assert.AreEqual (true, dataBound, "AfterDataBound"); Assert.AreEqual (false, pageIndexChanged, "BeforepageIndexChanged"); gv.DoOnPageIndexChanged (new EventArgs ()); Assert.AreEqual (true, pageIndexChanged, "AfterpageIndexChanged"); ResetEvents (); Assert.AreEqual (false, pageIndexChanging, "BeforepageIndexChanging"); gv.DoOnPageIndexChanging (new GridViewPageEventArgs(1)); Assert.AreEqual (true, pageIndexChanging, "AfterpageIndexChanging"); Assert.AreEqual (false, preRender, "BeforePreRender"); gv.DoOnPreRender (new EventArgs ()); Assert.AreEqual (true, preRender, "AfterPreRender"); ResetEvents (); Assert.AreEqual (false, gridViewCancelEdit, "BeforeGridViewCancelEdit"); gv.DoOnRowCancelingEdit (new GridViewCancelEditEventArgs (1)); Assert.AreEqual (true, gridViewCancelEdit, "AfterGridViewCancelEdit"); ResetEvents (); Assert.AreEqual (false, rowCommand, "BeforeRowCommand"); LinkButton lb= new LinkButton(); gv.DoOnRowCommand (new GridViewCommandEventArgs(lb,new CommandEventArgs("",null))); Assert.AreEqual (true, rowCommand, "AfterRowCommand"); Assert.AreEqual (false, rowCreated, "BeforeRowCreated"); gv.DoOnRowCreated (new GridViewRowEventArgs (gv.SelectedRow)); Assert.AreEqual (true, rowCommand, "AfterRowCreated"); Assert.AreEqual (false, rowDataBound, "BeforeRowDataBound"); gv.DoOnRowDataBound (new GridViewRowEventArgs (gv.SelectedRow)); Assert.AreEqual (true, rowDataBound, "AfterRowDataBound"); Assert.AreEqual (false, rowDeleted, "BeforeRowDeleted"); gv.DoOnRowDeleted(new GridViewDeletedEventArgs(1,new ArgumentException())); Assert.AreEqual (true, rowDeleted, "AfterRowDeleted"); ResetEvents (); Assert.AreEqual (false, rowDeleting, "BeforeRowDeleting"); gv.DoOnRowDeleting (new GridViewDeleteEventArgs (0)); Assert.AreEqual (true, rowDeleting, "AfterRowDeleting"); ResetEvents (); Assert.AreEqual (false, rowEditing, "BeforeRowEditing"); gv.DoOnRowEditing (new GridViewEditEventArgs (0)); Assert.AreEqual (true, rowEditing, "AfterRowEditing"); Assert.AreEqual (false, rowUpdated, "BeforeRowUpdated"); gv.DoOnRowUpdated (new GridViewUpdatedEventArgs(1,new Exception())); Assert.AreEqual (true, rowUpdated, "AfterRowUpdated"); ResetEvents (); Assert.AreEqual (false, rowUpdating, "BeforeRowUpdating"); gv.DoOnRowUpdating (new GridViewUpdateEventArgs (0)); Assert.AreEqual (true, rowUpdating, "AfterRowUpdating"); Assert.AreEqual (false, selectIndexChanged, "BeforeSelectedIndexChanged"); gv.DoOnSelectedIndexChanged (new EventArgs ()); Assert.AreEqual (true, selectIndexChanged, "AfterSelectedIndexChanged"); ResetEvents (); Assert.AreEqual (false, selectIndexChanging, "BeforeSelectedIndexChanging"); gv.DoOnSelectedIndexChanging (new GridViewSelectEventArgs (2)); Assert.AreEqual (true, selectIndexChanging, "AfterSelectedIndexChanging"); Assert.AreEqual (false, sorted, "BeforeSorted"); gv.DoOnSorted (new EventArgs ()); Assert.AreEqual (true, sorted, "AfterSorted"); Assert.AreEqual (false, sorting, "BeforeSorting"); gv.DoOnSorting(new GridViewSortEventArgs("",SortDirection.Ascending)); Assert.AreEqual (true, sorting, "AfterSorting"); Assert.AreEqual (false, unload, "BeforeUnload"); gv.DoOnUnload (new EventArgs ()); Assert.AreEqual (true, unload, "AfterUnload"); } private void gv_Unload (object sender, EventArgs e) { unload = true; } private void gv_Sorted (object sender, EventArgs e) { sorted = true; } private void gv_SelectedIndexChanged (object sender, EventArgs e) { selectIndexChanged = true; } private void gv_RowUpdated (object sender, EventArgs e) { rowUpdated = true; } private void gv_RowDeleted (object sender, EventArgs e) { rowDeleted = true; } private void gv_RowDataBound (object sender, EventArgs e) { rowDataBound = true; } private void gv_RowCreated (object sender, EventArgs e) { rowCreated = true; } private void gv_RowCommand (object sender, EventArgs e) { rowCommand = true; } private void gv_PreRender (object sender, EventArgs e) { preRender = true; } private void gv_DataBinding (object sender, EventArgs e) { dataBinding = true; } private void gv_DataBound (object sender, EventArgs e) { dataBound = true; } private void gv_Init (object sender, EventArgs e) { init = true; } private void gv_Load (object sender, EventArgs e) { load = true; } private void gv_PageIndexChanged (object sender, EventArgs e) { pageIndexChanged = true; } [Test] public void GridView_PerformDataBiding () { PokerGridView gv = new PokerGridView (); gv.DoPerformDataBinding (myds); Assert.AreEqual (6, gv.Rows.Count, "PerformDataBiding_Rows"); } [Test] [Category ("NotWorking")] public void GridView_PrepareControlHierarchy () { PokerGridView gv = new PokerGridView (); gv.controlHierarchy = false; gv.Render (); Assert.AreEqual (0, gv.Controls.Count, "ControlHierarchy_ControlsCount"); Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_FirstFlow"); gv.DataSource = myds; gv.DataBind (); gv.controlHierarchy = false; gv.Render (); Assert.AreEqual (1, gv.Controls.Count, "ControlHierarchy_ControlsCountSecondaryFlow"); Assert.AreEqual (true, gv.controlHierarchy, "ControlHierarchy_SecondaryFlow"); } [Test] public void GridView_State () { PokerGridView g = new PokerGridView (); PokerGridView copy = new PokerGridView (); string[] test = new String[1]; test[0] = "test"; g.DataKeyNames = test; g.EditIndex = 0; g.PageIndex = 2; object state = g.DoSaveControlState (); copy.DoLoadControlState (state); Assert.AreEqual ("test", copy.DataKeyNames[0], "DataKeyNames"); Assert.AreEqual (0, copy.EditIndex, "EditIndex"); Assert.AreEqual (2, copy.PageIndex, "PageIndex"); } [Test] public void GridView_DefaultsRender () { PokerGridView b = new PokerGridView (); string html = b.Render (); Assert.AreEqual(-1 ,b.Render().IndexOf("table"), "RenderViewState"); } [Test] public void GridView_Render () { PokerGridView b = new PokerGridView (); b.DataSource = myds; b.DataBind (); string OriginControlHtml = @"
Item
Norway
Sweden
France
Italy
Israel
Russia
"; string RenderedControlHtml = b.Render (); HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Rendering"); } [Test] public void GridView_RenderAllowPaging () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderAllowPaging)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
Item
Norway
Sweden
12
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderDefault"); } public static void RenderAllowPaging (Page p) { ArrayList myds = new ArrayList (); myds.Add ("Norway"); myds.Add ("Sweden"); myds.Add ("France"); myds.Add ("Italy"); LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); PokerGridView b = new PokerGridView (); p.Form.Controls.Add (lcb); p.Form.Controls.Add (b); b.AllowPaging = true; b.PageSize = 2; b.DataSource = myds; b.DataBind (); p.Form.Controls.Add (lce); } /// /// From here rendering all possible field types and kinds of /// templates /// [Test] public void GridView_RenderingBoundField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingBoundField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderText
1
2
FooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingBoundField"); } [Test] public void GridView_RenderingCheckBoxField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderText
FooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField"); } [Test] public void GridView_RenderingCheckBoxField2 () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCheckBoxField2)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
boolstr
1
2
  
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCheckBoxField2"); } [Test] public void GridView_RenderingImageField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingImageField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderText
FooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingImageField"); } [Test] public void GridView_RenderingCommandField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingCommandField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderText
Edit Delete New Select
Edit Delete New Select
FooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingCommandField"); } [Test] public void GridView_RenderingHyperLinkField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingHyperLinkField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderText
1
2
FooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingHyperLinkField"); } [Test] [Category ("NotWorking")] public void GridView_RenderingButtonField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingButtonField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
HeaderTextHeaderTextHeaderText
1
2
FooterTextFooterTextFooterText
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingButtonField"); } [Test] public void GridView_RenderingTemplateField () { string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (RenderingTemplateField)).Run (); string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml); string OriginControlHtml = @"
"; HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderingTemplateField"); } public static void RenderingTemplateField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.ID = "grid"; grid.AutoGenerateColumns = false; grid.ShowFooter = true; TemplateField templatefield = new TemplateField (); templatefield.InsertVisible = true; templatefield.Visible = true; templatefield.HeaderText = "HeaderText"; templatefield.FooterText = "FooterText"; templatefield.ItemTemplate = new CompiledTemplateBuilder(BuildControl_itemtemplate); templatefield.HeaderTemplate = new CompiledTemplateBuilder (BuildControl_itemtemplate); templatefield.FooterTemplate= new CompiledTemplateBuilder (BuildControl_itemtemplate); grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (templatefield); p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); grid.DataBind (); } private static void BuildControl_itemtemplate (Control container) { TextBox ctrl; ctrl = new TextBox (); ctrl.ID = "TextBox1"; ctrl.DataBinding += MyDataBinding; container.Controls.Add (ctrl); } private static void MyDataBinding (object sender, EventArgs e) { TextBox Target; IDataItemContainer Container; Target = (TextBox) sender; Container = (IDataItemContainer) Target.BindingContainer; if ((Target.Page.GetDataItem () != null)) { Target.Text = Convert.ToString (DataBinder.Eval (Target.Page.GetDataItem(),"str")); } } public static void RenderingButtonField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); ButtonField buttonfield = new ButtonField (); buttonfield.HeaderText = "HeaderText"; buttonfield.FooterText = "FooterText"; buttonfield.ButtonType = ButtonType.Button; buttonfield.DataTextField = STRINGFIELD; ButtonField buttonfieldlink = new ButtonField (); buttonfieldlink.HeaderText = "HeaderText"; buttonfieldlink.FooterText = "FooterText"; buttonfieldlink.ButtonType = ButtonType.Link; buttonfieldlink.DataTextField = STRINGFIELD; buttonfieldlink.CommandName = "cmd2"; ButtonField buttonfieldimage = new ButtonField (); buttonfieldimage.HeaderText = "HeaderText"; buttonfieldimage.FooterText = "FooterText"; buttonfieldimage.ButtonType = ButtonType.Image; buttonfieldimage.DataTextField = STRINGFIELD; buttonfieldimage.CommandName = "cmd3"; grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (buttonfield); grid.Columns.Add (buttonfieldlink); grid.Columns.Add (buttonfieldimage); grid.DataBind (); } public static void RenderingHyperLinkField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); HyperLinkField hyperlinkfield = new HyperLinkField (); hyperlinkfield.DataTextField = STRINGFIELD; string[] str = new string[] { STRINGFIELD }; hyperlinkfield.DataNavigateUrlFields = str; hyperlinkfield.HeaderText = "HeaderText"; hyperlinkfield.FooterText = "FooterText"; grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (hyperlinkfield); grid.DataBind (); } public static void RenderingCommandField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); CommandField commandfield = new CommandField (); commandfield.HeaderText = "HeaderText"; commandfield.FooterText = "FooterText"; commandfield.ShowCancelButton = true; commandfield.ShowDeleteButton = true; commandfield.ShowEditButton = true; commandfield.ShowInsertButton = true; commandfield.ShowSelectButton = true; grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (commandfield); grid.DataBind (); } public static void RenderingImageField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); ImageField imagefield = new ImageField (); imagefield.HeaderText = "HeaderText"; imagefield.FooterText = "FooterText"; imagefield.DataImageUrlField = STRINGFIELD; imagefield.DataAlternateTextField = STRINGFIELD; grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (imagefield); grid.DataBind (); } public static void RenderingBoundField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); BoundField boundfield = new BoundField (); boundfield.DataField = STRINGFIELD; boundfield.HeaderText = "HeaderText"; boundfield.FooterText = "FooterText"; grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (boundfield); grid.DataBind (); } public static void RenderingCheckBoxField (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = false; grid.ShowFooter = true; CheckBoxField checkboxfield = new CheckBoxField (); checkboxfield.DataField = BOOLFIELD; checkboxfield.HeaderText = "HeaderText"; checkboxfield.FooterText = "FooterText"; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); grid.DataSource = GridViewTest.CreateDataSource (); grid.Columns.Add (checkboxfield); grid.DataBind (); } public static void RenderingCheckBoxField2 (Page p) { LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG); LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG); GridView grid = new GridView (); grid.AutoGenerateColumns = true; grid.ShowFooter = true; p.Form.Controls.Add (lcb); p.Form.Controls.Add (grid); p.Form.Controls.Add (lce); grid.DataSource = GridViewTest.CreateDataSource (); grid.DataBind (); } /////////////////////////////////////////////////////// ///// GRIDVIEW POSTBACK ////// /////////////////////////////////////////////////////// /// /// Urgent Note! /// All postback event are failed on reason /// System.NotImplementedException: /// The requested feature is not implemented. /// At System.Web.UI.WebControls.GridView.System.Web.UI.WebControls.IPostBackContainer.GetPostBackOptions (IButtonControl control) /// [0x00000] in C:\cygwin\monobuild\mcs\class\System.Web\System.Web.UI.WebControls\GridView.cs:1891 /// [Test] [Category ("NunitWeb")] public void GridView_PostBackSotring () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback)); string pageHTML = t.Run (); Assert.AreEqual (-1, pageHTML.IndexOf ("SortingSuccess"), "BeforeSorting"); FormRequest fr = new FormRequest (t.Response, "form1"); fr.Controls.Add ("__EVENTTARGET"); fr.Controls.Add ("__EVENTARGUMENT"); fr.Controls["__EVENTTARGET"].Value = "mygrid"; fr.Controls["__EVENTARGUMENT"].Value = "Sort$Item"; t.Request = fr; t.Invoker = PageInvoker.CreateOnLoad (GridView_postback); pageHTML = t.Run (); if (pageHTML.IndexOf ("SortingSuccess") < 0) { Assert.Fail ("SortingFail"); } } [Test] [Category ("NunitWeb")] public void GridView_PostBackPaging () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback)); string pageHTML = t.Run (); Assert.AreEqual (-1, pageHTML.IndexOf ("PagingSuccess"), "BeforePaging"); FormRequest fr = new FormRequest (t.Response, "form1"); fr.Controls.Add ("__EVENTTARGET"); fr.Controls.Add ("__EVENTARGUMENT"); fr.Controls["__EVENTTARGET"].Value = "mygrid"; fr.Controls["__EVENTARGUMENT"].Value = "Page$2"; t.Request = fr; t.Invoker = PageInvoker.CreateOnLoad (GridView_postback); pageHTML = t.Run (); if (pageHTML.IndexOf ("PagingSuccess") < 0) { Assert.Fail ("PagingFail"); } } [Test] [Category ("NunitWeb")] [Category ("NotWorking")] public void GridView_PostBackDelete () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback)); string pageHTML = t.Run (); Assert.AreEqual (-1, pageHTML.IndexOf ("DeleteSuccess"), "BeforeDelete"); FormRequest fr = new FormRequest (t.Response, "form1"); fr.Controls.Add ("__EVENTTARGET"); fr.Controls.Add ("__EVENTARGUMENT"); fr.Controls["__EVENTTARGET"].Value = "mygrid"; fr.Controls["__EVENTARGUMENT"].Value = "Delete$0"; t.Request = fr; t.Invoker = PageInvoker.CreateOnLoad (GridView_postback); pageHTML = t.Run (); if (pageHTML.IndexOf ("DeleteSuccess") < 0) { Assert.Fail ("DeleteFail"); } } [Test] [Category ("NunitWeb")] public void GridView_PostBackEdit () { WebTest t = new WebTest (PageInvoker.CreateOnLoad (GridView_postback)); string pageHTML = t.Run (); Assert.AreEqual (-1, pageHTML.IndexOf ("EditSuccess"), "BeforeEdit"); FormRequest fr = new FormRequest (t.Response, "form1"); fr.Controls.Add ("__EVENTTARGET"); fr.Controls.Add ("__EVENTARGUMENT"); fr.Controls["__EVENTTARGET"].Value = "mygrid"; fr.Controls["__EVENTARGUMENT"].Value = "Edit$0"; t.Request = fr; t.Invoker = PageInvoker.CreateOnLoad (GridView_postback); pageHTML = t.Run (); if (pageHTML.IndexOf ("EditSuccess") < 0) { Assert.Fail ("EditFail"); } } [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"); myds.Add ("France"); myds.Add ("Italy"); p.Form.Controls.Add (b); b.AllowPaging = true; b.PageSize = 2; b.AllowSorting = true; b.AutoGenerateDeleteButton = true; b.AutoGenerateEditButton = true; b.AutoGenerateSelectButton = true; b.DataSource = myds; b.DataBind (); } public void b_RowEditing (object o, GridViewEditEventArgs e) { ((GridView) o).Page.Controls.Add (new LiteralControl ("EditSuccess")); Assert.AreEqual (false, e.Cancel, "EditCancel"); Assert.AreEqual (0, e.NewEditIndex, "NewEditIndex"); } public void b_PageIndexChanging (object o, GridViewPageEventArgs e) { ((GridView) o).Page.Controls.Add (new LiteralControl ("PagingSuccess")); Assert.AreEqual(false,e.Cancel,"Cancel"); } public void b_Sorting (object o, GridViewSortEventArgs e) { ((GridView) o).Page.Controls.Add (new LiteralControl ("SortingSuccess")); } public void b_RowDeleting (object o, GridViewDeleteEventArgs e) { ((GridView) o).Page.Controls.Add (new LiteralControl ("DeleteSuccess")); } public void b_SelectedIndexChanging (object o, GridViewSelectEventArgs e) { ((GridView) o).Page.Controls.Add (new LiteralControl ("SelectSuccess")); } /// /// All possible exceptions what can be thrown /// [Test] [ExpectedException (typeof (InvalidOperationException))] public void GridView_GetDefaultSelectedValue () { PokerGridView g = new PokerGridView (); object o = g.SelectedValue; } public static DataTable CreateDataSource () { DataTable aTable = new DataTable ("A"); DataColumn dtCol; DataRow dtRow; // Create ID column and add to the DataTable. dtCol = new DataColumn (); dtCol.DataType = Type.GetType ("System.Boolean"); dtCol.ColumnName = BOOLFIELD; dtCol.Caption = BOOLFIELD; dtCol.ReadOnly = true; // Add the column to the DataColumnCollection. aTable.Columns.Add (dtCol); dtCol = new DataColumn (); dtCol.DataType = Type.GetType ("System.String"); dtCol.ColumnName = STRINGFIELD; dtCol.Caption = STRINGFIELD; dtCol.ReadOnly = true; // Add the column to the DataColumnCollection. aTable.Columns.Add (dtCol); // Create 2 rows to the table dtRow = aTable.NewRow (); dtRow[BOOLFIELD] = true; dtRow[STRINGFIELD] = "1"; aTable.Rows.Add (dtRow); dtRow = aTable.NewRow (); dtRow[BOOLFIELD] = false; dtRow[STRINGFIELD] = "2"; aTable.Rows.Add (dtRow); return aTable; } // A simple Template class to wrap an image. public class ImageTemplate : ITemplate { private MyWebControl.Image myImage; public MyWebControl.Image MyImage { get { return myImage; } set { myImage = value; } } public void InstantiateIn (Control container) { container.Controls.Add (MyImage); } } } } #endif