Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

796 lines
23 KiB
C#

//
// Tests for System.Web.UI.WebControls.Style.cs
//
// Author:
// Peter Dennis Bartok (pbartok@novell.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.
//
using NUnit.Framework;
using System;
using System.Collections;
using System.Drawing;
using System.IO;
using System.Globalization;
using refl = System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MonoTests.SystemWeb.Framework;
using MonoTests.stand_alone.WebHarness;
namespace MonoTests.System.Web.UI.WebControls
{
public class StyleTestClass : Style {
public StyleTestClass ()
: base ()
{
}
public StyleTestClass (StateBag bag)
: base (bag)
{
}
public StateBag StateBag {
get { return base.ViewState; }
}
public bool Empty {
get { return base.IsEmpty; }
}
public bool IsTracking {
get { return base.IsTrackingViewState; }
}
public void SetCssClass(string name) {
Type style = typeof (Style);
if (style != null) {
refl.MethodInfo methodInfo = style.GetMethod("SetRegisteredCssClass",refl.BindingFlags.NonPublic | refl.BindingFlags.Instance);
if (methodInfo != null) {
object[] parameters = new object[] {name};
methodInfo.Invoke(this, parameters);
}
}
}
public override void AddAttributesToRender (HtmlTextWriter writer, WebControl owner) {
base.AddAttributesToRender (writer, owner);
}
protected override void FillStyleAttributes (CssStyleCollection attributes, IUrlResolutionService urlResolver) {
base.FillStyleAttributes (attributes, urlResolver);
attributes.Add ("FillStyleAttributes", "FillStyleAttributes");
}
public string[] KeyValuePairs() {
IEnumerator e;
string[] result;
int item;
e = ViewState.GetEnumerator();
result = new string[ViewState.Keys.Count];
item = 0;
while (e.MoveNext()) {
DictionaryEntry d;
StateItem si;
d = (DictionaryEntry)e.Current;
si = (StateItem)d.Value;
if (si.Value is String[]) {
string[] values;
values = (string[]) si.Value;
result[item] = d.Key.ToString() + "=";
if (values.Length > 0) {
result[item] += values[0];
for (int i = 1; i < values.Length; i++) {
result[item] += ", " + values[i];
}
}
} else {
result[item] = d.Key.ToString() + "=" + si.Value;
}
item++;
}
return result;
}
public bool SetBitCalledFlag = false;
public int SetBitCalledValue = 0;
protected internal override void SetBit (int bit) {
SetBitCalledFlag = true;
SetBitCalledValue = bit;
base.SetBit (bit);
}
}
[TestFixture]
public class StyleTest {
[TestFixtureTearDown]
public void TearDown ()
{
WebTest.Unload ();
}
private static HtmlTextWriter GetWriter () {
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
return new HtmlTextWriter (sw);
}
private void SetSomeValues(Style s) {
s.BackColor = Color.Red;
s.ForeColor = Color.Green;
s.Width = new Unit(10);
s.Font.Bold = true;
}
private void SetAllValues(Style s) {
s.BackColor = Color.Red;
s.BorderColor = Color.Green;
s.BorderStyle = BorderStyle.None;
s.BorderWidth = new Unit(1);
s.CssClass = "Boing";
s.Font.Bold = true;
s.Font.Italic = true;
s.Font.Names = new string[2] {"namelist1", "namelist2"};
//s.Font.Name = string.Empty;
//s.Font.Names = new string[0];
//Console.WriteLine("Font name after setting name: {0}", s.Font.ToString());
s.Font.Overline = true;
s.Font.Size = new FontUnit(1);
//Console.WriteLine("Font name after setting size: {0}", s.Font.ToString());
s.Font.Strikeout = true;
s.Font.Underline = true;
s.ForeColor = Color.Blue;
s.Height = new Unit(2);
s.Width = new Unit(3);
}
private bool IsEqual(object[] a1, object[] a2, string assertion) {
int matches;
bool[] notfound;
if (a1.Length != a2.Length) {
if (assertion != null) {
Assert.Fail(assertion + "( different length )");
}
return false;
}
matches = 0;
notfound = new bool[a1.Length];
for (int i = 0; i < a1.Length; i++) {
for (int j = 0; j < a2.Length; j++) {
if (a1[i].Equals(a2[j])) {
matches++;
break;
}
}
if ((assertion != null) && (matches != i+1)) {
Assert.Fail(assertion + "( missing " + a1[i].ToString() + " )");
}
}
return matches == a1.Length;
}
[Test]
public void Style_Defaults ()
{
Style s = new Style ();
Assert.AreEqual (s.BackColor, Color.Empty, "Default1");
Assert.AreEqual (s.BorderColor, Color.Empty, "Default22");
Assert.AreEqual (s.BorderStyle, BorderStyle.NotSet, "Default3");
Assert.AreEqual (s.BorderWidth, Unit.Empty, "Default4");
Assert.AreEqual (s.CssClass, string.Empty, "Default5");
Assert.AreEqual (s.ForeColor, Color.Empty, "Default6");
Assert.AreEqual (s.Height, Unit.Empty, "Default7");
Assert.AreEqual (s.Width, Unit.Empty, "Default8");
}
[Test]
public void Style_ViewState () {
Style s = new Style ();
((IStateManager) s).TrackViewState ();
SetSomeValues (s);
object state = ((IStateManager) s).SaveViewState ();
Style copy = new Style ();
((IStateManager) copy).LoadViewState (state);
Assert.AreEqual (Color.Red, copy.BackColor, "ViewState1");
Assert.AreEqual (Color.Green, copy.ForeColor, "ViewState2");
Assert.AreEqual (new Unit (10), copy.Width, "ViewState3");
Assert.AreEqual (true, copy.Font.Bold, "ViewState4");
}
[Test]
public void Style_ViewState2 () {
Style s = new Style (null);
((IStateManager) s).TrackViewState ();
SetSomeValues (s);
object state = ((IStateManager) s).SaveViewState ();
Assert.AreEqual (null, state, "ViewState2");
}
[Test]
public void Style_ViewState3 () {
Style s = new Style (new StateBag());
((IStateManager) s).TrackViewState ();
SetSomeValues (s);
object state = ((IStateManager) s).SaveViewState ();
Assert.AreEqual (null, state, "ViewState3");
}
[Test]
public void Style_State () {
string[] keyvalues;
string[] expect1 = {
"BorderStyle=None",
"Font_Bold=True",
"Font_Italic=True",
"Height=2px",
"CssClass=Boing",
"BorderWidth=1px",
"ForeColor=Color [Blue]",
"Font_Size=1pt",
"Font_Overline=True",
"Width=3px",
"BorderColor=Color [Green]",
"Font_Names=namelist1, namelist2",
"Font_Underline=True",
"BackColor=Color [Red]",
"Font_Strikeout=True" };
string[] expect2 = {
"BorderStyle=None",
"Font_Bold=True",
"Font_Italic=True",
"Height=2px",
"CssClass=Boing",
"BorderWidth=1px",
"ForeColor=Color [Blue]",
"Font_Size=1pt",
"Font_Overline=True",
"Width=3px",
"BorderColor=Color [Green]",
"Font_Underline=True",
"BackColor=Color [Red]",
"Font_Strikeout=True" };
string[] expect3 = {
"BorderStyle=None",
"Font_Bold=True",
"Font_Italic=True",
"Height=2px",
"CssClass=Boing",
"BorderWidth=1px",
"ForeColor=Color [Blue]",
"Font_Size=1pt",
"Font_Overline=True",
"Width=3px",
"BorderColor=Color [Green]",
"Font_Names=",
"Font_Underline=True",
"BackColor=Color [Red]",
"Font_Strikeout=True" };
StyleTestClass s;
StyleTestClass copy;
s = new StyleTestClass();
SetAllValues(s);
keyvalues = s.KeyValuePairs();
Assert.AreEqual (15, keyvalues.Length, "State1");
IsEqual(keyvalues, expect1, "State2");
s.Font.Name = string.Empty;
keyvalues = s.KeyValuePairs();
Assert.AreEqual (expect2.Length, keyvalues.Length, "State3");
IsEqual(keyvalues, expect2, "State4");
s.Font.Names = null;
keyvalues = s.KeyValuePairs();
Assert.AreEqual (expect2.Length, keyvalues.Length, "State5");
IsEqual(keyvalues, expect2, "State6");
copy = new StyleTestClass();
copy.CopyFrom(s);
keyvalues = copy.KeyValuePairs();
Assert.AreEqual (expect3.Length, keyvalues.Length, "State7");
IsEqual(keyvalues, expect3, "State8");
Assert.AreEqual (false, copy.IsTracking, "State9");
}
[Test]
public void Style_Merge ()
{
Style s = new Style ();
Style copy = new Style ();
SetSomeValues(s);
copy.ForeColor = Color.Blue;
copy.MergeWith(s);
Assert.AreEqual (Color.Red, copy.BackColor, "Merge1");
Assert.AreEqual (Color.Blue, copy.ForeColor, "Merge2");
// Don't fail here
copy.MergeWith(null);
}
[Test]
public void Style_Copy ()
{
Style s = new Style ();
Style copy = new Style ();
SetSomeValues(s);
copy.CopyFrom (s);
Assert.AreEqual (Color.Red, s.BackColor, "Copy1");
}
[Test]
public void Style_CssClass ()
{
StyleTestClass s = new StyleTestClass ();
Assert.AreEqual (String.Empty, s.CssClass, "#A1");
s.CssClass = "css1";
Assert.AreEqual ("css1", s.CssClass, "#A2");
s.CssClass = String.Empty;
Assert.AreEqual (String.Empty, s.CssClass, "#A3");
s.CssClass = null;
Assert.AreEqual (String.Empty, s.CssClass, "#A4");
}
[Test]
[ExpectedException (typeof (ArgumentOutOfRangeException))]
public void Style_BorderStyle_InvalidValue1 ()
{
StyleTestClass s = new StyleTestClass ();
s.BorderStyle = (BorderStyle)(BorderStyle.NotSet - 1);
}
[Test]
[ExpectedException (typeof (ArgumentOutOfRangeException))]
public void Style_BorderStyle_InvalidValue2 ()
{
StyleTestClass s = new StyleTestClass ();
s.BorderStyle = (BorderStyle)(BorderStyle.Outset + 1);
}
[Test]
public void Style_RegisteredCssClass ()
{
StyleTestClass s = new StyleTestClass ();
Assert.AreEqual (String.Empty, s.RegisteredCssClass, "Css1");
s.SetCssClass ("blah");
Assert.AreEqual ("blah", s.RegisteredCssClass, "Css2");
s.BackColor = Color.AliceBlue;
Assert.AreEqual ("blah", s.RegisteredCssClass, "Css3");
}
[Test]
[Category ("NunitWeb")]
public void Style_AddRegisteredCssClassAttribute () {
new WebTest (PageInvoker.CreateOnLoad (Style_AddRegisteredCssClassAttribute_Load)).Run ();
}
public static void Style_AddRegisteredCssClassAttribute_Load (Page p) {
StringWriter sw = new StringWriter ();
HtmlTextWriter tw = new HtmlTextWriter (sw);
Style s = new Style ();
s.CssClass = "MyClass";
s.BackColor = Color.AliceBlue;
s.AddAttributesToRender (tw);
tw.RenderBeginTag ("span");
tw.RenderEndTag ();
Assert.AreEqual (true, sw.ToString ().Contains ("class=\"MyClass\""), "AddRegisteredCssClassAttribute#1");
Assert.AreEqual (true, sw.ToString ().Contains ("style"), "AddRegisteredCssClassAttribute#2");
sw = new StringWriter ();
tw = new HtmlTextWriter (sw);
s = new Style ();
s.BackColor = Color.AliceBlue;
p.Header.StyleSheet.RegisterStyle (s, p);
s.AddAttributesToRender (tw);
tw.RenderBeginTag ("span");
tw.RenderEndTag ();
Assert.AreEqual (true, sw.ToString ().Contains ("class"), "AddRegisteredCssClassAttribute#3");
Assert.AreEqual (false, sw.ToString ().Contains ("style"), "AddRegisteredCssClassAttribute#4");
sw = new StringWriter ();
tw = new HtmlTextWriter (sw);
s = new Style ();
s.BackColor = Color.AliceBlue;
s.CssClass = "MyClass";
p.Header.StyleSheet.RegisterStyle (s, p);
s.AddAttributesToRender (tw);
tw.RenderBeginTag ("span");
tw.RenderEndTag ();
Assert.AreEqual (sw.ToString ().LastIndexOf ("class"), sw.ToString ().IndexOf ("class"), "AddRegisteredCssClassAttribute#5");
Assert.AreEqual (false, sw.ToString ().Contains ("style"), "AddRegisteredCssClassAttribute#6");
Assert.AreEqual (true, sw.ToString ().Contains ("class=\"MyClass "), "AddRegisteredCssClassAttribute#7");
s = new Style ();
p.Header.StyleSheet.RegisterStyle (s, p);
Assert.AreEqual (false, s.IsEmpty, "AddRegisteredCssClassAttribute#8");
}
[Test]
public void Style_AddAttributesToRender_use_FillStyleAttributes () {
StringWriter sw = new StringWriter ();
HtmlTextWriter tw = new HtmlTextWriter (sw);
StyleTestClass s = new StyleTestClass ();
s.AddAttributesToRender (tw);
tw.RenderBeginTag ("span");
tw.RenderEndTag ();
string origHtml = "<span style=\"FillStyleAttributes:FillStyleAttributes;\"></span>";
string renderedHtml = sw.ToString ();
HtmlDiff.AssertAreEqual (origHtml, renderedHtml, "AddAttributesToRender_use_FillStyleAttributes#2");
}
[Test]
public void Style_GetStyleAttributes () {
Style s;
CssStyleCollection css;
s = new Style ();
css = s.GetStyleAttributes (null);
Assert.AreEqual (0, css.Count, "GetStyleAttributes#1");
s.Font.Bold = true;
s.Font.Italic = true;
s.Font.Size = 10;
s.Font.Names = new string [] { "Arial", "Veranda" };
s.Font.Overline = true;
s.Font.Strikeout = true;
s.Font.Underline = true;
css = s.GetStyleAttributes (null);
Assert.AreEqual ("bold", css ["font-weight"], "GetStyleAttributes#2");
Assert.AreEqual ("italic", css ["font-style"], "GetStyleAttributes#3");
Assert.AreEqual ("10pt", css ["font-size"], "GetStyleAttributes#4");
Assert.AreEqual ("Arial,Veranda", css ["font-family"], "GetStyleAttributes#5");
Assert.AreEqual (true, css ["text-decoration"].Contains ("overline"), "GetStyleAttributes#6");
Assert.AreEqual (true, css ["text-decoration"].Contains ("line-through"), "GetStyleAttributes#7");
Assert.AreEqual (true, css ["text-decoration"].Contains ("underline"), "GetStyleAttributes#8");
s.Font.Names = null;
css = s.GetStyleAttributes (null);
Assert.AreEqual (null, css ["font-family"], "GetStyleAttributes#9");
s.Font.Name = "Arial, Veranda";
css = s.GetStyleAttributes (null);
Assert.AreEqual ("Arial, Veranda", css ["font-family"], "GetStyleAttributes#10");
s.Font.Name = "";
css = s.GetStyleAttributes (null);
Assert.AreEqual (null, css ["font-family"], "GetStyleAttributes#11");
s.Font.Bold = false;
s.Font.Italic = false;
s.Font.Size = FontUnit.Empty;
s.Font.Overline = false;
s.Font.Strikeout = false;
s.Font.Underline = false;
css = s.GetStyleAttributes (null);
Assert.AreEqual ("normal", css ["font-weight"], "GetStyleAttributes#12");
Assert.AreEqual ("normal", css ["font-style"], "GetStyleAttributes#13");
Assert.AreEqual (null, css ["font-size"], "GetStyleAttributes#14");
Assert.AreEqual ("none", css ["text-decoration"], "GetStyleAttributes#15");
s.Reset ();
css = s.GetStyleAttributes (null);
Assert.AreEqual (0, css.Count, "GetStyleAttributes#16");
s.Reset ();
s.Font.Underline = false;
css = s.GetStyleAttributes (null);
Assert.AreEqual ("none", css ["text-decoration"], "GetStyleAttributes#17");
s.Reset ();
s.BorderWidth = 1;
s.BorderStyle = BorderStyle.Dashed;
css = s.GetStyleAttributes (null);
Assert.AreEqual ("Dashed", css ["border-style"], "GetStyleAttributes#18");
Assert.AreEqual ("1px", css ["border-width"], "GetStyleAttributes#19");
s.BorderStyle = BorderStyle.NotSet;
css = s.GetStyleAttributes (null);
Assert.AreEqual ("solid", css ["border-style"], "GetStyleAttributes#20");
Assert.AreEqual ("1px", css ["border-width"], "GetStyleAttributes#21");
s.BorderWidth = 0;
css = s.GetStyleAttributes (null);
Assert.AreEqual (null, css ["border-style"], "GetStyleAttributes#22");
Assert.AreEqual ("0px", css ["border-width"], "GetStyleAttributes#23");
}
[Test]
public void StyleFonts () {
Style s = new Style ();
Assert.AreEqual(new string[0], s.Font.Names, "F1");
s.Font.Name = string.Empty;
Assert.AreEqual(new string[0], s.Font.Names, "F2");
s.Font.Names = null;
Assert.AreEqual(new string[0], s.Font.Names, "F3");
}
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void NullException1 ()
{
Style s = new Style ();
s.Font.Name = null;
}
private Style GetStyle ()
{
Style s = new Style ();
s.BackColor = Color.Aqua;
s.BorderWidth = Unit.Pixel (1);
return s;
}
private void CheckStyle (Style s)
{
Assert.AreEqual (Color.Aqua, s.BackColor, "BackColor");
Assert.AreEqual (Unit.Pixel (1), s.BorderWidth, "BorderWidth");
}
[Test]
public void CopyFrom_Null ()
{
Style s = GetStyle ();
s.CopyFrom (null);
CheckStyle (s);
}
[Test]
public void CopyFrom_Self ()
{
Style s = GetStyle ();
s.CopyFrom (s);
CheckStyle (s);
}
[Test]
public void CopyFrom_Empty ()
{
StyleTestClass s = new StyleTestClass ();
s.CopyFrom (new Style ());
Assert.IsTrue (s.Empty, "Empty");
}
[Test]
public void CopyFrom ()
{
Style c = GetStyle ();
Style s = GetStyle ();
c.BorderColor = Color.Azure;
c.BorderWidth = Unit.Empty;
c.CopyFrom (s);
CheckStyle (c);
Assert.AreEqual (Color.Azure, c.BorderColor, "BorderColor");
// CopyFrom doesn't do a Reset
}
[Test]
public void CopyFrom_IsEmpty ()
{
StyleTestClass c = new StyleTestClass ();
Style s = GetStyle ();
s.BorderColor = Color.Azure;
s.BorderWidth = Unit.Empty;
c.CopyFrom (s);
Assert.IsFalse (c.Empty, "IsEmpty");
}
[Test]
public void Constructor_StateBag_Null ()
{
StyleTestClass s = new StyleTestClass (null);
Assert.IsNotNull (s.StateBag, "StateBag");
s.CssClass = "mono";
Assert.AreEqual ("mono", s.CssClass, "CssClass");
}
[Test]
public void Empty ()
{
StyleTestClass s = new StyleTestClass ();
Assert.IsTrue (s.Empty, "Empty");
Assert.AreEqual (0, s.StateBag.Count, "Count");
s.StateBag["Mono"] = "go!";
Assert.IsTrue (s.Empty, "Still Empty");
Assert.AreEqual (1, s.StateBag.Count, "Count");
}
[Test]
public void FontInfo_Empty ()
{
FontInfo f;
StyleTestClass s = new StyleTestClass ();
f = s.Font;
Assert.IsTrue (s.Empty, "Empty after getter");
s.Font.Name = "Arial";
Assert.IsFalse (s.Empty, "No longer empty");
}
[Test]
public void SetBitCalledWhenSetProperty () {
StyleTestClass s = new StyleTestClass ();
s.SetBitCalledFlag = false;
s.BackColor = Color.Aqua;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : BackColor");
Assert.AreEqual (0x08, s.SetBitCalledValue, "SetBit() was called with wrong argument : BackColor");
s.SetBitCalledFlag = false;
s.BorderColor = Color.Blue;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : BorderColor");
Assert.AreEqual (0x10, s.SetBitCalledValue, "SetBit() was called with wrong argument : BorderColor");
s.SetBitCalledFlag = false;
s.BorderStyle = BorderStyle.Dashed;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : BorderStyle");
Assert.AreEqual (0x40, s.SetBitCalledValue, "SetBit() was called with wrong argument : BorderStyle");
s.SetBitCalledFlag = false;
s.BorderWidth = 1;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : BorderWidth");
Assert.AreEqual (0x20, s.SetBitCalledValue, "SetBit() was called with wrong argument : BorderWidth");
s.SetBitCalledFlag = false;
s.CssClass = "class";
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : CssClass");
Assert.AreEqual (0x02, s.SetBitCalledValue, "SetBit() was called with wrong argument : CssClass");
s.SetBitCalledFlag = false;
s.ForeColor = Color.Red;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : ForeColor");
Assert.AreEqual (0x04, s.SetBitCalledValue, "SetBit() was called with wrong argument : ForeColor");
s.SetBitCalledFlag = false;
s.Height = 1;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Height");
Assert.AreEqual (0x80, s.SetBitCalledValue, "SetBit() was called with wrong argument : Height");
s.SetBitCalledFlag = false;
s.Width = 1;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Width");
Assert.AreEqual (0x100, s.SetBitCalledValue, "SetBit() was called with wrong argument : Width");
s.SetBitCalledFlag = false;
s.Font.Bold = true;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Bold");
Assert.AreEqual (0x800, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Bold");
s.SetBitCalledFlag = false;
s.Font.Italic = true;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Italic");
Assert.AreEqual (0x1000, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Italic");
s.SetBitCalledFlag = false;
s.Font.Overline = true;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Overline");
Assert.AreEqual (0x4000, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Overline");
s.SetBitCalledFlag = false;
s.Font.Underline = true;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Underline");
Assert.AreEqual (0x2000, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Underline");
s.SetBitCalledFlag = false;
s.Font.Strikeout = true;
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Strikeout");
Assert.AreEqual (0x8000, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Strikeout");
s.SetBitCalledFlag = false;
s.Font.Names = new string [] { "Arial" };
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Names");
Assert.AreEqual (0x200, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Strikeout");
s.SetBitCalledFlag = false;
s.Font.Size = new FontUnit (10);
Assert.IsTrue (s.SetBitCalledFlag, "SetBit() was not called : Font.Size");
Assert.AreEqual (0x400, s.SetBitCalledValue, "SetBit() was called with wrong argument : Font.Size");
}
public void Render ()
{
HtmlTextWriter writer;
StyleTestClass s;
writer = StyleTest.GetWriter();
s = new StyleTestClass ();
s.BorderColor = Color.BlueViolet;
s.AddAttributesToRender(writer);
// Figure out an order-independent way to verify rendered results
}
class PokerStyle : Style
{
public IUrlResolutionService UrlResolver;
protected override void FillStyleAttributes (CssStyleCollection attributes, IUrlResolutionService urlResolver)
{
UrlResolver = urlResolver;
base.FillStyleAttributes (attributes, urlResolver);
}
}
class PokerWebControl : WebControl
{
protected override Style CreateControlStyle ()
{
return new PokerStyle ();
}
}
[Test]
public void FillStyleAttributes_UrlResolver ()
{
PokerWebControl c = new PokerWebControl ();
c.BackColor = Color.AliceBlue;
c.RenderControl (new HtmlTextWriter (new StringWriter ()));
Assert.AreEqual (c, ((PokerStyle) c.ControlStyle).UrlResolver);
}
}
}