New test.
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / DetailsViewRowTest.cs
1 //
2 // Tests for System.Web.UI.WebControls.DetailsView.cs 
3 //
4 // Author:
5 //      Merav Sudri (meravs@mainsoft.com)
6 //
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
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:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
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.
28 //
29
30 #if NET_2_0
31
32 using NUnit.Framework;
33 using System;
34 using System.IO;
35 using System.Drawing;
36 using System.Collections;
37 using System.Globalization;
38 using System.Web;
39 using System.Web.UI;
40 using System.Web.UI.WebControls;
41 using MonoTests.SystemWeb.Framework;
42 using MonoTests.stand_alone.WebHarness;
43
44
45 namespace MonoTests.System.Web.UI.WebControls
46 {
47         [TestFixture]
48         public class DetailsViewRowTest
49         {
50
51                 public class PokerDetailsViewRow : DetailsViewRow
52                 {
53
54
55                         public PokerDetailsViewRow(int itemIndex, DataControlRowType rowType, DataControlRowState rowState)
56                                 : base (itemIndex, rowType, rowState)
57                         {
58                                 TrackViewState ();
59                         }
60
61                         public object SaveState ()
62                         {
63                                 return SaveViewState ();
64                         }
65
66                         public void LoadState (object o)
67                         {
68                                 LoadViewState (o);
69                         }
70
71                         public StateBag StateBag
72                         {
73                                 get { return base.ViewState; }
74                         }
75
76                         public void DoOnBubbleEvent (Object sender, EventArgs e)
77                         {
78                                 OnBubbleEvent (sender, e);
79                         }
80
81                         public string Render ()
82                         {
83                                 StringWriter sw = new StringWriter ();
84                                 HtmlTextWriter tw = new HtmlTextWriter (sw);
85                                 Render (tw);
86                                 return sw.ToString ();
87                         }
88
89                 }
90
91
92                 [Test]
93                 public void DetailsViewRow_Properties ()
94                 {
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");
103                 }
104
105
106                 private bool dataDeleting = false;
107                 private bool dataInserting = false;
108                 private bool dataUpdating=false;
109
110                 [Test]
111                 [Category ("NotWorking")]// NullReferenceException
112                 public void DetailsViewRow_BubbleEvent ()
113                 {
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);
137
138                 }
139
140                 void dv_ItemUpdating (object sender, DetailsViewUpdateEventArgs e)
141                 {
142                         dataUpdating = true;
143                 }
144
145                 void dv_ItemInserting (object sender, DetailsViewInsertEventArgs e)
146                 {
147                         dataInserting = true;
148                 }
149
150                 public void R_DataDeleting(object sender, EventArgs e)
151                 {
152                         dataDeleting = true;
153                 }
154
155                 //ViewState
156                 [Test]
157                 public void DetailsViewRow_ViewState ()
158                 {
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");
167                 }
168
169                 [Test]
170                 public void DetailsView_render ()
171                 {
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");
177
178                 }
179
180         }
181 }
182
183 #endif