323 lines
12 KiB
C#
323 lines
12 KiB
C#
|
//
|
||
|
// Tests for System.Web.UI.WebControls.TemplateFieldTest.cs
|
||
|
//
|
||
|
// Author:
|
||
|
// Yoni Klein (yonik@mainsoft.com)
|
||
|
//
|
||
|
//
|
||
|
// Copyright (C) 2005 Novell, Inc (http://www.novell.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.
|
||
|
|
||
|
|
||
|
#if NET_2_0
|
||
|
|
||
|
|
||
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Text;
|
||
|
using System.Web;
|
||
|
using System.Web.UI;
|
||
|
using System.Web.UI.WebControls;
|
||
|
using System.IO;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Specialized;
|
||
|
using NUnit.Framework;
|
||
|
using System.Data;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
namespace MonoTests.System.Web.UI.WebControls
|
||
|
{
|
||
|
class PokerTemplateField : TemplateField
|
||
|
{
|
||
|
// View state Stuff
|
||
|
public PokerTemplateField ()
|
||
|
: base () {
|
||
|
TrackViewState ();
|
||
|
}
|
||
|
|
||
|
public object SaveState () {
|
||
|
return SaveViewState ();
|
||
|
}
|
||
|
|
||
|
public void LoadState (object o) {
|
||
|
LoadViewState (o);
|
||
|
}
|
||
|
|
||
|
public StateBag StateBag {
|
||
|
get { return base.ViewState; }
|
||
|
}
|
||
|
|
||
|
public Control control () {
|
||
|
return base.Control;
|
||
|
}
|
||
|
|
||
|
public void DoCopyProperties (DataControlField newField) {
|
||
|
base.CopyProperties (newField);
|
||
|
}
|
||
|
|
||
|
public DataControlField DoCreateField () {
|
||
|
return base.CreateField ();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[TestFixture]
|
||
|
public class TemplateFieldTest
|
||
|
{
|
||
|
[Test]
|
||
|
public void TemplateField_DefaultProperty () {
|
||
|
TemplateField field = new TemplateField ();
|
||
|
Assert.AreEqual (null, field.AlternatingItemTemplate, "AlternatingItemTemplate");
|
||
|
Assert.AreEqual (true, field.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
|
||
|
Assert.AreEqual (null, field.EditItemTemplate, "EditItemTemplate");
|
||
|
Assert.AreEqual (null, field.FooterTemplate, "FooterTemplate");
|
||
|
Assert.AreEqual (null, field.HeaderTemplate, "HeaderTemplate");
|
||
|
Assert.AreEqual (null, field.InsertItemTemplate, "InsertItemTemplate");
|
||
|
Assert.AreEqual (null, field.ItemTemplate, "ItemTemplate");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_AssignProperty () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
field.AlternatingItemTemplate = new Ibutton ();
|
||
|
Assert.IsNotNull (field.AlternatingItemTemplate, "AlternatingItemTemplateAssigned");
|
||
|
Assert.AreEqual (typeof (Ibutton), field.AlternatingItemTemplate.GetType (), "AlternatingItemTemplateType");
|
||
|
field.ConvertEmptyStringToNull = false;
|
||
|
Assert.AreEqual (false, field.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
|
||
|
field.EditItemTemplate = new IImage ();
|
||
|
Assert.IsNotNull (field.EditItemTemplate, "EditItemTemplateAssigning");
|
||
|
Assert.AreEqual (typeof (IImage), field.EditItemTemplate.GetType (), "EditItemTemplateType");
|
||
|
field.FooterTemplate = new Ibutton ();
|
||
|
Assert.IsNotNull (field.FooterTemplate, "FooterTemplateAssigning");
|
||
|
Assert.AreEqual (typeof (Ibutton), field.FooterTemplate.GetType (), "FooterTemplateType");
|
||
|
field.HeaderTemplate = new IImage ();
|
||
|
Assert.IsNotNull (field.HeaderTemplate, "HeaderTemplateAssigning");
|
||
|
Assert.AreEqual (typeof (IImage), field.HeaderTemplate.GetType (), "HeaderTemplateType");
|
||
|
field.InsertItemTemplate = new Ibutton ();
|
||
|
Assert.IsNotNull (field.InsertItemTemplate, "InsertItemTemplateAssigning");
|
||
|
Assert.AreEqual (typeof (Ibutton), field.InsertItemTemplate.GetType (), "InsertItemTemplateType");
|
||
|
field.ItemTemplate = new IImage ();
|
||
|
Assert.IsNotNull (field.ItemTemplate, "ItemTemplateAssigning");
|
||
|
Assert.AreEqual (typeof (IImage), field.ItemTemplate.GetType (), "ItemTemplateType");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_ExtractValuesFromCell () {
|
||
|
TemplateField field = new TemplateField ();
|
||
|
OrderedDictionary dictionrary = new OrderedDictionary ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
field.ExtractValuesFromCell (dictionrary, cell, DataControlRowState.Normal, true);
|
||
|
Assert.AreEqual (0, dictionrary.Count, "ExtractValuesFromCellNoTemplates");
|
||
|
// This is testing only base functionality and flow with no exceptions
|
||
|
// The rest functionality will tested on integration test
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException(typeof(NullReferenceException))]
|
||
|
public void TemplateField_InitializeCell_Null () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
field.InitializeCell (null, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_InitializeCell () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual (" ", cell.Text, "InitializeCellEmpty");
|
||
|
field.ItemTemplate = new IImage ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual ("", cell.Text, "InitializeCellWithItemTemplate");
|
||
|
Assert.AreEqual (1, cell.Controls.Count, "InitializeCellWithItemTemplate#1");
|
||
|
Assert.AreEqual ("test", ((IImage) cell.Controls [0]).ImageUrl, "InitializeCellWithItemTemplate#2");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_FooterTemplate () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
cell.Text = "text";
|
||
|
field.InitializeCell (cell, DataControlCellType.Footer, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual (" ", cell.Text, "#1");
|
||
|
Assert.AreEqual (0, cell.Controls.Count, "#2");
|
||
|
field.FooterTemplate = new Ibutton ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.Footer, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual ("", cell.Text, "#3");
|
||
|
Assert.AreEqual (1, cell.Controls.Count, "#4");
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#5");
|
||
|
}
|
||
|
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_HeaderTemplate () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
cell.Text = "text";
|
||
|
field.InitializeCell (cell, DataControlCellType.Header, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual (" ", cell.Text, "#1");
|
||
|
Assert.AreEqual (0, cell.Controls.Count, "#2");
|
||
|
field.HeaderTemplate = new Ibutton ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.Header, DataControlRowState.Normal, 0);
|
||
|
Assert.AreEqual ("", cell.Text, "#3");
|
||
|
Assert.AreEqual (1, cell.Controls.Count, "#4");
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#5");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_EditItemTemplate () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = new Ibutton ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.EditItemTemplate = new Ibutton ("edit");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
|
||
|
Assert.AreEqual ("edit", ((Ibutton) cell.Controls [0]).Text, "#2");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = null;
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
|
||
|
Assert.IsTrue (cell.Controls.Count == 0, "#4");
|
||
|
Assert.AreEqual (" ", cell.Text, "#5");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_InsertItemTemplate () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = new Ibutton ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.InsertItemTemplate = new Ibutton ("insert");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
|
||
|
Assert.AreEqual ("insert", ((Ibutton) cell.Controls [0]).Text, "#2");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = null;
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
|
||
|
Assert.IsTrue (cell.Controls.Count == 0, "#4");
|
||
|
Assert.AreEqual (" ", cell.Text, "#5");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_AlternatingItemTemplate () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlFieldCell cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = new Ibutton ("test");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#1");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.AlternatingItemTemplate = new Ibutton ("Alternate");
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Alternate, 0);
|
||
|
Assert.AreEqual ("Alternate", ((Ibutton) cell.Controls [0]).Text, "#2");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Insert, 0);
|
||
|
Assert.AreEqual ("test", ((Ibutton) cell.Controls [0]).Text, "#3");
|
||
|
cell = new DataControlFieldCell (null);
|
||
|
field.ItemTemplate = null;
|
||
|
field.InitializeCell (cell, DataControlCellType.DataCell, DataControlRowState.Edit, 0);
|
||
|
Assert.IsTrue (cell.Controls.Count == 0, "#4");
|
||
|
Assert.AreEqual (" ", cell.Text, "#5");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[ExpectedException (typeof (NotSupportedException))]
|
||
|
public void TemplateField_ValidateSupportsCallbackException () {
|
||
|
TemplateField field = new TemplateField ();
|
||
|
field.Initialize (false, new Control ());
|
||
|
field.ValidateSupportsCallback ();
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_Copy () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
TemplateField copy = new TemplateField ();
|
||
|
field.ConvertEmptyStringToNull = true;
|
||
|
field.AlternatingItemTemplate = new Ibutton ();
|
||
|
field.ItemTemplate = new Ibutton ();
|
||
|
field.FooterTemplate = new Ibutton ();
|
||
|
field.EditItemTemplate = new Ibutton ();
|
||
|
field.HeaderTemplate = new Ibutton ();
|
||
|
field.InsertItemTemplate = new Ibutton ();
|
||
|
field.DoCopyProperties (copy);
|
||
|
Assert.AreEqual (true, copy.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
|
||
|
Assert.IsNotNull (copy.AlternatingItemTemplate, "AlternatingItemTemplate");
|
||
|
Assert.IsNotNull (copy.ItemTemplate, "ItemTemplate");
|
||
|
Assert.IsNotNull (copy.FooterTemplate, "FooterTemplate");
|
||
|
Assert.IsNotNull (copy.EditItemTemplate, "EditItemTemplate");
|
||
|
Assert.IsNotNull (copy.HeaderTemplate, "HeaderTemplate");
|
||
|
Assert.IsNotNull (copy.InsertItemTemplate, "InsertItemTemplate");
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void TemplateField_CreateField () {
|
||
|
PokerTemplateField field = new PokerTemplateField ();
|
||
|
DataControlField newfield = field.DoCreateField ();
|
||
|
if (!(newfield is TemplateField)) {
|
||
|
Assert.Fail ("New TemplateField was not created");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// A simple Template class to wrap an image.
|
||
|
public class IImage : Image, ITemplate
|
||
|
{
|
||
|
public IImage ()
|
||
|
: base () {
|
||
|
|
||
|
}
|
||
|
public IImage (string text)
|
||
|
: base () {
|
||
|
this.ImageUrl = text;
|
||
|
}
|
||
|
|
||
|
public void InstantiateIn (Control container) {
|
||
|
container.Controls.Add (this);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
private class Ibutton : Button, ITemplate
|
||
|
{
|
||
|
public Ibutton ()
|
||
|
: base () {
|
||
|
}
|
||
|
|
||
|
public Ibutton (string text)
|
||
|
: base () {
|
||
|
this.Text = text;
|
||
|
}
|
||
|
|
||
|
void ITemplate.InstantiateIn (Control container) {
|
||
|
container.Controls.Add (this);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|