286 lines
10 KiB
C#
Raw Normal View History

//
// Tests for System.Web.UI.WebControls.ThemeTest.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.
// Additional resources :
// PageWithStyleSheet.aspx; PageWithStyleSheet.aspx.cs;RunTimeSetTheme.aspx;
// RunTimeSetTheme.aspx.cs; PageWithTheme.aspx; PageWithTheme.aspx.cs; Theme1.skin
using System;
using System.Drawing;
using System.IO;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using MyWebControl = System.Web.UI.WebControls;
using System.Reflection;
using NUnit.Framework;
using MonoTests.SystemWeb.Framework;
namespace MonoTests.System.Web.UI.WebControls
{
[Serializable]
[TestFixture]
public class ThemeTest
{
[TestFixtureSetUp]
public void Set_Up ()
{
WebTest.CopyResource (GetType (), "Theme1.skin", "App_Themes/Theme1/Theme1.skin");
WebTest.CopyResource (GetType (), "WizardTest.skin", "App_Themes/Theme1/WizardTest.skin");
WebTest.CopyResource (GetType (), "PageWithStyleSheet.aspx", "PageWithStyleSheet.aspx");
WebTest.CopyResource (GetType (), "PageWithTheme.aspx", "PageWithTheme.aspx");
WebTest.CopyResource (GetType (), "RunTimeSetTheme.aspx", "RunTimeSetTheme.aspx");
WebTest.CopyResource (GetType (), "UrlProperty.aspx", "UrlProperty.aspx");
WebTest.CopyResource (GetType (), "UrlProperty.ascx", "UrlProperty.ascx");
WebTest.CopyResource (GetType (), "UrlProperty.ascx.cs", "UrlProperty.ascx.cs");
}
[SetUp]
public void SetupTestCase ()
{
Thread.Sleep (100);
}
//Run on page with theme
[Test]
[Category ("NunitWeb")]
public void Theme_TestLabelTheme ()
{
WebTest t = new WebTest ("PageWithTheme.aspx");
t.Invoker = PageInvoker.CreateOnLoad (RenderLabelTest);
t.Run ();
}
public static void RenderLabelTest (Page p)
{
Assert.AreEqual (Color.Black,((MyWebControl.Label) p.FindControl ("Label")).BackColor, "Default Theme#1");
Assert.AreEqual (Color.Red, ((MyWebControl.Label) p.FindControl ("LabelRed")).BackColor, "Red Skin Theme#2");
Assert.AreEqual (Color.Yellow, ((MyWebControl.Label) p.FindControl ("LabelYellow")).BackColor, "Yellow Skin Theme#3");
Assert.AreEqual (Color.Black, ((MyWebControl.Label) p.FindControl ("LabelOverride")).BackColor, "Override Skin Theme#4");
}
[Test]
[Category ("NunitWeb")]
public void Theme_TestImageTheme ()
{
WebTest t = new WebTest ("PageWithTheme.aspx");
t.Invoker = PageInvoker.CreateOnLoad (RenderImageTest);
t.Run ();
}
public static void RenderImageTest (Page p)
{
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("Image")).ImageUrl.IndexOf ("myimageurl") >= 0, "Default Theme#1");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageRed")).ImageUrl.IndexOf ("myredimageurl") >= 0, "RedImage Theme#2");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageYellow")).ImageUrl.IndexOf ("myyellowimageurl") >= 0, "YellowImage Theme#3");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageOverride")).ImageUrl.IndexOf ("myimageurl") >= 0, "OverrideImage Theme#3");
}
// Run on page with StyleSheet
[Test]
[Category ("NunitWeb")]
public void Theme_TestLabelStyleSheet ()
{
WebTest t = new WebTest ("PageWithStyleSheet.aspx");
t.Invoker = PageInvoker.CreateOnLoad (StyleSheetRenderLabelTest);
t.Run ();
}
public static void StyleSheetRenderLabelTest (Page p)
{
Assert.AreEqual (Color.Black, ((MyWebControl.Label) p.FindControl ("Label")).BackColor, "Default Theme#1");
Assert.AreEqual (Color.Red, ((MyWebControl.Label) p.FindControl ("LabelRed")).BackColor, "Red Skin Theme#2");
Assert.AreEqual (Color.Yellow, ((MyWebControl.Label) p.FindControl ("LabelYellow")).BackColor, "Yellow Skin Theme#3");
Assert.AreEqual (Color.White, ((MyWebControl.Label) p.FindControl ("LabelOverride")).BackColor, "Override Skin Theme#4");
}
[Test]
[Category ("NunitWeb")]
public void Theme_TestImageStyleSheet ()
{
WebTest t = new WebTest ("PageWithStyleSheet.aspx");
t.Invoker = PageInvoker.CreateOnLoad (StyleSheetRenderImageTest);
t.Run ();
}
public static void StyleSheetRenderImageTest (Page p)
{
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("Image")).ImageUrl.IndexOf ("myimageurl") >= 0, "Default Theme#1");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageRed")).ImageUrl.IndexOf ("myredimageurl") >= 0, "RedImage Theme#2");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageYellow")).ImageUrl.IndexOf ("myyellowimageurl") >= 0, "YellowImage Theme#3");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageOverride")).ImageUrl.IndexOf ("overridedurl") >= 0, "OverrideImage Theme#3");
}
[Test]
[Category ("NunitWeb")]
public void Theme_TestRuntimeSetTheme ()
{
PageDelegates p = new PageDelegates ();
p.PreInit = RuntimeSetThemePreInit;
p.Load = RuntimeSetThemeLoad;
WebTest t = new WebTest ("RunTimeSetTheme.aspx");
t.Invoker = new PageInvoker (p);
t.Run ();
}
public static void RuntimeSetThemePreInit (Page p)
{
p.Theme = "Theme1";
}
public static void RuntimeSetThemeLoad (Page p)
{
Assert.AreEqual (Color.Black, ((MyWebControl.Label) p.FindControl ("Label")).BackColor, "Default Theme#1");
Assert.AreEqual (Color.Red, ((MyWebControl.Label) p.FindControl ("LabelRed")).BackColor, "Red Skin Theme#2");
Assert.AreEqual (Color.Yellow, ((MyWebControl.Label) p.FindControl ("LabelYellow")).BackColor, "Yellow Skin Theme#3");
Assert.AreEqual (Color.Black, ((MyWebControl.Label) p.FindControl ("LabelOverride")).BackColor, "Override Skin Theme#4");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("Image")).ImageUrl.IndexOf ("myimageurl") >= 0, "Default Theme#1");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageRed")).ImageUrl.IndexOf ("myredimageurl") >= 0, "RedImage Theme#2");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageYellow")).ImageUrl.IndexOf ("myyellowimageurl") >= 0, "YellowImage Theme#3");
Assert.IsTrue (((MyWebControl.Image) p.FindControl ("ImageOverride")).ImageUrl.IndexOf ("myimageurl") >= 0, "OverrideImage Theme#3");
}
[Test]
[Category ("NunitWeb")]
[ExpectedException (typeof (HttpException))]
public void Theme_SetThemeException ()
{
string page=new WebTest (PageInvoker.CreateOnPreInit (SetThemeExeption)).Run ();
Assert.IsTrue (page.IndexOf("System.Web.HttpException") >= 0, "System.Web.HttpException was expected, actual result: "+page);
}
//// Delegate running on Page Load , only before PreInit possible set Theme on running time !
//[Test]
//[Category ("NunitWeb")]
////Use Assert.Fail to print the actual result
////[ExpectedException (typeof (InvalidOperationException))]
//[Category ("NotWorking")]
//public void Theme_SetThemeException ()
//{
// try {
// string res=Helper.Instance.RunInPagePreInit (SetThemeExeption);
// Assert.Fail ("InvalidOperationException was expected. Result: "+res);
// }
// catch (InvalidOperationException e) {
// //swallow the expected exception
// }
//}
public static void SetThemeExeption (Page p)
{
p.Theme = "InvalidTheme1";
}
[Test]
[Category ("NunitWeb")]
public void Theme_EnableTheming ()
{
PageDelegates pd = new PageDelegates ();
pd.PreInit = new PageDelegate (SetTheme1);
pd.Load = new PageDelegate (Theme1Load);
PageInvoker pi = new PageInvoker (pd);
string page = new WebTest (pi).Run ();
Assert.IsTrue (page.IndexOf ("testing") < 0, "Theme_EnableTheming");
}
public static void Theme1Load (Page p)
{
Table t = new Table ();
TableRow tr = new TableRow ();
TableCell cell = new TableCell ();
cell.Controls.Add (new Button ());
tr.Cells.Add (cell);
t.Rows.Add (tr);
t.EnableTheming = false;
p.Form.Controls.Add (t);
}
public static void SetTheme1 (Page p)
{
p.Theme = "Theme1";
}
[Test]
[Category ("NunitWeb")]
public void Theme_EnableThemingChild ()
{
PageDelegates pd = new PageDelegates ();
pd.PreInit = new PageDelegate (SetTheme1);
pd.Load = new PageDelegate (Theme1ChildLoad);
PageInvoker pi = new PageInvoker (pd);
string page = new WebTest (pi).Run ();
Assert.IsTrue (page.IndexOf ("testing") > 0, "Theme_EnableThemingChild");
}
public static void Theme1ChildLoad (Page p)
{
Table t = new Table ();
TableRow tr = new TableRow ();
TableCell cell = new TableCell ();
cell.Controls.Add (new Button ());
tr.Cells.Add (cell);
t.Rows.Add (tr);
t.EnableTheming = false;
cell.EnableTheming = true;
p.Form.Controls.Add (t);
}
[TestFixtureTearDown]
public void TearDown ()
{
Thread.Sleep (100);
WebTest.Unload ();
Thread.Sleep (100);
}
[Test]
[Category("NunitWeb")]
public void UrlPropertyTest ()
{
string res = new WebTest ("UrlProperty.aspx").Run ();
Assert.IsTrue (res.IndexOf ("Property1 = testProp1") != -1,
"Property1 should be assigned as is, actual result: "+res);
Assert.IsTrue (res.IndexOf ("UrlProperty2 = ~/App_Themes/Theme1/testProp2") != -1,
"UrlProperty2 should be assigned including theme subfolder, actual result: "+res);
}
}
}