2 // Tests for System.Web.UI.Adapters.ControlAdapter
5 // Dean Brettle (dean@brettle.com)
7 // Copyright (C) 2007 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using NUnit.Framework;
32 using System.Collections;
35 using System.Globalization;
38 using System.Web.UI.WebControls;
39 using System.Web.UI.Adapters;
40 using System.Web.Configuration;
41 using MonoTests.SystemWeb.Framework;
44 namespace MonoTests.System.Web.UI.Adapters
47 public class ControlAdapterTest
50 public void BeginRender ()
52 MyControlAdapter a = new MyControlAdapter ();
53 MyHtmlTextWriter w = new MyHtmlTextWriter ();
54 a.CallBeginRender (w);
55 Assert.IsTrue (w.begin_render_called, "BeginRender #1");
59 public void EndRender ()
61 MyControlAdapter a = new MyControlAdapter ();
62 MyHtmlTextWriter w = new MyHtmlTextWriter ();
64 Assert.IsTrue (w.end_render_called, "EndRender #1");
70 MyControl c = new MyControl();
71 MyHtmlTextWriter w = new MyHtmlTextWriter ();
72 c.AdapterCallRender (w);
73 Assert.IsTrue (c.render_called, "Render #1");
77 public void RenderChildren ()
79 MyControl c = new MyControl ();
80 MyHtmlTextWriter w = new MyHtmlTextWriter ();
81 c.AdapterCallRenderChildren (w);
82 Assert.IsTrue (c.render_children_called, "RenderChildren #1");
88 MyControl c = new MyControl ();
89 EventArgs e = new EventArgs ();
90 c.AdapterCallOnInit (e);
91 Assert.AreEqual (e, c.on_init_arg, "OnInit #1");
97 MyControl c = new MyControl ();
98 EventArgs e = new EventArgs ();
99 c.AdapterCallOnLoad (e);
100 Assert.AreEqual (e, c.on_load_arg, "OnLoad #1");
104 public void OnPreRender ()
106 MyControl c = new MyControl ();
107 EventArgs e = new EventArgs ();
108 c.AdapterCallOnPreRender (e);
109 Assert.AreEqual (e, c.on_pre_render_arg, "OnPreRender #1");
113 public void OnUnload ()
115 MyControl c = new MyControl ();
116 EventArgs e = new EventArgs ();
117 c.AdapterCallOnUnload (e);
118 Assert.AreEqual (e, c.on_unload_arg, "OnUnload #1");
124 MyControl c = new MyControl ();
125 c.Page = new Page ();
127 Assert.AreEqual (c.Page, c.AdapterGetPage (), "Page #1");
131 public void PageAdapter ()
133 MyControl c = new MyControl ();
134 PageAdapter pa = new MyPageAdapter ();
135 c.Page = new MyPage (pa);
136 c.AdapterGetPageAdapter ();
137 Assert.AreEqual (c.Page.PageAdapter, c.AdapterGetPageAdapter (), "PageAdapter #1");
141 [Category ("NunitWeb")]
142 public void Browser ()
144 WebTest t = new WebTest (PageInvoker.CreateOnInit (Browser_OnInit));
148 public static void Browser_OnInit (Page p)
150 MyControl c = new MyControl ();
153 Assert.AreEqual (p.Request.Browser, c.AdapterGetBrowser (), "Browser #1");
158 [Category ("NunitWeb")]
159 public void ConfigCapabilitiesNotCalled ()
161 WebTest t = new WebTest (new HandlerInvoker (ConfigCapabilitiesNotCalled_Reset));
163 t = new WebTest (PageInvoker.CreateOnInit (ConfigCapabilitiesNotCalled_OnInit));
167 public static void ConfigCapabilitiesNotCalled_Reset ()
169 SystemWebTestShim.HttpCapabilitiesBase.GetConfigCapabilities_called = false;
172 private static EventHandler end_request_handler;
174 public static void ConfigCapabilitiesNotCalled_OnInit (Page p)
176 end_request_handler = new EventHandler (ConfigCapabilitiesNotCalled_EndRequest);
177 HttpContext.Current.ApplicationInstance.EndRequest += end_request_handler;
180 public static void ConfigCapabilitiesNotCalled_EndRequest (object sender, EventArgs args)
182 // Ensure that this handler doesn't stick around for other tests.
183 HttpContext.Current.ApplicationInstance.EndRequest -= end_request_handler;
185 // GetConfigCapabilities() should not have been called because there are no
186 // files in App_Browsers/.
187 Assert.IsFalse (SystemWebTestShim.HttpCapabilitiesBase.GetConfigCapabilities_called,
188 "ConfigCapabilitiesNotCalled #1");
191 #region Support classes
193 class MyPageAdapter : PageAdapter
195 internal MyPageAdapter () : base ()
202 internal MyPage (PageAdapter pa) : base ()
207 private PageAdapter page_adapter;
209 protected override ControlAdapter ResolveAdapter ()
215 class MyControl : Control
217 internal bool render_called = false;
218 protected override void Render (HtmlTextWriter w)
220 render_called = true;
223 internal bool render_children_called = false;
224 protected override void RenderChildren (HtmlTextWriter w)
226 render_children_called = true;
229 internal EventArgs on_init_arg = null;
230 protected override void OnInit (EventArgs e)
235 internal EventArgs on_load_arg = null;
236 protected override void OnLoad (EventArgs e)
241 internal EventArgs on_pre_render_arg = null;
242 protected override void OnPreRender (EventArgs e)
244 on_pre_render_arg = e;
247 internal EventArgs on_unload_arg = null;
248 protected override void OnUnload (EventArgs e)
253 internal MyControlAdapter adapter = new MyControlAdapter ();
254 protected override ControlAdapter ResolveAdapter ()
259 internal void AdapterCallRender (HtmlTextWriter w)
261 ((MyControlAdapter)Adapter).CallRender (w);
264 internal void AdapterCallRenderChildren (HtmlTextWriter w)
266 ((MyControlAdapter)Adapter).CallRenderChildren (w);
269 internal void AdapterCallOnInit (EventArgs e)
271 ((MyControlAdapter)Adapter).CallOnInit (e);
274 internal void AdapterCallOnLoad (EventArgs e)
276 ((MyControlAdapter)Adapter).CallOnLoad (e);
279 internal void AdapterCallOnPreRender (EventArgs e)
281 ((MyControlAdapter)Adapter).CallOnPreRender (e);
284 internal void AdapterCallOnUnload (EventArgs e)
286 ((MyControlAdapter)Adapter).CallOnUnload (e);
289 internal Page AdapterGetPage ()
291 return ((MyControlAdapter)Adapter).GetPage ();
294 internal PageAdapter AdapterGetPageAdapter ()
296 return ((MyControlAdapter)Adapter).GetPageAdapter ();
299 internal HttpBrowserCapabilities AdapterGetBrowser ()
301 return ((MyControlAdapter)Adapter).GetBrowser ();
305 class MyControlAdapter : ControlAdapter
307 internal MyControlAdapter () : base ()
311 internal void CallBeginRender (HtmlTextWriter w)
316 internal void CallEndRender (HtmlTextWriter w)
321 internal void CallRender (HtmlTextWriter w)
326 internal void CallRenderChildren (HtmlTextWriter w)
331 internal void CallOnInit (EventArgs e)
336 internal void CallOnLoad (EventArgs e)
341 internal void CallOnPreRender (EventArgs e)
346 internal void CallOnUnload (EventArgs e)
351 internal Page GetPage ()
356 internal PageAdapter GetPageAdapter ()
361 internal HttpBrowserCapabilities GetBrowser ()
367 class MyHtmlTextWriter : HtmlTextWriter
369 internal MyHtmlTextWriter () : base (new StringWriter ())
373 internal bool begin_render_called = false;
374 public override void BeginRender ()
376 begin_render_called = true;
379 internal bool end_render_called = false;
380 public override void EndRender ()
382 end_render_called = true;