a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
288 lines
10 KiB
C#
288 lines
10 KiB
C#
//
|
|
// 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
|
|
|
|
#if NET_2_0
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
#endif
|