2 // Tests for System.Web.UI.WebControls.DetailsView.cs
5 // Merav Sudri (meravs@mainsoft.com)
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using NUnit.Framework;
36 using System.Collections;
37 using System.Globalization;
40 using System.Web.UI.WebControls;
41 using MonoTests.SystemWeb.Framework;
42 using MonoTests.stand_alone.WebHarness;
45 namespace MonoTests.System.Web.UI.WebControls
48 public class DetailsViewRowTest
51 public class PokerDetailsViewRow : DetailsViewRow
55 public PokerDetailsViewRow(int itemIndex, DataControlRowType rowType, DataControlRowState rowState)
56 : base (itemIndex, rowType, rowState)
61 public object SaveState ()
63 return SaveViewState ();
66 public void LoadState (object o)
71 public StateBag StateBag
73 get { return base.ViewState; }
76 public void DoOnBubbleEvent (Object sender, EventArgs e)
78 OnBubbleEvent (sender, e);
81 public string Render ()
83 StringWriter sw = new StringWriter ();
84 HtmlTextWriter tw = new HtmlTextWriter (sw);
86 return sw.ToString ();
93 public void DetailsViewRow_Properties ()
95 PokerDetailsViewRow row = new PokerDetailsViewRow (2, DataControlRowType.DataRow, DataControlRowState.Edit);
96 Assert.AreEqual (2, row.RowIndex, "ItemIndex");
97 Assert.AreEqual (DataControlRowType.DataRow, row.RowType, "RowType");
98 Assert.AreEqual (DataControlRowState.Edit, row.RowState, "RowState");
99 row = new PokerDetailsViewRow (3, DataControlRowType.Pager , DataControlRowState.Insert);
100 Assert.AreEqual (3, row.RowIndex, "ItemIndex");
101 Assert.AreEqual (DataControlRowType.Pager, row.RowType, "RowType");
102 Assert.AreEqual (DataControlRowState.Insert, row.RowState, "RowState");
106 private bool dataDeleting = false;
107 private bool dataInserting = false;
108 private bool dataUpdating=false;
111 [Category ("NotWorking")]// NullReferenceException
112 public void DetailsViewRow_BubbleEvent ()
114 DetailsView dv = new DetailsView ();
\r
115 dv.Page = new Page ();
116 PokerDetailsViewRow row = new PokerDetailsViewRow (2, DataControlRowType.Footer, DataControlRowState.Insert);
117 Button bt = new Button ();
118 dv.Controls.Add (row);
119 CommandEventArgs com = new CommandEventArgs (new CommandEventArgs ("Delete", null));
120 dv.ItemDeleting += new DetailsViewDeleteEventHandler (R_DataDeleting);
121 Assert.AreEqual (false, dataDeleting, "BeforeDeleteBubbleEvent");
122 row.DoOnBubbleEvent (row, com);
123 Assert.AreEqual (true, dataDeleting, "AfterDeleteBubbleEvent");
124 dv.ChangeMode (DetailsViewMode.Insert);
125 com = new CommandEventArgs (new CommandEventArgs ("Insert", null));
126 dv.ItemInserting += new DetailsViewInsertEventHandler (dv_ItemInserting);
127 Assert.AreEqual (false, dataInserting, "BeforeInsertBubbleEvent");
128 row.DoOnBubbleEvent (row, com);
129 Assert.AreEqual (true, dataInserting, "AfterInsertBubbleEvent");
130 dv.ChangeMode (DetailsViewMode.Edit);
131 com = new CommandEventArgs (new CommandEventArgs ("Update", null));
132 dv.ItemUpdating += new DetailsViewUpdateEventHandler (dv_ItemUpdating);
133 Assert.AreEqual (false, dataUpdating, "BeforeUpdateBubbleEvent");
134 row.DoOnBubbleEvent (row, com);
135 Assert.AreEqual (true, dataUpdating, "AfterUpdateBubbleEvent");
136 dv.ItemUpdating += new DetailsViewUpdateEventHandler (dv_ItemUpdating);
140 void dv_ItemUpdating (object sender, DetailsViewUpdateEventArgs e)
145 void dv_ItemInserting (object sender, DetailsViewInsertEventArgs e)
147 dataInserting = true;
150 public void R_DataDeleting(object sender, EventArgs e)
157 public void DetailsViewRow_ViewState ()
159 PokerDetailsViewRow row = new PokerDetailsViewRow (2, DataControlRowType.Header, DataControlRowState.Selected);
160 PokerDetailsViewRow copy = new PokerDetailsViewRow (3, DataControlRowType.Pager, DataControlRowState.Insert);
161 row.CssClass = "style.css";
162 row.BackColor = Color.Red;
163 object state = row.SaveState ();
164 copy.LoadState (state);
165 Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");
166 Assert.AreEqual (Color.Red, copy.BackColor, "ViewStateHeaderText");
170 public void DetailsView_render ()
172 PokerDetailsViewRow row = new PokerDetailsViewRow (2, DataControlRowType.Header, DataControlRowState.Selected);
173 row.ID = "TestingRow";
174 row.BackColor = Color.Red;
175 string originalHtml = @"<tr id=""TestingRow"" style=""background-color:Red;""></tr>";
176 HtmlDiff.AssertAreEqual (row.Render (), originalHtml, "DetailsViewRowRender");