[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / TemplateFieldTest.cs
1 //
2 // Tests for System.Web.UI.WebControls.TemplateFieldTest.cs
3 //
4 // Author:
5 //      Yoni Klein (yonik@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
31
32 using System;
33 using System.Collections.Generic;
34 using System.Text;
35 using System.Web;
36 using System.Web.UI;
37 using System.Web.UI.WebControls;
38 using System.IO;
39 using System.Collections;
40 using System.Collections.Specialized;
41 using NUnit.Framework;
42 using System.Data;
43
44
45
46
47 namespace MonoTests.System.Web.UI.WebControls
48 {
49         class PokerTemplateField : TemplateField
50         {
51                 // View state Stuff
52                 public PokerTemplateField ()
53                         : base () {
54                         TrackViewState ();
55                 }
56
57                 public object SaveState () {
58                         return SaveViewState ();
59                 }
60
61                 public void LoadState (object o) {
62                         LoadViewState (o);
63                 }
64
65                 public StateBag StateBag {
66                         get { return base.ViewState; }
67                 }
68
69                 public Control control () {
70                         return base.Control;
71                 }
72
73                 public void DoCopyProperties (DataControlField newField) {
74                         base.CopyProperties (newField);
75                 }
76
77                 public DataControlField DoCreateField () {
78                         return base.CreateField ();
79                 }
80         }
81
82         [TestFixture]
83         public class TemplateFieldTest
84         {
85                 [Test]
86                 public void TemplateField_DefaultProperty () {
87                         TemplateField field = new TemplateField ();
88                         Assert.AreEqual (null, field.AlternatingItemTemplate, "AlternatingItemTemplate");
89                         Assert.AreEqual (true, field.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
90                         Assert.AreEqual (null, field.EditItemTemplate, "EditItemTemplate");
91                         Assert.AreEqual (null, field.FooterTemplate, "FooterTemplate");
92                         Assert.AreEqual (null, field.HeaderTemplate, "HeaderTemplate");
93                         Assert.AreEqual (null, field.InsertItemTemplate, "InsertItemTemplate");
94                         Assert.AreEqual (null, field.ItemTemplate, "ItemTemplate");
95                 }
96
97                 [Test]
98                 public void TemplateField_AssignProperty () {
99                         PokerTemplateField field = new PokerTemplateField ();
100                         field.AlternatingItemTemplate = new Ibutton ();
101                         Assert.IsNotNull (field.AlternatingItemTemplate, "AlternatingItemTemplateAssigned");
102                         Assert.AreEqual (typeof (Ibutton), field.AlternatingItemTemplate.GetType (), "AlternatingItemTemplateType");
103                         field.ConvertEmptyStringToNull = false;
104                         Assert.AreEqual (false, field.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
105                         field.EditItemTemplate = new IImage ();
106                         Assert.IsNotNull (field.EditItemTemplate, "EditItemTemplateAssigning");
107                         Assert.AreEqual (typeof (IImage), field.EditItemTemplate.GetType (), "EditItemTemplateType");
108                         field.FooterTemplate = new Ibutton ();
109                         Assert.IsNotNull (field.FooterTemplate, "FooterTemplateAssigning");
110                         Assert.AreEqual (typeof (Ibutton), field.FooterTemplate.GetType (), "FooterTemplateType");
111                         field.HeaderTemplate = new IImage ();
112                         Assert.IsNotNull (field.HeaderTemplate, "HeaderTemplateAssigning");
113                         Assert.AreEqual (typeof (IImage), field.HeaderTemplate.GetType (), "HeaderTemplateType");
114                         field.InsertItemTemplate = new Ibutton ();
115                         Assert.IsNotNull (field.InsertItemTemplate, "InsertItemTemplateAssigning");
116                         Assert.AreEqual (typeof (Ibutton), field.InsertItemTemplate.GetType (), "InsertItemTemplateType");
117                         field.ItemTemplate = new IImage ();
118                         Assert.IsNotNull (field.ItemTemplate, "ItemTemplateAssigning");
119                         Assert.AreEqual (typeof (IImage), field.ItemTemplate.GetType (), "ItemTemplateType");
120                 }
121
122                 [Test]
123                 public void TemplateField_ExtractValuesFromCell () {
124                         TemplateField field = new TemplateField ();
125                         OrderedDictionary dictionrary = new OrderedDictionary ();
126                         DataControlFieldCell cell = new DataControlFieldCell (null);
127                         field.ExtractValuesFromCell (dictionrary, cell, DataControlRowState.Normal, true);
128                         Assert.AreEqual (0, dictionrary.Count, "ExtractValuesFromCellNoTemplates");
129                         // This is testing only base functionality and flow with no exceptions
130                         // The rest functionality will tested on integration test
131                 }
132
133                 [Test]
134                 [ExpectedException(typeof(NullReferenceException))]
135                 public void TemplateField_InitializeCell_Null () {
136                         PokerTemplateField field = new PokerTemplateField ();
137                         field.InitializeCell (null, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
138                 }
139
140                 [Test]
141                 public void TemplateField_InitializeCell () {
142                         PokerTemplateField field = new PokerTemplateField ();
143                         DataControlFieldCell cell = new DataControlFieldCell (null);
144                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
145                         Assert.AreEqual (" ", cell.Text, "InitializeCellEmpty");
146                         field.ItemTemplate = new IImage ("test");
147                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
148                         Assert.AreEqual ("", cell.Text, "InitializeCellWithItemTemplate");
149                         Assert.AreEqual (1, cell.Controls.Count, "InitializeCellWithItemTemplate#1");
150                         Assert.AreEqual ("test", ((IImage) cell.Controls [0]).ImageUrl, "InitializeCellWithItemTemplate#2");
151                 }
152
153                 [Test]
154                 public void TemplateField_FooterTemplate () {
155                         PokerTemplateField field = new PokerTemplateField ();
156                         DataControlFieldCell cell = new DataControlFieldCell (null);
157                         cell.Text = "text";
158                         field.InitializeCell (cell, DataControlCellType.Footer, DataControlRowState.Normal, 0);
159                         Assert.AreEqual (" ", cell.Text, "#1");
160                         Assert.AreEqual (0, cell.Controls.Count, "#2");
161                         field.FooterTemplate = new Ibutton ("test");
162                         field.InitializeCell (cell, DataControlCellType.Footer, DataControlRowState.Normal, 0);
163                         Assert.AreEqual ("", cell.Text, "#3");
164                         Assert.AreEqual (1, cell.Controls.Count, "#4");
165                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#5");
166                 }
167
168
169                 [Test]
170                 public void TemplateField_HeaderTemplate () {
171                         PokerTemplateField field = new PokerTemplateField ();
172                         DataControlFieldCell cell = new DataControlFieldCell (null);
173                         cell.Text = "text";
174                         field.InitializeCell (cell, DataControlCellType.Header, DataControlRowState.Normal, 0);
175                         Assert.AreEqual (" ", cell.Text, "#1");
176                         Assert.AreEqual (0, cell.Controls.Count, "#2");
177                         field.HeaderTemplate = new Ibutton ("test");
178                         field.InitializeCell (cell, DataControlCellType.Header, DataControlRowState.Normal, 0);
179                         Assert.AreEqual ("", cell.Text, "#3");
180                         Assert.AreEqual (1, cell.Controls.Count, "#4");
181                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#5");
182                 }
183
184                 [Test]
185                 public void TemplateField_EditItemTemplate () {
186                         PokerTemplateField field = new PokerTemplateField ();
187                         DataControlFieldCell cell = new DataControlFieldCell (null);
188                         field.ItemTemplate = new Ibutton ("test");
189                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
190                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
191                         cell = new DataControlFieldCell (null);
192                         field.EditItemTemplate = new Ibutton ("edit");
193                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
194                         Assert.AreEqual ("edit", ((Ibutton) cell.Controls [0]).Text, "#2");
195                         cell = new DataControlFieldCell (null);
196                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
197                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
198                         cell = new DataControlFieldCell (null);
199                         field.ItemTemplate = null;
200                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
201                         Assert.IsTrue (cell.Controls.Count == 0, "#4");
202                         Assert.AreEqual (" ", cell.Text, "#5");
203                 }
204
205                 [Test]
206                 public void TemplateField_InsertItemTemplate () {
207                         PokerTemplateField field = new PokerTemplateField ();
208                         DataControlFieldCell cell = new DataControlFieldCell (null);
209                         field.ItemTemplate = new Ibutton ("test");
210                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
211                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
212                         cell = new DataControlFieldCell (null);
213                         field.InsertItemTemplate = new Ibutton ("insert");
214                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
215                         Assert.AreEqual ("insert", ((Ibutton) cell.Controls [0]).Text, "#2");
216                         cell = new DataControlFieldCell (null);
217                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
218                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
219                         cell = new DataControlFieldCell (null);
220                         field.ItemTemplate = null;
221                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
222                         Assert.IsTrue (cell.Controls.Count == 0, "#4");
223                         Assert.AreEqual (" ", cell.Text, "#5");
224                 }
225
226                 [Test]
227                 public void TemplateField_AlternatingItemTemplate () {
228                         PokerTemplateField field = new PokerTemplateField ();
229                         DataControlFieldCell cell = new DataControlFieldCell (null);
230                         field.ItemTemplate = new Ibutton ("test");
231                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
232                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
233                         cell = new DataControlFieldCell (null);
234                         field.AlternatingItemTemplate = new Ibutton ("Alternate");
235                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
236                         Assert.AreEqual ("Alternate", ((Ibutton) cell.Controls [0]).Text, "#2");
237                         cell = new DataControlFieldCell (null);
238                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
239                         Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
240                         cell = new DataControlFieldCell (null);
241                         field.ItemTemplate = null;
242                         field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
243                         Assert.IsTrue (cell.Controls.Count == 0, "#4");
244                         Assert.AreEqual (" ", cell.Text, "#5");
245                 }
246
247                 [Test]
248                 [ExpectedException (typeof (NotSupportedException))]
249                 public void TemplateField_ValidateSupportsCallbackException () {
250                         TemplateField field = new TemplateField ();
251                         field.Initialize (false, new Control ());
252                         field.ValidateSupportsCallback ();
253                 }
254
255                 [Test]
256                 public void TemplateField_Copy () {
257                         PokerTemplateField field = new PokerTemplateField ();
258                         TemplateField copy = new TemplateField ();
259                         field.ConvertEmptyStringToNull = true;
260                         field.AlternatingItemTemplate = new Ibutton ();
261                         field.ItemTemplate = new Ibutton ();
262                         field.FooterTemplate = new Ibutton ();
263                         field.EditItemTemplate = new Ibutton ();
264                         field.HeaderTemplate = new Ibutton ();
265                         field.InsertItemTemplate = new Ibutton ();
266                         field.DoCopyProperties (copy);
267                         Assert.AreEqual (true, copy.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
268                         Assert.IsNotNull (copy.AlternatingItemTemplate, "AlternatingItemTemplate");
269                         Assert.IsNotNull (copy.ItemTemplate, "ItemTemplate");
270                         Assert.IsNotNull (copy.FooterTemplate, "FooterTemplate");
271                         Assert.IsNotNull (copy.EditItemTemplate, "EditItemTemplate");
272                         Assert.IsNotNull (copy.HeaderTemplate, "HeaderTemplate");
273                         Assert.IsNotNull (copy.InsertItemTemplate, "InsertItemTemplate");
274                 }
275
276                 [Test]
277                 public void TemplateField_CreateField () {
278                         PokerTemplateField field = new PokerTemplateField ();
279                         DataControlField newfield = field.DoCreateField ();
280                         if (!(newfield is TemplateField)) {
281                                 Assert.Fail ("New TemplateField was not created");
282                         }
283                 }
284
285
286                 // A simple Template class to wrap an image.
287                 public class IImage : Image, ITemplate
288                 {
289                         public IImage ()
290                                 : base () {
291
292                         }
293                         public IImage (string text)
294                                 : base () {
295                                 this.ImageUrl = text;
296                         }
297
298                         public void InstantiateIn (Control container) {
299                                 container.Controls.Add (this);
300                         }
301
302                 }
303
304                 private class Ibutton : Button, ITemplate
305                 {
306                         public Ibutton ()
307                                 : base () {
308                         }
309
310                         public Ibutton (string text)
311                                 : base () {
312                                 this.Text = text;
313                         }
314
315                         void ITemplate.InstantiateIn (Control container) {
316                                 container.Controls.Add (this);
317                         }
318                 }
319         }
320 }