3c1f479b9d
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
415 lines
9.6 KiB
C#
415 lines
9.6 KiB
C#
//
|
|
// Tests for System.Web.UI.Adapters.ControlAdapter
|
|
//
|
|
// Author:
|
|
// Dean Brettle (dean@brettle.com)
|
|
//
|
|
// Copyright (C) 2007 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 System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Web.UI.Adapters;
|
|
using System.Web.Configuration;
|
|
using MonoTests.SystemWeb.Framework;
|
|
|
|
|
|
namespace MonoTests.System.Web.UI.Adapters
|
|
{
|
|
[TestFixture]
|
|
public class ControlAdapterTest
|
|
{
|
|
[Test (Description="Bug #517172")]
|
|
public void CreateChildControls ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
c.AdapterCallCreateChildControls ();
|
|
Assert.IsTrue (c.create_child_controls_called, "CreateChildControls #1");
|
|
}
|
|
|
|
[Test]
|
|
public void BeginRender ()
|
|
{
|
|
MyControlAdapter a = new MyControlAdapter ();
|
|
MyHtmlTextWriter w = new MyHtmlTextWriter ();
|
|
a.CallBeginRender (w);
|
|
Assert.IsTrue (w.begin_render_called, "BeginRender #1");
|
|
}
|
|
|
|
[Test]
|
|
public void EndRender ()
|
|
{
|
|
MyControlAdapter a = new MyControlAdapter ();
|
|
MyHtmlTextWriter w = new MyHtmlTextWriter ();
|
|
a.CallEndRender (w);
|
|
Assert.IsTrue (w.end_render_called, "EndRender #1");
|
|
}
|
|
|
|
[Test]
|
|
public void Render ()
|
|
{
|
|
MyControl c = new MyControl();
|
|
MyHtmlTextWriter w = new MyHtmlTextWriter ();
|
|
c.AdapterCallRender (w);
|
|
Assert.IsTrue (c.render_called, "Render #1");
|
|
}
|
|
|
|
[Test]
|
|
public void RenderChildren ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
MyHtmlTextWriter w = new MyHtmlTextWriter ();
|
|
c.AdapterCallRenderChildren (w);
|
|
Assert.IsTrue (c.render_children_called, "RenderChildren #1");
|
|
}
|
|
|
|
[Test]
|
|
public void OnInit ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
EventArgs e = new EventArgs ();
|
|
c.AdapterCallOnInit (e);
|
|
Assert.AreEqual (e, c.on_init_arg, "OnInit #1");
|
|
}
|
|
|
|
[Test]
|
|
public void OnLoad ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
EventArgs e = new EventArgs ();
|
|
c.AdapterCallOnLoad (e);
|
|
Assert.AreEqual (e, c.on_load_arg, "OnLoad #1");
|
|
}
|
|
|
|
[Test]
|
|
public void OnPreRender ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
EventArgs e = new EventArgs ();
|
|
c.AdapterCallOnPreRender (e);
|
|
Assert.AreEqual (e, c.on_pre_render_arg, "OnPreRender #1");
|
|
}
|
|
|
|
[Test]
|
|
public void OnUnload ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
EventArgs e = new EventArgs ();
|
|
c.AdapterCallOnUnload (e);
|
|
Assert.AreEqual (e, c.on_unload_arg, "OnUnload #1");
|
|
}
|
|
|
|
[Test]
|
|
public void Page ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
c.Page = new Page ();
|
|
c.AdapterGetPage ();
|
|
Assert.AreEqual (c.Page, c.AdapterGetPage (), "Page #1");
|
|
}
|
|
|
|
[Test]
|
|
public void PageAdapter ()
|
|
{
|
|
MyControl c = new MyControl ();
|
|
PageAdapter pa = new MyPageAdapter ();
|
|
c.Page = new MyPage (pa);
|
|
c.AdapterGetPageAdapter ();
|
|
Assert.AreEqual (c.Page.PageAdapter, c.AdapterGetPageAdapter (), "PageAdapter #1");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NunitWeb")]
|
|
public void Browser ()
|
|
{
|
|
WebTest t = new WebTest (PageInvoker.CreateOnInit (Browser_OnInit));
|
|
t.Run ();
|
|
}
|
|
|
|
public static void Browser_OnInit (Page p)
|
|
{
|
|
MyControl c = new MyControl ();
|
|
p.Controls.Add (c);
|
|
|
|
Assert.AreEqual (p.Request.Browser, c.AdapterGetBrowser (), "Browser #1");
|
|
}
|
|
|
|
|
|
[Test]
|
|
[Category ("NunitWeb")]
|
|
public void ConfigCapabilitiesNotCalled ()
|
|
{
|
|
WebTest t = new WebTest (new HandlerInvoker (ConfigCapabilitiesNotCalled_Reset));
|
|
t.Run ();
|
|
t = new WebTest (PageInvoker.CreateOnInit (ConfigCapabilitiesNotCalled_OnInit));
|
|
t.Run ();
|
|
}
|
|
|
|
public static void ConfigCapabilitiesNotCalled_Reset ()
|
|
{
|
|
#if !TARGET_DOTNET
|
|
SystemWebTestShim.HttpCapabilitiesBase.GetConfigCapabilities_called = false;
|
|
#endif
|
|
}
|
|
|
|
private static EventHandler end_request_handler;
|
|
|
|
public static void ConfigCapabilitiesNotCalled_OnInit (Page p)
|
|
{
|
|
end_request_handler = new EventHandler (ConfigCapabilitiesNotCalled_EndRequest);
|
|
HttpContext.Current.ApplicationInstance.EndRequest += end_request_handler;
|
|
}
|
|
|
|
public static void ConfigCapabilitiesNotCalled_EndRequest (object sender, EventArgs args)
|
|
{
|
|
// Ensure that this handler doesn't stick around for other tests.
|
|
HttpContext.Current.ApplicationInstance.EndRequest -= end_request_handler;
|
|
|
|
// GetConfigCapabilities() should not have been called because there are no
|
|
// files in App_Browsers/.
|
|
#if !TARGET_DOTNET
|
|
Assert.IsFalse (SystemWebTestShim.HttpCapabilitiesBase.GetConfigCapabilities_called,
|
|
"ConfigCapabilitiesNotCalled #1");
|
|
#endif
|
|
}
|
|
|
|
#region Support classes
|
|
|
|
class MyPageAdapter : PageAdapter
|
|
{
|
|
internal MyPageAdapter () : base ()
|
|
{
|
|
}
|
|
}
|
|
|
|
class MyPage : Page
|
|
{
|
|
internal MyPage (PageAdapter pa) : base ()
|
|
{
|
|
page_adapter = pa;
|
|
}
|
|
|
|
private PageAdapter page_adapter;
|
|
|
|
protected override ControlAdapter ResolveAdapter ()
|
|
{
|
|
return page_adapter;
|
|
}
|
|
}
|
|
|
|
class MyControl : Control
|
|
{
|
|
internal bool create_child_controls_called;
|
|
protected internal override void CreateChildControls ()
|
|
{
|
|
create_child_controls_called = true;
|
|
}
|
|
|
|
internal bool render_called = false;
|
|
protected internal override void Render (HtmlTextWriter w)
|
|
{
|
|
render_called = true;
|
|
}
|
|
|
|
internal bool render_children_called = false;
|
|
protected internal override void RenderChildren (HtmlTextWriter w)
|
|
{
|
|
render_children_called = true;
|
|
}
|
|
|
|
internal EventArgs on_init_arg = null;
|
|
protected internal override void OnInit (EventArgs e)
|
|
{
|
|
on_init_arg = e;
|
|
}
|
|
|
|
internal EventArgs on_load_arg = null;
|
|
protected internal override void OnLoad (EventArgs e)
|
|
{
|
|
on_load_arg = e;
|
|
}
|
|
|
|
internal EventArgs on_pre_render_arg = null;
|
|
protected internal override void OnPreRender (EventArgs e)
|
|
{
|
|
on_pre_render_arg = e;
|
|
}
|
|
|
|
internal EventArgs on_unload_arg = null;
|
|
protected internal override void OnUnload (EventArgs e)
|
|
{
|
|
on_unload_arg = e;
|
|
}
|
|
|
|
internal MyControlAdapter adapter = new MyControlAdapter ();
|
|
protected override ControlAdapter ResolveAdapter ()
|
|
{
|
|
return adapter;
|
|
}
|
|
|
|
internal void AdapterCallRender (HtmlTextWriter w)
|
|
{
|
|
((MyControlAdapter)Adapter).CallRender (w);
|
|
}
|
|
|
|
internal void AdapterCallRenderChildren (HtmlTextWriter w)
|
|
{
|
|
((MyControlAdapter)Adapter).CallRenderChildren (w);
|
|
}
|
|
|
|
internal void AdapterCallCreateChildControls ()
|
|
{
|
|
((MyControlAdapter)Adapter).CallCreateChildControls ();
|
|
}
|
|
|
|
internal void AdapterCallOnInit (EventArgs e)
|
|
{
|
|
((MyControlAdapter)Adapter).CallOnInit (e);
|
|
}
|
|
|
|
internal void AdapterCallOnLoad (EventArgs e)
|
|
{
|
|
((MyControlAdapter)Adapter).CallOnLoad (e);
|
|
}
|
|
|
|
internal void AdapterCallOnPreRender (EventArgs e)
|
|
{
|
|
((MyControlAdapter)Adapter).CallOnPreRender (e);
|
|
}
|
|
|
|
internal void AdapterCallOnUnload (EventArgs e)
|
|
{
|
|
((MyControlAdapter)Adapter).CallOnUnload (e);
|
|
}
|
|
|
|
internal Page AdapterGetPage ()
|
|
{
|
|
return ((MyControlAdapter)Adapter).GetPage ();
|
|
}
|
|
|
|
internal PageAdapter AdapterGetPageAdapter ()
|
|
{
|
|
return ((MyControlAdapter)Adapter).GetPageAdapter ();
|
|
}
|
|
|
|
internal HttpBrowserCapabilities AdapterGetBrowser ()
|
|
{
|
|
return ((MyControlAdapter)Adapter).GetBrowser ();
|
|
}
|
|
}
|
|
|
|
class MyControlAdapter : ControlAdapter
|
|
{
|
|
internal MyControlAdapter () : base ()
|
|
{
|
|
}
|
|
|
|
internal void CallCreateChildControls ()
|
|
{
|
|
CreateChildControls ();
|
|
}
|
|
|
|
internal void CallBeginRender (HtmlTextWriter w)
|
|
{
|
|
BeginRender (w);
|
|
}
|
|
|
|
internal void CallEndRender (HtmlTextWriter w)
|
|
{
|
|
EndRender (w);
|
|
}
|
|
|
|
internal void CallRender (HtmlTextWriter w)
|
|
{
|
|
Render (w);
|
|
}
|
|
|
|
internal void CallRenderChildren (HtmlTextWriter w)
|
|
{
|
|
RenderChildren (w);
|
|
}
|
|
|
|
internal void CallOnInit (EventArgs e)
|
|
{
|
|
OnInit (e);
|
|
}
|
|
|
|
internal void CallOnLoad (EventArgs e)
|
|
{
|
|
OnLoad (e);
|
|
}
|
|
|
|
internal void CallOnPreRender (EventArgs e)
|
|
{
|
|
OnPreRender (e);
|
|
}
|
|
|
|
internal void CallOnUnload (EventArgs e)
|
|
{
|
|
OnUnload (e);
|
|
}
|
|
|
|
internal Page GetPage ()
|
|
{
|
|
return Page;
|
|
}
|
|
|
|
internal PageAdapter GetPageAdapter ()
|
|
{
|
|
return PageAdapter;
|
|
}
|
|
|
|
internal HttpBrowserCapabilities GetBrowser ()
|
|
{
|
|
return Browser;
|
|
}
|
|
}
|
|
|
|
class MyHtmlTextWriter : HtmlTextWriter
|
|
{
|
|
internal MyHtmlTextWriter () : base (new StringWriter ())
|
|
{
|
|
}
|
|
|
|
internal bool begin_render_called = false;
|
|
public override void BeginRender ()
|
|
{
|
|
begin_render_called = true;
|
|
}
|
|
|
|
internal bool end_render_called = false;
|
|
public override void EndRender ()
|
|
{
|
|
end_render_called = true;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|