2 // Tests for System.Web.UI.WebControls.MenuTest.cs
5 // Yoni Klein (yonik@mainsoft.com)
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using NUnit.Framework;
35 using System.Collections.Generic;
39 using System.Web.UI.WebControls;
42 using System.Threading;
43 using MyWebControl = System.Web.UI.WebControls;
44 using System.Collections;
45 using MonoTests.SystemWeb.Framework;
46 using MonoTests.stand_alone.WebHarness;
47 using System.Text.RegularExpressions;
48 using System.Reflection;
50 namespace MonoTests.System.Web.UI.WebControls
60 public StateBag StateBag
62 get { return base.ViewState; }
64 public HtmlTextWriterTag OnTagKey()
68 public void DoOnDataBind(EventArgs e)
72 public void DoOnDataBound (EventArgs e)
76 public void DoCreateChildControls ()
78 CreateChildControls ();
80 public void DoEnsureDataBound ()
84 public void DoLoadViewState (object state)
86 LoadViewState (state);
88 public object DoSaveViewState ()
90 return SaveViewState ();
92 public void DoLoadControlState (object state)
94 LoadControlState (state);
96 public object DoSaveControlState ()
98 return SaveControlState ();
100 public void DoOnMenuItemClick (MenuEventArgs e)
104 public void DoOnInit(EventArgs e)
108 public void DoMenuItemDataBound (MenuEventArgs e)
110 OnMenuItemDataBound (e);
112 public void DoOnPreRender (EventArgs e)
116 public bool DoOnBubbleEvent(EventArgs e)
118 return base.OnBubbleEvent(this,e);
124 public class MenuTest
127 public void Menu_DefaultProperties ()
129 PokerMenu p = new PokerMenu ();
130 Assert.AreEqual ("Click",PokerMenu.MenuItemClickCommandName,"Staic_MenuItemClickCommandName");
131 Assert.AreEqual (0,p.Controls.Count,"ControlsCollection");
132 Assert.AreEqual (0,p.DataBindings.Count,"DataBindings");
133 Assert.AreEqual (500,p.DisappearAfter,"DisappearAfter");
134 Assert.AreEqual (string.Empty, p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
135 Assert.IsTrue (p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
136 Assert.AreEqual (0, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
137 Assert.IsNotNull (p.DynamicHoverStyle, "DynamicHoverStyle");
138 Assert.AreEqual ("", p.DynamicItemFormatString, "DynamicItemFormatString");
139 Assert.IsNull (p.DynamicItemTemplate, "DynamicItemTemplate");
140 Assert.IsNotNull (p.DynamicMenuItemStyle, "DynamicMenuItemStyle");
141 Assert.IsNotNull (p.DynamicMenuStyle, "DynamicMenuStyle");
142 Assert.AreEqual (string.Empty,p.DynamicPopOutImageUrl,"DynamicPopOutImageUrl");
143 Assert.IsNotNull (p.DynamicSelectedStyle, "DynamicSelectedStyle");
144 Assert.AreEqual (string.Empty, p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
145 Assert.AreEqual (0, p.DynamicVerticalOffset, "DynamicVerticalOffset");
146 Assert.AreEqual (0, p.Items.Count, "Items");
147 Assert.AreEqual (false, p.ItemWrap, "ItemWrap");
148 Assert.IsNotNull (p.LevelSelectedStyles, "LevelSelectedStyles");
149 Assert.IsNotNull (p.LevelSubMenuStyles, "LevelSubMenuStyles");
150 Assert.AreEqual (3, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
151 Assert.AreEqual (Orientation.Vertical, p.Orientation, "Orientation");
152 Assert.AreEqual ("/", p.PathSeparator.ToString(), "PathSeparator");
153 Assert.AreEqual (string.Empty, p.ScrollDownImageUrl, "ScrollDownImageUrl");
154 Assert.AreEqual (null, p.SelectedItem, "p.SelectedItem");
155 Assert.AreEqual (string.Empty, p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
156 Assert.AreEqual (1, p.StaticDisplayLevels, "StaticDisplayLevels");
157 Assert.AreEqual (true, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
158 Assert.IsNotNull (p.StaticHoverStyle, "StaticHoverStyle");
159 Assert.AreEqual ("", p.StaticItemFormatString, "StaticItemFormatString");
160 Assert.AreEqual (null, p.StaticItemTemplate, "StaticItemTemplate");
161 Assert.IsNotNull (p.StaticMenuItemStyle, "StaticMenuItemStyle");
162 Assert.IsNotNull (p.StaticMenuStyle, "StaticMenuStyle");
163 Assert.AreEqual ("", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
164 Assert.IsNotNull (p.StaticSelectedStyle, "StaticSelectedStyle");
165 Assert.AreEqual (Unit.Pixel(16), p.StaticSubMenuIndent, "StaticSubMenuIndent");
166 Assert.AreEqual ("", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
167 Assert.AreEqual ("", p.Target, "Target");
168 Assert.IsNotNull (p.OnTagKey (), "TagKey");
173 [Category ("NotWorking")]
174 public void Menu_DefaultPropertiesNotWorking ()
176 PokerMenu p = new PokerMenu ();
177 Assert.AreEqual ("Skip Navigation Links", p.SkipLinkText, "SkipLinkText");
178 Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
179 Assert.AreEqual ("Scroll up", p.ScrollUpText, "ScrollUpText");
180 Assert.AreEqual ("Expand {0}", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString"); //not implemented
181 Assert.AreEqual ("Scroll down", p.ScrollDownText, "ScrollDownText");
182 Assert.AreEqual ("Expand {0}", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString"); //not implemented
188 public void Menu_ChangeDefaultProperties ()
190 PokerMenu p = new PokerMenu ();
191 Button B = new Button ();
193 Assert.AreEqual (1,p.Controls.Count, "ControlsCollection");
195 MenuItemBinding M = new MenuItemBinding ();
196 M.DataMember = "test";
198 M.TextField = "title";
200 Object C = p.DataBindings;
201 Assert.AreEqual (0, p.DataBindings.Count, "DataBindings#1");
202 ((MenuItemBindingCollection)C).Add (M);
203 Assert.AreEqual (1,p.DataBindings.Count,"DataBindings#2");
205 p.DisappearAfter = 100;
206 Assert.AreEqual (100, p.DisappearAfter, "DisappearAfter");
208 p.DynamicBottomSeparatorImageUrl = "test.aspx";
209 Assert.AreEqual ("test.aspx", p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
211 p.DynamicEnableDefaultPopOutImage = false;
212 Assert.AreEqual (false,p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
214 p.DynamicHorizontalOffset = 10;
215 Assert.AreEqual (10, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
217 p.DynamicHoverStyle.BackColor = Color.Red;
218 Assert.AreEqual (Color.Red ,p.DynamicHoverStyle.BackColor, "DynamicHoverStyle");
220 p.DynamicItemFormatString = "Mytest";
221 Assert.AreEqual ("Mytest", p.DynamicItemFormatString, "DynamicItemFormatString");
223 MyWebControl.Image myImage = new MyWebControl.Image ();
224 myImage.ImageUrl = "myimage.jpg";
225 ImageTemplate Template = new ImageTemplate ();
226 Template.MyImage = myImage;
227 // end create template image
228 p.DynamicItemTemplate = Template;
229 Assert.IsNotNull (p.DynamicItemTemplate, "RootNodeTemplate");
230 Assert.AreEqual (typeof (ImageTemplate), p.DynamicItemTemplate.GetType (), "RootNodeTemplate#1");
232 p.DynamicMenuItemStyle.BackColor = Color.Red;
233 Assert.AreEqual (Color.Red, p.DynamicMenuItemStyle.BackColor, "DynamicMenuItemStyle");
235 p.DynamicMenuStyle.BackColor = Color.Red;
236 Assert.AreEqual (Color.Red,p.DynamicMenuStyle.BackColor, "DynamicMenuStyle");
238 p.DynamicPopOutImageUrl = "test";
239 Assert.AreEqual ("test", p.DynamicPopOutImageUrl, "DynamicPopOutImageUrl");
241 p.DynamicSelectedStyle.BackColor = Color.Red;
242 Assert.AreEqual (Color.Red,p.DynamicSelectedStyle.BackColor, "DynamicSelectedStyle");
244 p.DynamicTopSeparatorImageUrl = "test";
245 Assert.AreEqual ("test", p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
247 p.DynamicVerticalOffset = 10;
248 Assert.AreEqual (10, p.DynamicVerticalOffset, "DynamicVerticalOffset");
250 MenuItem I = new MenuItem ();
251 I.NavigateUrl = "default.aspx";
255 Assert.AreEqual (1, p.Items.Count, "Items");
258 Assert.AreEqual (true, p.ItemWrap, "ItemWrap");
260 MenuItemStyle S = new MenuItemStyle ();
261 S.BackColor = Color.Red;
262 p.LevelSelectedStyles.Add (S);
263 Assert.AreEqual (1,p.LevelSelectedStyles.Count , "LevelSelectedStyles#1");
264 Assert.AreEqual (true, p.LevelSelectedStyles.Contains (S), "LevelSelectedStyles#2");
266 SubMenuStyle SM = new SubMenuStyle ();
267 SM.BackColor = Color.Red;
268 p.LevelSubMenuStyles.Add (SM);
269 Assert.AreEqual(1, p.LevelSubMenuStyles.Count, "LevelSubMenuStyles#1");
270 Assert.AreEqual (true, p.LevelSubMenuStyles.Contains (SM), "LevelSubMenuStyles#2");
272 p.MaximumDynamicDisplayLevels = 5;
273 Assert.AreEqual (5, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
275 p.Orientation = Orientation.Horizontal;
276 Assert.AreEqual (Orientation.Horizontal, p.Orientation, "Orientation");
278 p.PathSeparator = 'A';
279 Assert.AreEqual ('A', p.PathSeparator, "PathSeparator");
281 p.ScrollDownImageUrl = "test";
282 Assert.AreEqual ("test", p.ScrollDownImageUrl, "ScrollDownImageUrl");
284 p.ScrollDownText = "test";
285 Assert.AreEqual ("test", p.ScrollDownText, "ScrollDownText");
287 // This properties will be checked in events part of tests
288 // Assert.AreEqual (0, p.SelectedItem, "p.SelectedItem");
289 // Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
291 p.SkipLinkText = "test";
292 Assert.AreEqual ("test", p.SkipLinkText, "SkipLinkText");
294 p.StaticBottomSeparatorImageUrl = "test";
295 Assert.AreEqual ("test", p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
297 p.StaticDisplayLevels = 2;
298 Assert.AreEqual (2, p.StaticDisplayLevels, "StaticDisplayLevels");
300 p.StaticEnableDefaultPopOutImage = false;
301 Assert.AreEqual (false, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
303 p.StaticHoverStyle.BackColor = Color.Red;
304 Assert.AreEqual(Color.Red, p.StaticHoverStyle.BackColor, "StaticHoverStyle");
306 p.StaticItemFormatString = "test";
307 Assert.AreEqual ("test", p.StaticItemFormatString, "StaticItemFormatString");
310 p.StaticItemTemplate = Template;
311 Assert.IsNotNull (p.StaticItemTemplate, "StaticItemTemplate");
313 p.StaticMenuItemStyle.BackColor = Color.Red;
314 Assert.AreEqual(Color.Red,p.StaticMenuItemStyle.BackColor, "StaticMenuItemStyle");
316 p.StaticMenuStyle.BackColor = Color.Red;
317 Assert.AreEqual (Color.Red,p.StaticMenuStyle.BackColor, "StaticMenuStyle");
319 p.StaticPopOutImageUrl = "test";
320 Assert.AreEqual ("test", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
322 p.StaticSelectedStyle.BackColor = Color.Red;
323 Assert.AreEqual(Color.Red,p.StaticSelectedStyle.BackColor, "StaticSelectedStyle");
325 p.StaticSubMenuIndent = 20;
326 Assert.AreEqual (Unit.Pixel (20), p.StaticSubMenuIndent, "StaticSubMenuIndent");
328 p.StaticTopSeparatorImageUrl = "test";
329 Assert.AreEqual ("test", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
332 Assert.AreEqual ("test", p.Target, "Target");
336 [Category ("NotWorking")]
337 public void Menu_ChangeDefaultPropertiesNotWorking ()
339 PokerMenu p = new PokerMenu ();
340 p.ScrollUpText = "test";
341 Assert.AreEqual ("test", p.ScrollUpText, "ScrollUpText");
342 p.DynamicPopOutImageTextFormatString = "test";
343 Assert.AreEqual ("test", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString");
344 p.StaticPopOutImageTextFormatString = "test";
345 Assert.AreEqual ("test", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString");
349 public void Menu_ControlState()
351 PokerMenu p = new PokerMenu ();
352 MenuItem I1 = new MenuItem ();
353 MenuItem I2 = new MenuItem ();
356 MenuEventArgs e = new MenuEventArgs (I1);
357 p.DoOnMenuItemClick (e);
358 object state = p.DoSaveControlState ();
359 p.DoLoadControlState (state);
360 e = new MenuEventArgs (I2);
361 p.DoOnMenuItemClick (e);
366 public void Menu_FindItem ()
368 PokerMenu p = new PokerMenu ();
369 MenuItem I = new MenuItem ();
370 string path = I.ValuePath;
372 MenuItem V = new MenuItem ();
373 I.ChildItems.Add (V);
374 MenuItem copy = p.FindItem (path);
375 Assert.AreEqual (I, copy, "FindItem#1");
377 Assert.AreEqual (V, p.FindItem (path), "FindItem#2");
381 // Set & Get DesignModeState dosn't tested
382 // Can't test on Page Load event
386 [Category ("NunitWeb")]
387 [Category ("NotWorking")]
388 public void Menu_RenderBeginTag ()
390 new WebTest (PageInvoker.CreateOnLoad (_BeginTagRender)).Run ();
392 public static void _BeginTagRender(Page p)
394 PokerMenu pm = new PokerMenu ();
395 p.Form.Controls.Add (pm);
396 StringWriter sw = new StringWriter ();
397 HtmlTextWriter tw = new HtmlTextWriter (sw);
398 pm.RenderBeginTag (tw);
399 string RenderedControlHtml = sw.ToString();
400 string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
401 <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&t=632784640484505569""
402 width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
403 </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">";
407 HtmlDiff.AssertAreEqual(OriginControlHtml,RenderedControlHtml,"RenderBeginTag");
411 [Category ("NunitWeb")]
412 [Category ("NotWorking")]
413 public void Menu_RenderEndTag ()
415 new WebTest (PageInvoker.CreateOnLoad (_EndTagRender)).Run ();
417 public static void _EndTagRender (Page p)
419 PokerMenu pm = new PokerMenu ();
420 p.Form.Controls.Add (pm);
421 StringWriter sw = new StringWriter ();
422 HtmlTextWriter tw = new HtmlTextWriter (sw);
423 pm.RenderBeginTag (tw);
424 pm.RenderEndTag (tw);
425 string RenderedControlHtml = sw.ToString ();
426 string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
427 <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&t=632784640484505569""
428 width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
429 </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">
430 </table><a id=""ctl01_SkipLink""></a>";
434 HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderEndTag");
439 public void Menu_ViewState()
441 PokerMenu b = new PokerMenu ();
442 PokerMenu copy = new PokerMenu ();
443 b.ToolTip = "mytest1";
444 b.Target = "mytest2";
445 b.BackColor = Color.Red;
446 b.BorderColor = Color.Red;
447 b.BorderStyle = BorderStyle.Dotted;
449 b.ForeColor = Color.Red;
451 b.MaximumDynamicDisplayLevels = 2;
452 b.Orientation = Orientation.Vertical;
453 b.PathSeparator = '-';
454 b.ScrollDownImageUrl = "test";
455 b.ScrollDownText = "test";
456 b.ScrollUpImageUrl = "test";
457 b.ScrollUpText = "test";
458 b.SkipLinkText = "test";
463 object state = b.DoSaveViewState ();
464 copy.DoLoadViewState (state);
465 Assert.AreEqual ("mytest1", copy.ToolTip, "ViewState#1");
466 Assert.AreEqual ("mytest2", copy.Target, "ViewState#2");
467 Assert.AreEqual (Color.Red, copy.BackColor, "ViewState#3");
468 Assert.AreEqual (Color.Red, copy.BorderColor , "ViewState#4");
469 Assert.AreEqual (BorderStyle.Dotted, copy.BorderStyle, "ViewState#5");
470 Assert.AreEqual (Unit.Pixel(1), copy.BorderWidth, "ViewState#6");
472 Assert.AreEqual (Color.Red, copy.ForeColor, "ViewState#8");
473 Assert.AreEqual (Unit.Pixel(100), copy.Height, "ViewState#9");
474 Assert.AreEqual (2, copy.MaximumDynamicDisplayLevels, "ViewState#10");
475 Assert.AreEqual (Orientation.Vertical, copy.Orientation, "ViewState#11");
476 Assert.AreEqual ('-', copy.PathSeparator, "ViewState#12");
477 Assert.AreEqual ("test", copy.ScrollDownImageUrl, "ViewState#13");
478 Assert.AreEqual ("test", copy.ScrollDownText, "ViewState#14");
479 Assert.AreEqual ("test", copy.ScrollUpImageUrl, "ViewState#15");
480 Assert.AreEqual ("test", copy.ScrollUpText, "ViewState#16");
481 Assert.AreEqual ("test", copy.SkipLinkText, "ViewState#17");
482 Assert.AreEqual (1, copy.TabIndex, "ViewState#18");
483 Assert.AreEqual (false, copy.Visible, "ViewState#19");
484 Assert.AreEqual (Unit.Pixel (100), copy.Width, "ViewState#20");
490 [Category ("NotWorking")]
491 public void Menu_ViewStateNotWorking()
493 PokerMenu b = new PokerMenu ();
494 PokerMenu copy = new PokerMenu ();
496 object state = b.DoSaveViewState ();
497 copy.DoLoadViewState (state);
498 Assert.AreEqual ("10pt", copy.Font.Size.ToString() , "ViewState#7");
501 // Rendering Menu controll with some possible options, styles and items
505 [Category ("NunitWeb")]
506 [Category ("NotWorking")]
507 public void Menu_DefaultRender ()
509 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (_DefaultRender)).Run ();
510 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
511 string OriginControlHtml = "";
512 HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderDefault");
515 // All this methods are delegates for running tests in host assembly.
517 public static void _DefaultRender (Page p)
519 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
520 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
521 Menu menu = new Menu ();
522 p.Form.Controls.Add (lcb);
523 p.Form.Controls.Add (menu);
524 p.Form.Controls.Add (lce);
527 [Category ("NunitWeb")]
528 [Category ("NotWorking")]
529 public void Menu_ItemsRender ()
531 string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (_ItemsRender)).Run ();
532 string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
533 string OriginControlHtml = @"<a href=""#ctl01_SkipLink""><img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&t=632784640484505569"" width=""0"" height=""0""
534 style=""border-width:0px;"" /></a>
535 <table id=""ctl01"" class=""ctl01_2"" cellpadding=""0"" cellspacing=""0"" border=""0"">
536 <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n0"">
537 <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
539 <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1')"">root</a></td><td style=""width:0;"">
540 <img src=""/NunitWeb/WebResource.axd?d=jEQEPhExqNH3fus0nmWZ3pFNw-rGIVoBqrGqFcOqB1U1&t=632784640484505569"" alt=""Expand root"" style=""border-style:none;vertical-align:middle;"" /></td>
544 </table><div id=""ctl01n0Items"" class=""ctl01_0"">
545 <table border=""0"" cellpadding=""0"" cellspacing=""0"">
546 <tr onmouseover=""Menu_HoverDynamic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n1"">
547 <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
549 <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1\\value2')"">node1</a></td>
552 </tr><tr onmouseover=""Menu_HoverDynamic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n2"">
553 <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
555 <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1\\value3')"">node2</a></td>
559 </table><div class=""ctl01_0"" id=""ctl01n0ItemsUp"" onmouseover=""PopOut_Up(this)"" onmouseout=""PopOut_Stop(this)"" style=""text-align:center;"">
560 <img src=""/NunitWeb/WebResource.axd?d=Kql4shtTcfCiKn_s1ZX6W6WIJmS2VsB7hDFw8oD-9I01&t=632784640484505569"" alt=""Scroll up"" />
561 </div><div class=""ctl01_0"" id=""ctl01n0ItemsDn"" onmouseover=""PopOut_Down(this)"" onmouseout=""PopOut_Stop(this)"" style=""text-align:center;"">
562 <img src=""/NunitWeb/WebResource.axd?d=QxI-WSWnY8jfAZsv_BcOLFGj_CTJTI_bGi0dPzQPCtI1&t=632784640484505569"" alt=""Scroll down"" />
564 </div><a id=""ctl01_SkipLink""></a>";
566 HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"Render Items");
569 public static void _ItemsRender (Page p)
571 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
572 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
573 Menu menu = new Menu ();
574 MenuItem R = new MenuItem ("root", "value1");
575 MenuItem N1 = new MenuItem ("node1", "value2");
576 MenuItem N2 = new MenuItem ("node2", "value3");
577 R.ChildItems.Add (N1);
578 R.ChildItems.Add (N2);
580 p.Form.Controls.Add (lcb);
581 p.Form.Controls.Add (menu);
582 p.Form.Controls.Add (lce);
586 private bool OnDataBinding;
587 private bool OnDataBound;
588 private bool OnMenuItemClick;
590 private bool OnMenuItemDataBound;
591 private bool OnPreRender;
593 private void OnMenuItemDataBoundHandler(object sender, MenuEventArgs e)
595 OnMenuItemDataBound = true;
597 private void OnInitHandler (object sender, EventArgs e)
601 private void OnDataBindingHandler (object sender, EventArgs e)
603 OnDataBinding = true;
605 private void OnDataDataBoundHandler (object sender, EventArgs e)
609 private void OnMenuItemClickHandler (object sender, MenuEventArgs e)
611 OnMenuItemClick = true;
613 private void OnPreRenderHandler (object sender, EventArgs e)
617 private void ResetEvents ()
619 OnMenuItemClick = false;
620 OnDataBinding = false;
626 public void Menu_Events ()
628 Page myPage = new Page ();
629 PokerMenu p = new PokerMenu ();
630 MenuItem I = new MenuItem ();
632 myPage.Controls.Add(p);
635 p.Init += new EventHandler(OnInitHandler);
636 p.DataBinding += new EventHandler (OnDataBindingHandler);
637 p.DataBound += new EventHandler(OnDataDataBoundHandler);
638 p.MenuItemClick += new MenuEventHandler(OnMenuItemClickHandler);
639 p.MenuItemDataBound += new MenuEventHandler (OnMenuItemDataBoundHandler);
640 Assert.AreEqual (false, OnDataBinding, "BeforeOnDataBinding");
641 p.DoOnDataBind (new EventArgs ());
642 Assert.AreEqual (true, OnDataBinding, "AfterOnDataBinding");
643 Assert.AreEqual (false, OnDataBound, "BeforeOnDataBound");
644 p.DoOnDataBound (new EventArgs ());
645 Assert.AreEqual (true, OnDataBound, "AfterOnDataBinding");
646 MenuEventArgs e = new MenuEventArgs (I);
647 Assert.AreEqual (false, OnMenuItemClick, "BeforeMenuItemClick");
648 p.DoOnMenuItemClick (e);
649 Assert.AreEqual (true, OnMenuItemClick, "AfterMenuItemClick");
650 Assert.AreEqual (false, OnInit, "BeforeOnInit");
651 p.DoOnInit (new EventArgs());
652 Assert.AreEqual (true, OnInit, "AfterOnInit");
653 Assert.AreEqual (false, OnMenuItemDataBound, "BeforeMenuItemDataBound");
654 p.DoMenuItemDataBound(e);
655 Assert.AreEqual (true, OnMenuItemDataBound, "AfterMenuItemDataBound");
658 [Category ("NotWorking")] // NotImplementedException
659 public void Menu_BubbleEvent()
661 PokerMenu pm = new PokerMenu ();
662 CommandEventArgs commandarg = new CommandEventArgs (Menu.MenuItemClickCommandName, null);
663 Assert.AreEqual (true, pm.DoOnBubbleEvent (commandarg), "Bubble Event#1");
664 Assert.AreEqual (false, pm.DoOnBubbleEvent (new EventArgs ()), "Bubble Event#2");
667 [Category ("NunitWeb")]
668 public void Menu_PreRenderEvent ()
670 new WebTest (PageInvoker.CreateOnLoad (PreRenderEvent)).Run ();
672 public void PreRenderEvent (Page p)
674 PokerMenu pm = new PokerMenu ();
676 pm.PreRender += new EventHandler (OnPreRenderHandler);
677 Assert.AreEqual (false, OnPreRender, "BeforePreRender");
678 pm.DoOnPreRender (new EventArgs ());
679 Assert.AreEqual (true, OnPreRender, "AfterPreRender");
681 [TestFixtureTearDown]
682 public void TearDown ()
688 // A simple Template class to wrap an image.
689 public class ImageTemplate : ITemplate
691 private MyWebControl.Image myImage;
692 public MyWebControl.Image MyImage
703 public void InstantiateIn (Control container)
705 container.Controls.Add (MyImage);
709 public void MenuClass ()
712 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.menuclass.aspx", "menuclass.aspx");
714 WebTest.CopyResource (GetType (), "menuclass.aspx", "menuclass.aspx");
716 string res = new WebTest ("menuclass.aspx").Run ();
717 string menua_pattern="<table[^>]*class=\"[^\"]*menua[^\"]*\"[^>]*>";
718 Assert.IsTrue (Regex.IsMatch (res, ".*"+menua_pattern+".*",
719 RegexOptions.IgnoreCase|RegexOptions.Singleline),
720 "check that <table class=\"menua\"> is found");
721 Assert.IsFalse (Regex.IsMatch (res, ".*"+menua_pattern+".*"+menua_pattern+".*",
722 RegexOptions.IgnoreCase|RegexOptions.Singleline),
723 "check that <table class=\"menua\"> is found only once");
727 [Category ("NunitWeb")]
728 public void Menu_PostBack ()
731 WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
733 WebTest.CopyResource (GetType (), "PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
735 WebTest t = new WebTest ("PostBackMenuTest.aspx");
736 string str = t.Run ();
737 FormRequest fr = new FormRequest (t.Response, "form1");
738 fr.Controls.Add ("__EVENTTARGET");
739 fr.Controls.Add ("__EVENTARGUMENT");
740 fr.Controls["__EVENTTARGET"].Value = "Menu1";
741 fr.Controls["__EVENTARGUMENT"].Value = "root\\node2";
743 PageDelegates pd = new PageDelegates ();
744 pd.PreRender = _MenuItemsPost;
745 t.Invoker = new PageInvoker (pd);
749 public static void _MenuItemsPost (Page p)
751 foreach (Control c in p.Form.Controls) {
754 Assert.AreEqual ("node2", m.SelectedValue, "MenuItemsPostBack");