287 lines
7.6 KiB
C#
Raw Normal View History

//
// Tests for System.Web.UI.WebControls.Panel.cs
//
// Author:
// Ben Maurer <bmaurer@novell.com>
// Yoni Klain <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.
//
using NUnit.Framework;
using System;
using System.IO;
using System.Globalization;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using MonoTests.stand_alone.WebHarness;
using MonoTests.SystemWeb.Framework;
namespace MonoTests.System.Web.UI.WebControls {
[TestFixture]
public class PanelTest
{
#region helpclasses
class Poker : Panel {
public string Render ()
{
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
HtmlTextWriter writer = new HtmlTextWriter (sw);
base.Render (writer);
return writer.InnerWriter.ToString ();
}
}
class PokerS : Panel
{
public string Render ()
{
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
HtmlTextWriter writer = new HtmlTextWriter (sw);
base.Render (writer);
return writer.InnerWriter.ToString ();
}
protected override Style CreateControlStyle ()
{
Style s = new Style (new StateBag ());
s.BackColor = Color.Red;
s.BorderColor = Color.Red;
return s;
}
public override void RenderBeginTag (HtmlTextWriter writer)
{
base.RenderBeginTag (writer);
}
public override void RenderEndTag (HtmlTextWriter writer)
{
base.RenderEndTag (writer);
}
public string RenderBeginTag ()
{
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
HtmlTextWriter writer = new HtmlTextWriter (sw);
base.RenderBeginTag (writer);
return writer.InnerWriter.ToString ();
}
public string RenderEndTag ()
{
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
HtmlTextWriter writer = new HtmlTextWriter (sw);
base.RenderBeginTag (writer);
base.RenderEndTag (writer);
return writer.InnerWriter.ToString ();
}
}
class PokerR : Panel
{
public string Render ()
{
StringWriter sw = new StringWriter ();
sw.NewLine = "\n";
HtmlTextWriter writer = new HtmlTextWriter (sw);
sw.Write ("Render");
base.Render (writer);
return writer.InnerWriter.ToString ();
}
public override void RenderBeginTag (HtmlTextWriter writer)
{
writer.Write ("RenderBeginTag");
}
public override void RenderEndTag (HtmlTextWriter writer)
{
writer.Write ("RenderEndTag");
}
}
#endregion
[TestFixtureSetUp]
public void SetUp ()
{
WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
}
[Test]
public void Defaults ()
{
Poker p = new Poker ();
Assert.AreEqual (ContentDirection.NotSet, p.Direction, "Direction");
Assert.AreEqual (string.Empty, p.GroupingText, "GroupingText");
Assert.AreEqual (ScrollBars.None, p.ScrollBars, "ScrollBars");
Assert.AreEqual (string.Empty, p.DefaultButton, "DefaultButton");
}
[Test]
public void NoWrap ()
{
Poker p = new Poker ();
p.Wrap = false;
p.Controls.Add (new LiteralControl ("TEXT"));
const string html ="<div style=\"white-space:nowrap;\">\n\tTEXT\n</div>";
Assert.AreEqual (html, p.Render ());
}
[Test]
public void CreateControlStyle ()
{
PokerS p = new PokerS ();
Style s = p.ControlStyle;
Assert.AreEqual (Color.Red, s.BackColor, "CreateControlStyle#1");
Assert.AreEqual (Color.Red, s.BorderColor, "CreateControlStyle#2");
p.ApplyStyle (s);
string html = p.Render ();
string origHtml = "<div style=\"background-color:Red;border-color:Red;\">\n\n</div>";
HtmlDiff.AssertAreEqual (origHtml, html, "CreateControlStyle");
}
[Test]
[Category ("NunitWeb")]
public void DefaultButton ()
{
WebTest t = new WebTest ("NoEventValidation.aspx");
t.Invoker = PageInvoker.CreateOnInit (DefaultButton__Init);
t.Run ();
}
public static void DefaultButton__Init (Page p)
{
Poker pl = new Poker ();
pl.DefaultButton = "MyButton";
Button b = new Button ();
b.ID = "MyButton";
p.Form.Controls.Add (b);
p.Form.Controls.Add (pl);
string html = pl.Render ();
if (html.IndexOf ("onkeypress") == -1)
Assert.Fail ("Default button script not created #1");
if (html.IndexOf ("MyButton") == -1)
Assert.Fail ("Default button script not created #2");
}
[Test]
[Category("NunitWeb")]
[ExpectedException(typeof(InvalidOperationException))]
public void DefaultButton_Exception ()
{
WebTest t = new WebTest ("NoEventValidation.aspx");
t.Invoker = PageInvoker.CreateOnInit (DefaultButton_Init);
t.Run ();
}
public static void DefaultButton_Init (Page p)
{
Poker pl = new Poker ();
pl.DefaultButton = "test";
p.Form.Controls.Add (pl);
pl.Render ();
}
[Test]
public void Direction ()
{
Poker p = new Poker ();
p.Direction = ContentDirection.LeftToRight;
string html = p.Render();
string origHtml = "<div dir=\"ltr\">\n\n</div>";
HtmlDiff.AssertAreEqual (origHtml, html, "Direction");
}
[Test]
public void GroupingText ()
{
Poker p = new Poker ();
p.GroupingText = "MyNameText";
string html = p.Render ();
string origHtml = "<div>\n\t<fieldset>\n\t\t<legend>\n\t\t\tMyNameText\n\t\t</legend>\n\t</fieldset>\n</div>";
HtmlDiff.AssertAreEqual (origHtml, html, "GroupingText");
}
[Test]
public void RenderBeginTag ()
{
PokerS p = new PokerS ();
string html = p.RenderBeginTag ();
HtmlDiff.AssertAreEqual ("<div>\n", html, "RenderBeginTag");
}
[Test]
public void RenderEndTag ()
{
PokerS p = new PokerS ();
string html = p.RenderEndTag ();
HtmlDiff.AssertAreEqual ("<div>\n\n</div>", html, "RenderBeginTag");
}
[Test]
public void RenderFlow ()
{
PokerR p = new PokerR ();
string html = p.Render ();
Assert.AreEqual ("RenderRenderBeginTagRenderEndTag", html, "RenderFlow");
}
[Test]
public void Scroll_Bars ()
{
Poker p = new Poker ();
p.ScrollBars = ScrollBars.Horizontal;
string html = p.Render ();
string origHtml1 = "<div style=\"overflow-x:scroll;\">\n\n</div>";
HtmlDiff.AssertAreEqual (origHtml1, html, "ScrollBars.Horizontal");
p.ScrollBars = ScrollBars.Vertical;
html = p.Render ();
string origHtml2 = "<div style=\"overflow-y:scroll;\">\n\n</div>";
HtmlDiff.AssertAreEqual (origHtml2, html, "ScrollBars.Vertical");
p.ScrollBars = ScrollBars.Both;
html = p.Render ();
string origHtml3 = "<div style=\"overflow:scroll;\">\n\n</div>";
HtmlDiff.AssertAreEqual (origHtml3, html, "ScrollBars.Both");
}
[TestFixtureTearDown]
public void TearDown ()
{
WebTest.Unload ();
}
}
}