2 // Tests for System.Web.UI.WebControls.TemplateFieldTest.cs
5 // Yoni Klein (yonik@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.
33 using System.Collections.Generic;
37 using System.Web.UI.WebControls;
39 using System.Collections;
40 using System.Collections.Specialized;
41 using NUnit.Framework;
47 namespace MonoTests.System.Web.UI.WebControls
49 class PokerTemplateField : TemplateField
52 public PokerTemplateField ()
57 public object SaveState () {
58 return SaveViewState ();
61 public void LoadState (object o) {
65 public StateBag StateBag {
66 get { return base.ViewState; }
69 public Control control () {
73 public void DoCopyProperties (DataControlField newField) {
74 base.CopyProperties (newField);
77 public DataControlField DoCreateField () {
78 return base.CreateField ();
83 public class TemplateFieldTest
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");
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");
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
134 [ExpectedException(typeof(NullReferenceException))]
135 public void TemplateField_InitializeCell_Null () {
136 PokerTemplateField field = new PokerTemplateField ();
137 field.InitializeCell (null, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
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");
154 public void TemplateField_FooterTemplate () {
155 PokerTemplateField field = new PokerTemplateField ();
156 DataControlFieldCell cell = new DataControlFieldCell (null);
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");
170 public void TemplateField_HeaderTemplate () {
171 PokerTemplateField field = new PokerTemplateField ();
172 DataControlFieldCell cell = new DataControlFieldCell (null);
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");
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");
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");
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");
248 [ExpectedException (typeof (NotSupportedException))]
249 public void TemplateField_ValidateSupportsCallbackException () {
250 TemplateField field = new TemplateField ();
251 field.Initialize (false, new Control ());
252 field.ValidateSupportsCallback ();
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");
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");
286 // A simple Template class to wrap an image.
287 public class IImage : Image, ITemplate
293 public IImage (string text)
295 this.ImageUrl = text;
298 public void InstantiateIn (Control container) {
299 container.Controls.Add (this);
304 private class Ibutton : Button, ITemplate
310 public Ibutton (string text)
315 void ITemplate.InstantiateIn (Control container) {
316 container.Controls.Add (this);