MenuTest.cs 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573
  1. //
  2. // Tests for System.Web.UI.WebControls.MenuTest.cs
  3. //
  4. // Author:
  5. // Yoni Klein ([email protected])
  6. //
  7. //
  8. // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
  9. //
  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:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  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.
  28. #if NET_2_0
  29. using NUnit.Framework;
  30. using System;
  31. using System.Collections.Generic;
  32. using System.Text;
  33. using System.Web;
  34. using System.Web.UI;
  35. using System.Web.UI.WebControls;
  36. using System.IO;
  37. using System.Drawing;
  38. using System.Threading;
  39. using MyWebControl = System.Web.UI.WebControls;
  40. using System.Collections;
  41. using MonoTests.SystemWeb.Framework;
  42. using MonoTests.stand_alone.WebHarness;
  43. using System.Text.RegularExpressions;
  44. using System.Reflection;
  45. using System.Xml;
  46. namespace MonoTests.System.Web.UI.WebControls
  47. {
  48. class PokerMenu:Menu
  49. {
  50. public PokerMenu ()
  51. {
  52. TrackViewState();
  53. }
  54. public StateBag StateBag
  55. {
  56. get { return base.ViewState; }
  57. }
  58. public HtmlTextWriterTag OnTagKey()
  59. {
  60. return TagKey;
  61. }
  62. public void DoOnDataBind(EventArgs e)
  63. {
  64. OnDataBinding(e);
  65. }
  66. public void DoOnDataBound (EventArgs e)
  67. {
  68. OnDataBound(e);
  69. }
  70. public void DoCreateChildControls ()
  71. {
  72. CreateChildControls ();
  73. }
  74. public void DoEnsureDataBound ()
  75. {
  76. EnsureDataBound ();
  77. }
  78. public void DoLoadViewState (object state)
  79. {
  80. LoadViewState (state);
  81. }
  82. public object DoSaveViewState ()
  83. {
  84. return SaveViewState ();
  85. }
  86. public void DoLoadControlState (object state)
  87. {
  88. LoadControlState (state);
  89. }
  90. public object DoSaveControlState ()
  91. {
  92. return SaveControlState ();
  93. }
  94. public void DoOnMenuItemClick (MenuEventArgs e)
  95. {
  96. OnMenuItemClick(e);
  97. }
  98. public void DoOnInit(EventArgs e)
  99. {
  100. OnInit(e);
  101. }
  102. public void DoMenuItemDataBound (MenuEventArgs e)
  103. {
  104. OnMenuItemDataBound (e);
  105. }
  106. public void DoOnPreRender (EventArgs e)
  107. {
  108. base.OnPreRender(e);
  109. }
  110. public bool DoOnBubbleEvent(EventArgs e)
  111. {
  112. return base.OnBubbleEvent(this,e);
  113. }
  114. }
  115. [Serializable]
  116. [TestFixture]
  117. public class MenuTest
  118. {
  119. [TestFixtureSetUp]
  120. public void SetUp ()
  121. {
  122. #if VISUAL_STUDIO
  123. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.menuclass.aspx", "menuclass.aspx");
  124. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
  125. #else
  126. WebTest.CopyResource (GetType (), "menuclass.aspx", "menuclass.aspx");
  127. WebTest.CopyResource (GetType (), "PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
  128. #endif
  129. }
  130. [Test]
  131. public void Menu_DefaultProperties ()
  132. {
  133. PokerMenu p = new PokerMenu ();
  134. Assert.AreEqual ("Click",PokerMenu.MenuItemClickCommandName,"Staic_MenuItemClickCommandName");
  135. Assert.AreEqual (0,p.Controls.Count,"ControlsCollection");
  136. Assert.AreEqual (0,p.DataBindings.Count,"DataBindings");
  137. Assert.AreEqual (500,p.DisappearAfter,"DisappearAfter");
  138. Assert.AreEqual (string.Empty, p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
  139. Assert.IsTrue (p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
  140. Assert.AreEqual (0, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
  141. Assert.IsNotNull (p.DynamicHoverStyle, "DynamicHoverStyle");
  142. Assert.AreEqual ("", p.DynamicItemFormatString, "DynamicItemFormatString");
  143. Assert.IsNull (p.DynamicItemTemplate, "DynamicItemTemplate");
  144. Assert.IsNotNull (p.DynamicMenuItemStyle, "DynamicMenuItemStyle");
  145. Assert.IsNotNull (p.DynamicMenuStyle, "DynamicMenuStyle");
  146. Assert.AreEqual (string.Empty,p.DynamicPopOutImageUrl,"DynamicPopOutImageUrl");
  147. Assert.IsNotNull (p.DynamicSelectedStyle, "DynamicSelectedStyle");
  148. Assert.AreEqual (string.Empty, p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
  149. Assert.AreEqual (0, p.DynamicVerticalOffset, "DynamicVerticalOffset");
  150. Assert.AreEqual (0, p.Items.Count, "Items");
  151. Assert.AreEqual (false, p.ItemWrap, "ItemWrap");
  152. Assert.IsNotNull (p.LevelSelectedStyles, "LevelSelectedStyles");
  153. Assert.IsNotNull (p.LevelSubMenuStyles, "LevelSubMenuStyles");
  154. Assert.AreEqual (3, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
  155. Assert.AreEqual (Orientation.Vertical, p.Orientation, "Orientation");
  156. Assert.AreEqual ("/", p.PathSeparator.ToString(), "PathSeparator");
  157. Assert.AreEqual (string.Empty, p.ScrollDownImageUrl, "ScrollDownImageUrl");
  158. Assert.AreEqual (null, p.SelectedItem, "p.SelectedItem");
  159. Assert.AreEqual (string.Empty, p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
  160. Assert.AreEqual (1, p.StaticDisplayLevels, "StaticDisplayLevels");
  161. Assert.AreEqual (true, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
  162. Assert.IsNotNull (p.StaticHoverStyle, "StaticHoverStyle");
  163. Assert.AreEqual ("", p.StaticItemFormatString, "StaticItemFormatString");
  164. Assert.AreEqual (null, p.StaticItemTemplate, "StaticItemTemplate");
  165. Assert.IsNotNull (p.StaticMenuItemStyle, "StaticMenuItemStyle");
  166. Assert.IsNotNull (p.StaticMenuStyle, "StaticMenuStyle");
  167. Assert.AreEqual ("", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
  168. Assert.IsNotNull (p.StaticSelectedStyle, "StaticSelectedStyle");
  169. Assert.AreEqual (Unit.Pixel(16), p.StaticSubMenuIndent, "StaticSubMenuIndent");
  170. Assert.AreEqual ("", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
  171. Assert.AreEqual ("", p.Target, "Target");
  172. Assert.IsNotNull (p.OnTagKey (), "TagKey");
  173. }
  174. [Test]
  175. public void Menu_DefaultProperties_2 ()
  176. {
  177. PokerMenu p = new PokerMenu ();
  178. Assert.AreEqual ("Skip Navigation Links", p.SkipLinkText, "SkipLinkText");
  179. Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
  180. Assert.AreEqual ("Scroll up", p.ScrollUpText, "ScrollUpText");
  181. Assert.AreEqual ("Expand {0}", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString"); //not implemented
  182. Assert.AreEqual ("Scroll down", p.ScrollDownText, "ScrollDownText");
  183. Assert.AreEqual ("Expand {0}", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString"); //not implemented
  184. }
  185. [Test]
  186. public void Menu_ChangeDefaultProperties ()
  187. {
  188. PokerMenu p = new PokerMenu ();
  189. Button B = new Button ();
  190. p.Controls.Add (B);
  191. Assert.AreEqual (1,p.Controls.Count, "ControlsCollection");
  192. MenuItemBinding M = new MenuItemBinding ();
  193. M.DataMember = "test";
  194. M.Depth = 0;
  195. M.TextField = "title";
  196. M.NavigateUrl="url";
  197. Object C = p.DataBindings;
  198. Assert.AreEqual (0, p.DataBindings.Count, "DataBindings#1");
  199. ((MenuItemBindingCollection)C).Add (M);
  200. Assert.AreEqual (1,p.DataBindings.Count,"DataBindings#2");
  201. p.DisappearAfter = 100;
  202. Assert.AreEqual (100, p.DisappearAfter, "DisappearAfter");
  203. p.DynamicBottomSeparatorImageUrl = "test.aspx";
  204. Assert.AreEqual ("test.aspx", p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
  205. p.DynamicEnableDefaultPopOutImage = false;
  206. Assert.AreEqual (false,p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
  207. p.DynamicHorizontalOffset = 10;
  208. Assert.AreEqual (10, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
  209. p.DynamicHoverStyle.BackColor = Color.Red;
  210. Assert.AreEqual (Color.Red ,p.DynamicHoverStyle.BackColor, "DynamicHoverStyle");
  211. p.DynamicItemFormatString = "Mytest";
  212. Assert.AreEqual ("Mytest", p.DynamicItemFormatString, "DynamicItemFormatString");
  213. MyWebControl.Image myImage = new MyWebControl.Image ();
  214. myImage.ImageUrl = "myimage.jpg";
  215. ImageTemplate Template = new ImageTemplate ();
  216. Template.MyImage = myImage;
  217. // end create template image
  218. p.DynamicItemTemplate = Template;
  219. Assert.IsNotNull (p.DynamicItemTemplate, "RootNodeTemplate");
  220. Assert.AreEqual (typeof (ImageTemplate), p.DynamicItemTemplate.GetType (), "RootNodeTemplate#1");
  221. p.DynamicMenuItemStyle.BackColor = Color.Red;
  222. Assert.AreEqual (Color.Red, p.DynamicMenuItemStyle.BackColor, "DynamicMenuItemStyle");
  223. p.DynamicMenuStyle.BackColor = Color.Red;
  224. Assert.AreEqual (Color.Red,p.DynamicMenuStyle.BackColor, "DynamicMenuStyle");
  225. p.DynamicPopOutImageUrl = "test";
  226. Assert.AreEqual ("test", p.DynamicPopOutImageUrl, "DynamicPopOutImageUrl");
  227. p.DynamicSelectedStyle.BackColor = Color.Red;
  228. Assert.AreEqual (Color.Red,p.DynamicSelectedStyle.BackColor, "DynamicSelectedStyle");
  229. p.DynamicTopSeparatorImageUrl = "test";
  230. Assert.AreEqual ("test", p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
  231. p.DynamicVerticalOffset = 10;
  232. Assert.AreEqual (10, p.DynamicVerticalOffset, "DynamicVerticalOffset");
  233. MenuItem I = new MenuItem ();
  234. I.NavigateUrl = "default.aspx";
  235. I.Text = "MyText";
  236. I.ToolTip = "Test";
  237. p.Items.Add (I);
  238. Assert.AreEqual (1, p.Items.Count, "Items");
  239. p.ItemWrap = true;
  240. Assert.AreEqual (true, p.ItemWrap, "ItemWrap");
  241. MenuItemStyle S = new MenuItemStyle ();
  242. S.BackColor = Color.Red;
  243. p.LevelSelectedStyles.Add (S);
  244. Assert.AreEqual (1,p.LevelSelectedStyles.Count , "LevelSelectedStyles#1");
  245. Assert.AreEqual (true, p.LevelSelectedStyles.Contains (S), "LevelSelectedStyles#2");
  246. SubMenuStyle SM = new SubMenuStyle ();
  247. SM.BackColor = Color.Red;
  248. p.LevelSubMenuStyles.Add (SM);
  249. Assert.AreEqual(1, p.LevelSubMenuStyles.Count, "LevelSubMenuStyles#1");
  250. Assert.AreEqual (true, p.LevelSubMenuStyles.Contains (SM), "LevelSubMenuStyles#2");
  251. p.MaximumDynamicDisplayLevels = 5;
  252. Assert.AreEqual (5, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
  253. p.Orientation = Orientation.Horizontal;
  254. Assert.AreEqual (Orientation.Horizontal, p.Orientation, "Orientation");
  255. p.PathSeparator = 'A';
  256. Assert.AreEqual ('A', p.PathSeparator, "PathSeparator");
  257. p.ScrollDownImageUrl = "test";
  258. Assert.AreEqual ("test", p.ScrollDownImageUrl, "ScrollDownImageUrl");
  259. p.ScrollDownText = "test";
  260. Assert.AreEqual ("test", p.ScrollDownText, "ScrollDownText");
  261. // This properties will be checked in events part of tests
  262. // Assert.AreEqual (0, p.SelectedItem, "p.SelectedItem");
  263. // Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
  264. p.SkipLinkText = "test";
  265. Assert.AreEqual ("test", p.SkipLinkText, "SkipLinkText");
  266. p.StaticBottomSeparatorImageUrl = "test";
  267. Assert.AreEqual ("test", p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
  268. p.StaticDisplayLevels = 2;
  269. Assert.AreEqual (2, p.StaticDisplayLevels, "StaticDisplayLevels");
  270. p.StaticEnableDefaultPopOutImage = false;
  271. Assert.AreEqual (false, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
  272. p.StaticHoverStyle.BackColor = Color.Red;
  273. Assert.AreEqual(Color.Red, p.StaticHoverStyle.BackColor, "StaticHoverStyle");
  274. p.StaticItemFormatString = "test";
  275. Assert.AreEqual ("test", p.StaticItemFormatString, "StaticItemFormatString");
  276. p.StaticItemTemplate = Template;
  277. Assert.IsNotNull (p.StaticItemTemplate, "StaticItemTemplate");
  278. p.StaticMenuItemStyle.BackColor = Color.Red;
  279. Assert.AreEqual(Color.Red,p.StaticMenuItemStyle.BackColor, "StaticMenuItemStyle");
  280. p.StaticMenuStyle.BackColor = Color.Red;
  281. Assert.AreEqual (Color.Red,p.StaticMenuStyle.BackColor, "StaticMenuStyle");
  282. p.StaticPopOutImageUrl = "test";
  283. Assert.AreEqual ("test", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
  284. p.StaticSelectedStyle.BackColor = Color.Red;
  285. Assert.AreEqual(Color.Red,p.StaticSelectedStyle.BackColor, "StaticSelectedStyle");
  286. p.StaticSubMenuIndent = 20;
  287. Assert.AreEqual (Unit.Pixel (20), p.StaticSubMenuIndent, "StaticSubMenuIndent");
  288. p.StaticTopSeparatorImageUrl = "test";
  289. Assert.AreEqual ("test", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
  290. p.Target = "test";
  291. Assert.AreEqual ("test", p.Target, "Target");
  292. }
  293. [Test]
  294. public void Menu_ChangeDefaultProperties_2 ()
  295. {
  296. PokerMenu p = new PokerMenu ();
  297. p.ScrollUpText = "test";
  298. Assert.AreEqual ("test", p.ScrollUpText, "ScrollUpText");
  299. p.DynamicPopOutImageTextFormatString = "test";
  300. Assert.AreEqual ("test", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString");
  301. p.StaticPopOutImageTextFormatString = "test";
  302. Assert.AreEqual ("test", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString");
  303. }
  304. [Test]
  305. public void Menu_ControlState()
  306. {
  307. PokerMenu p = new PokerMenu ();
  308. MenuItem I1 = new MenuItem ();
  309. MenuItem I2 = new MenuItem ();
  310. p.Items.Add (I1);
  311. p.Items.Add (I2);
  312. MenuEventArgs e = new MenuEventArgs (I1);
  313. p.DoOnMenuItemClick (e);
  314. object state = p.DoSaveControlState ();
  315. p.DoLoadControlState (state);
  316. e = new MenuEventArgs (I2);
  317. p.DoOnMenuItemClick (e);
  318. Console.WriteLine();
  319. }
  320. [Test]
  321. public void Menu_FindItem ()
  322. {
  323. PokerMenu p = new PokerMenu ();
  324. MenuItem I = new MenuItem ();
  325. string path = I.ValuePath;
  326. p.Items.Add (I);
  327. MenuItem V = new MenuItem ();
  328. I.ChildItems.Add (V);
  329. MenuItem copy = p.FindItem (path);
  330. Assert.AreEqual (I, copy, "FindItem#1");
  331. path = V.ValuePath;
  332. Assert.AreEqual (V, p.FindItem (path), "FindItem#2");
  333. }
  334. // Set & Get DesignModeState dosn't tested
  335. // Can't test on Page Load event
  336. [Test]
  337. [Category ("NunitWeb")]
  338. public void Menu_RenderBeginTag ()
  339. {
  340. new WebTest (PageInvoker.CreateOnLoad (_BeginTagRender)).Run ();
  341. }
  342. public static void _BeginTagRender(Page p)
  343. {
  344. PokerMenu pm = new PokerMenu ();
  345. p.Form.Controls.Add (pm);
  346. StringWriter sw = new StringWriter ();
  347. HtmlTextWriter tw = new HtmlTextWriter (sw);
  348. pm.RenderBeginTag (tw);
  349. string RenderedControlHtml = sw.ToString();
  350. string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
  351. <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&amp;t=632784640484505569""
  352. width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
  353. </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">";
  354. HtmlDiff.AssertAreEqual(OriginControlHtml,RenderedControlHtml,"RenderBeginTag");
  355. }
  356. [Test]
  357. [Category ("NunitWeb")]
  358. public void Menu_RenderEndTag ()
  359. {
  360. new WebTest (PageInvoker.CreateOnLoad (_EndTagRender)).Run ();
  361. }
  362. public static void _EndTagRender (Page p)
  363. {
  364. PokerMenu pm = new PokerMenu ();
  365. p.Form.Controls.Add (pm);
  366. StringWriter sw = new StringWriter ();
  367. HtmlTextWriter tw = new HtmlTextWriter (sw);
  368. pm.RenderBeginTag (tw);
  369. pm.RenderEndTag (tw);
  370. string RenderedControlHtml = sw.ToString ();
  371. string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
  372. <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&amp;t=632784640484505569""
  373. width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
  374. </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">
  375. </table><a id=""ctl01_SkipLink""></a>";
  376. HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderEndTag");
  377. }
  378. [Test]
  379. public void Menu_DataBind () {
  380. Page p = new Page ();
  381. Menu m = CreateMenu ();
  382. m.DataBinding += new EventHandler (m_DataBinding);
  383. m.DataBound += new EventHandler (m_DataBound);
  384. p.Controls.Add (m);
  385. ResetTemplateBoundFlags ();
  386. m.DataBind ();
  387. }
  388. static void m_DataBinding (object sender, EventArgs e) {
  389. Assert.AreEqual (true, _StaticTemplateCreated, "StaticTemplateCreated");
  390. Assert.AreEqual (true, _DynamicTemplateCreated, "DynamicTemplateCreated");
  391. }
  392. static void m_DataBound (object sender, EventArgs e) {
  393. Assert.AreEqual (true, _StaticTemplateBound, "StaticTemplateBound");
  394. Assert.AreEqual (true, _DynamicTemplateBound, "DynamicTemplateBound");
  395. }
  396. private static void ResetTemplateBoundFlags() {
  397. _StaticTemplateBound = false;
  398. _DynamicTemplateBound = false;
  399. _StaticTemplateCreated = false;
  400. _DynamicTemplateCreated = false;
  401. }
  402. static Menu CreateMenu () {
  403. Menu m = new Menu ();
  404. MenuItem rootItem = new MenuItem ("RootItem-Text", "RootItem-Value");
  405. m.Items.Add (rootItem);
  406. rootItem.ChildItems.Add (new MenuItem ("Node1-Text", "Node1-Value"));
  407. rootItem.ChildItems.Add (new MenuItem ("Node2-Text", "Node2-Value"));
  408. m.StaticItemTemplate = new CompiledTemplateBuilder (_StaticItemTemplate);
  409. m.DynamicItemTemplate = new CompiledTemplateBuilder (_DynamicItemTemplate);
  410. return m;
  411. }
  412. [Test]
  413. [Category ("NunitWeb")]
  414. public void Menu_DataBindByDataSourceID () {
  415. PageDelegates pd = new PageDelegates ();
  416. pd.Init = Menu_DataBindByDataSourceID_PageInit;
  417. pd.PreRenderComplete = Menu_DataBindByDataSourceID_PagePreRenderComplete;
  418. PageInvoker pi = new PageInvoker (pd);
  419. new WebTest (pi).Run ();
  420. }
  421. public static void Menu_DataBindByDataSourceID_PageInit (Page p) {
  422. XmlDataSource xmlDs = new XmlDataSource ();
  423. xmlDs.ID = "XmlDataSource";
  424. xmlDs.Data = "<root><node /><node /><node><subnode /><subnode /></node></root>";
  425. p.Form.Controls.Add (xmlDs);
  426. Menu m = CreateMenu ();
  427. m.DataSourceID = "XmlDataSource";
  428. m.MenuItemDataBound += new MenuEventHandler (m_MenuItemDataBound);
  429. p.Form.Controls.Add (m);
  430. ResetTemplateBoundFlags ();
  431. _MenuItemBoundCount = 0;
  432. _MenuItemCreatedCount = 0;
  433. }
  434. public static void m_MenuItemDataBound (object sender, MenuEventArgs e) {
  435. _MenuItemBoundCount++;
  436. }
  437. [Test]
  438. [Category ("NunitWeb")]
  439. public void Menu_Templates () {
  440. PageDelegates pd = new PageDelegates ();
  441. pd.Init = Menu_Templates_PageInit;
  442. pd.PreRenderComplete = Menu_Templates_PagePreRenderComplete;
  443. PageInvoker pi = new PageInvoker (pd);
  444. new WebTest (pi).Run ();
  445. }
  446. public static void Menu_Templates_PageInit (Page p) {
  447. Menu m = CreateMenu ();
  448. p.Form.Controls.Add (m);
  449. ResetTemplateBoundFlags ();
  450. }
  451. static bool _StaticTemplateBound;
  452. static bool _DynamicTemplateBound;
  453. static bool _StaticTemplateCreated;
  454. static bool _DynamicTemplateCreated;
  455. static int _MenuItemBoundCount;
  456. static int _MenuItemCreatedCount;
  457. private static void CheckTemplateBoundFlags () {
  458. Assert.AreEqual (true, _StaticTemplateCreated, "StaticTemplateCreated");
  459. Assert.AreEqual (true, _DynamicTemplateCreated, "DynamicTemplateCreated");
  460. Assert.AreEqual (true, _StaticTemplateBound, "StaticTemplateBound");
  461. Assert.AreEqual (true, _DynamicTemplateBound, "DynamicTemplateBound");
  462. }
  463. public static void Menu_Templates_PagePreRenderComplete (Page p) {
  464. CheckTemplateBoundFlags ();
  465. }
  466. public static void Menu_DataBindByDataSourceID_PagePreRenderComplete (Page p) {
  467. CheckTemplateBoundFlags ();
  468. Assert.AreEqual (6, _MenuItemBoundCount, "MenuItemBoundCount");
  469. Assert.AreEqual (6, _MenuItemCreatedCount, "MenuItemBoundCount");
  470. }
  471. private static void _StaticItemTemplate (Control container) {
  472. _StaticTemplateCreated = true;
  473. _MenuItemCreatedCount++;
  474. Literal l = new Literal ();
  475. container.Controls.Add (l);
  476. container.DataBinding += new EventHandler (StaticTemplate_DataBinding);
  477. }
  478. static void StaticTemplate_DataBinding (object sender, EventArgs e) {
  479. _StaticTemplateBound = true;
  480. }
  481. private static void _DynamicItemTemplate (Control container) {
  482. _DynamicTemplateCreated = true;
  483. _MenuItemCreatedCount++;
  484. Literal l = new Literal ();
  485. container.Controls.Add (l);
  486. container.DataBinding += new EventHandler (DynamicTemplate_DataBinding);
  487. }
  488. static void DynamicTemplate_DataBinding (object sender, EventArgs e) {
  489. _DynamicTemplateBound = true;
  490. }
  491. [Test]
  492. public void Menu_ViewState()
  493. {
  494. PokerMenu b = new PokerMenu ();
  495. PokerMenu copy = new PokerMenu ();
  496. b.ToolTip = "mytest1";
  497. b.Target = "mytest2";
  498. b.BackColor = Color.Red;
  499. b.BorderColor = Color.Red;
  500. b.BorderStyle = BorderStyle.Dotted;
  501. b.BorderWidth = 1;
  502. b.ForeColor = Color.Red;
  503. b.Height = 100;
  504. b.MaximumDynamicDisplayLevels = 2;
  505. b.Orientation = Orientation.Vertical;
  506. b.PathSeparator = '-';
  507. b.ScrollDownImageUrl = "test";
  508. b.ScrollDownText = "test";
  509. b.ScrollUpImageUrl = "test";
  510. b.ScrollUpText = "test";
  511. b.SkipLinkText = "test";
  512. b.Visible = false;
  513. b.Width = 100;
  514. b.TabIndex = 1;
  515. object state = b.DoSaveViewState ();
  516. copy.DoLoadViewState (state);
  517. Assert.AreEqual ("mytest1", copy.ToolTip, "ViewState#1");
  518. Assert.AreEqual ("mytest2", copy.Target, "ViewState#2");
  519. Assert.AreEqual (Color.Red, copy.BackColor, "ViewState#3");
  520. Assert.AreEqual (Color.Red, copy.BorderColor , "ViewState#4");
  521. Assert.AreEqual (BorderStyle.Dotted, copy.BorderStyle, "ViewState#5");
  522. Assert.AreEqual (Unit.Pixel(1), copy.BorderWidth, "ViewState#6");
  523. Assert.AreEqual (Color.Red, copy.ForeColor, "ViewState#8");
  524. Assert.AreEqual (Unit.Pixel(100), copy.Height, "ViewState#9");
  525. Assert.AreEqual (2, copy.MaximumDynamicDisplayLevels, "ViewState#10");
  526. Assert.AreEqual (Orientation.Vertical, copy.Orientation, "ViewState#11");
  527. Assert.AreEqual ('-', copy.PathSeparator, "ViewState#12");
  528. Assert.AreEqual ("test", copy.ScrollDownImageUrl, "ViewState#13");
  529. Assert.AreEqual ("test", copy.ScrollDownText, "ViewState#14");
  530. Assert.AreEqual ("test", copy.ScrollUpImageUrl, "ViewState#15");
  531. Assert.AreEqual ("test", copy.ScrollUpText, "ViewState#16");
  532. Assert.AreEqual ("test", copy.SkipLinkText, "ViewState#17");
  533. Assert.AreEqual (1, copy.TabIndex, "ViewState#18");
  534. Assert.AreEqual (false, copy.Visible, "ViewState#19");
  535. Assert.AreEqual (Unit.Pixel (100), copy.Width, "ViewState#20");
  536. }
  537. [Test]
  538. public void Menu_ViewStateNotWorking()
  539. {
  540. PokerMenu b = new PokerMenu ();
  541. PokerMenu copy = new PokerMenu ();
  542. b.Font.Size = 10;
  543. object state = b.DoSaveViewState ();
  544. copy.DoLoadViewState (state);
  545. Assert.AreEqual ("10pt", copy.Font.Size.ToString() , "ViewState#7");
  546. }
  547. [Test]
  548. public void Menu_ViewStateItems () {
  549. PokerMenu b = new PokerMenu ();
  550. MenuItem R = new MenuItem ("root", "value-root");
  551. MenuItem N1 = new MenuItem ("node1", "value-node1");
  552. MenuItem N2 = new MenuItem ("node2", "value-node2");
  553. R.ChildItems.Add (N1);
  554. R.ChildItems.Add (N2);
  555. b.Items.Add (R);
  556. PokerMenu copy = new PokerMenu ();
  557. object state = b.DoSaveViewState ();
  558. copy.DoLoadViewState (state);
  559. Assert.AreEqual (1, copy.Items.Count, "ViewStateItems#1");
  560. Assert.AreEqual (2, copy.Items [0].ChildItems.Count, "ViewStateItems#2");
  561. Assert.AreEqual (0, copy.Items [0].ChildItems [0].ChildItems.Count, "ViewStateItems#3");
  562. Assert.AreEqual ("node1", copy.Items [0].ChildItems [0].Text, "ViewStateItems#4");
  563. Assert.AreEqual ("value-node1", copy.Items [0].ChildItems [0].Value, "ViewStateItems#5");
  564. Assert.AreEqual (false, copy.Items [0].ChildItems [0].DataBound, "ViewStateItems#6");
  565. Assert.AreEqual ("", copy.Items [0].ChildItems [0].DataPath, "ViewStateItems#7");
  566. }
  567. [Test]
  568. public void Menu_ViewStateDataBoundItems () {
  569. PokerMenu b = new PokerMenu ();
  570. SetDataBindings (b);
  571. b.DataSource = CreateXmlDataSource ();
  572. b.DataBind ();
  573. PokerMenu copy = new PokerMenu ();
  574. object state = b.DoSaveViewState ();
  575. copy.DoLoadViewState (state);
  576. CheckMenuItems (copy);
  577. }
  578. private static void CheckMenuItems (Menu m) {
  579. Assert.AreEqual (1, m.Items.Count, "CheckMenuItems#1");
  580. Assert.AreEqual (10, m.Items [0].ChildItems.Count, "CheckMenuItems#2");
  581. Assert.AreEqual (0, m.Items [0].ChildItems [0].ChildItems.Count, "CheckMenuItems#3");
  582. Assert.AreEqual (true, m.Items [0].ChildItems [0].DataBound, "CheckMenuItems#4");
  583. Assert.AreEqual ("/*[position()=1]/*[position()=1]", m.Items [0].ChildItems [0].DataPath, "CheckMenuItems#5");
  584. Assert.AreEqual (false, m.Items [0].Enabled, "CheckMenuItems_Enabled#1");
  585. Assert.AreEqual (true, m.Items [0].ChildItems [0].Enabled, "CheckMenuItems_Enabled#2");
  586. Assert.AreEqual (false, m.Items [0].ChildItems [1].Enabled, "CheckMenuItems_Enabled#3");
  587. Assert.AreEqual (false, m.Items [0].ChildItems [2].Enabled, "CheckMenuItems_Enabled#4");
  588. Assert.AreEqual (true, m.Items [0].ChildItems [2].ChildItems [0].Enabled, "CheckMenuItems_Enabled#5");
  589. Assert.AreEqual ("img#root", m.Items [0].ImageUrl, "CheckMenuItems_ImageUrl#1");
  590. Assert.AreEqual ("img#1", m.Items [0].ChildItems [0].ImageUrl, "CheckMenuItems_ImageUrl#2");
  591. Assert.AreEqual ("img#2", m.Items [0].ChildItems [1].ImageUrl, "CheckMenuItems_ImageUrl#3");
  592. Assert.AreEqual ("img#default", m.Items [0].ChildItems [2].ImageUrl, "CheckMenuItems_ImageUrl#4");
  593. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].ImageUrl, "CheckMenuItems_ImageUrl#5");
  594. Assert.AreEqual ("url#root", m.Items [0].NavigateUrl, "CheckMenuItems_NavigateUrl#1");
  595. Assert.AreEqual ("url#1", m.Items [0].ChildItems [0].NavigateUrl, "CheckMenuItems_NavigateUrl#2");
  596. Assert.AreEqual ("url#2", m.Items [0].ChildItems [1].NavigateUrl, "CheckMenuItems_NavigateUrl#3");
  597. Assert.AreEqual ("url#default", m.Items [0].ChildItems [2].NavigateUrl, "CheckMenuItems_NavigateUrl#4");
  598. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].NavigateUrl, "CheckMenuItems_NavigateUrl#5");
  599. Assert.AreEqual ("popoutimg#root", m.Items [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#1");
  600. Assert.AreEqual ("popoutimg#1", m.Items [0].ChildItems [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#2");
  601. Assert.AreEqual ("popoutimg#2", m.Items [0].ChildItems [1].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#3");
  602. Assert.AreEqual ("popoutimg#default", m.Items [0].ChildItems [2].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#4");
  603. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#5");
  604. Assert.AreEqual (false, m.Items [0].Selectable, "CheckMenuItems_Selectable#1");
  605. Assert.AreEqual (true, m.Items [0].ChildItems [0].Selectable, "CheckMenuItems_Selectable#2");
  606. Assert.AreEqual (false, m.Items [0].ChildItems [1].Selectable, "CheckMenuItems_Selectable#3");
  607. Assert.AreEqual (false, m.Items [0].ChildItems [2].Selectable, "CheckMenuItems_Selectable#4");
  608. Assert.AreEqual (true, m.Items [0].ChildItems [2].ChildItems [0].Selectable, "CheckMenuItems_Selectable#5");
  609. Assert.AreEqual ("separatorimg#root", m.Items [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#1");
  610. Assert.AreEqual ("separatorimg#1", m.Items [0].ChildItems [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#2");
  611. Assert.AreEqual ("separatorimg#2", m.Items [0].ChildItems [1].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#3");
  612. Assert.AreEqual ("separatorimg#default", m.Items [0].ChildItems [2].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#4");
  613. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#5");
  614. Assert.AreEqual ("target#root", m.Items [0].Target, "CheckMenuItems_Target#1");
  615. Assert.AreEqual ("target#1", m.Items [0].ChildItems [0].Target, "CheckMenuItems_Target#2");
  616. Assert.AreEqual ("target#2", m.Items [0].ChildItems [1].Target, "CheckMenuItems_Target#3");
  617. Assert.AreEqual ("target#default", m.Items [0].ChildItems [2].Target, "CheckMenuItems_Target#4");
  618. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].Target, "CheckMenuItems_Target#5");
  619. Assert.AreEqual ("text#root", m.Items [0].Text, "CheckMenuItems_Text#1");
  620. Assert.AreEqual ("text#1", m.Items [0].ChildItems [0].Text, "CheckMenuItems_Text#2");
  621. Assert.AreEqual ("text#2", m.Items [0].ChildItems [1].Text, "CheckMenuItems_Text#3");
  622. Assert.AreEqual ("text#", m.Items [0].ChildItems [2].Text, "CheckMenuItems_Text#4");
  623. Assert.AreEqual ("subnode", m.Items [0].ChildItems [2].ChildItems [0].Text, "CheckMenuItems_Text#5");
  624. Assert.AreEqual ("tooltip#root", m.Items [0].ToolTip, "CheckMenuItems_ToolTip#1");
  625. Assert.AreEqual ("tooltip#1", m.Items [0].ChildItems [0].ToolTip, "CheckMenuItems_ToolTip#2");
  626. Assert.AreEqual ("tooltip#2", m.Items [0].ChildItems [1].ToolTip, "CheckMenuItems_ToolTip#3");
  627. Assert.AreEqual ("tooltip#default", m.Items [0].ChildItems [2].ToolTip, "CheckMenuItems_ToolTip#4");
  628. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].ToolTip, "CheckMenuItems_ToolTip#5");
  629. Assert.AreEqual ("value#root", m.Items [0].Value, "CheckMenuItems_Value#1");
  630. Assert.AreEqual ("value#1", m.Items [0].ChildItems [0].Value, "CheckMenuItems_Value#2");
  631. Assert.AreEqual ("value#2", m.Items [0].ChildItems [1].Value, "CheckMenuItems_Value#3");
  632. Assert.AreEqual ("value#default", m.Items [0].ChildItems [2].Value, "CheckMenuItems_Value#4");
  633. Assert.AreEqual ("subnode", m.Items [0].ChildItems [2].ChildItems [0].Value, "CheckMenuItems_Value#5");
  634. Assert.AreEqual ("text#extra1", m.Items [0].ChildItems [3].Text, "CheckMenuItems_Extra1#1");
  635. Assert.AreEqual ("text#extra1", m.Items [0].ChildItems [3].Value, "CheckMenuItems_Extra1#2");
  636. Assert.AreEqual ("value#extra2", m.Items [0].ChildItems [4].Text, "CheckMenuItems_Extra2#1");
  637. Assert.AreEqual ("value#extra2", m.Items [0].ChildItems [4].Value, "CheckMenuItems_Extra2#2");
  638. Assert.AreEqual ("text#extra3", m.Items [0].ChildItems [5].Text, "CheckMenuItems_Extra3#1");
  639. Assert.AreEqual ("", m.Items [0].ChildItems [5].Value, "CheckMenuItems_Extra3#2");
  640. Assert.AreEqual ("", m.Items [0].ChildItems [6].Text, "CheckMenuItems_Extra3#3");
  641. Assert.AreEqual ("value#extra3", m.Items [0].ChildItems [6].Value, "CheckMenuItems_Extra3#4");
  642. Assert.AreEqual ("", m.Items [0].ChildItems [7].Text, "CheckMenuItems_Extra3#5");
  643. Assert.AreEqual ("", m.Items [0].ChildItems [7].Value, "CheckMenuItems_Extra3#6");
  644. Assert.AreEqual ("text#extra4", m.Items [0].ChildItems [8].Text, "CheckMenuItems_Extra4#1");
  645. Assert.AreEqual ("text#default", m.Items [0].ChildItems [8].Value, "CheckMenuItems_Extra4#2");
  646. Assert.AreEqual ("value#default", m.Items [0].ChildItems [9].Text, "CheckMenuItems_Extra5#1");
  647. Assert.AreEqual ("value#extra5", m.Items [0].ChildItems [9].Value, "CheckMenuItems_Extra5#2");
  648. }
  649. void SetDataBindings (Menu menu) {
  650. MenuItemBinding b = new MenuItemBinding ();
  651. b.DataMember = "node";
  652. b.EnabledField = "enabled";
  653. b.Enabled = false;
  654. b.ImageUrlField = "img";
  655. b.ImageUrl = "img#default";
  656. b.NavigateUrlField = "url";
  657. b.NavigateUrl = "url#default";
  658. b.PopOutImageUrlField = "popoutimg";
  659. b.PopOutImageUrl = "popoutimg#default";
  660. b.SelectableField = "selectable";
  661. b.Selectable = false;
  662. b.SeparatorImageUrlField = "separatorimg";
  663. b.SeparatorImageUrl = "separatorimg#default";
  664. b.TargetField = "target";
  665. b.Target = "target#default";
  666. b.FormatString = "text#{0}";
  667. b.TextField = "text";
  668. b.Text = "text#default";
  669. b.ToolTipField = "tooltip";
  670. b.ToolTip = "tooltip#default";
  671. b.ValueField = "value";
  672. b.Value = "value#default";
  673. menu.DataBindings.Add (b);
  674. b = new MenuItemBinding ();
  675. b.DataMember = "root";
  676. b.Enabled = false;
  677. b.ImageUrl = "img#root";
  678. b.NavigateUrl = "url#root";
  679. b.PopOutImageUrl = "popoutimg#root";
  680. b.Selectable = false;
  681. b.SeparatorImageUrl = "separatorimg#root";
  682. b.Target = "target#root";
  683. b.Text = "text#root";
  684. b.ToolTip = "tooltip#root";
  685. b.Value = "value#root";
  686. menu.DataBindings.Add (b);
  687. b = new MenuItemBinding ();
  688. b.DataMember = "extra1";
  689. b.Text = "text#extra1";
  690. menu.DataBindings.Add (b);
  691. b = new MenuItemBinding ();
  692. b.DataMember = "extra2";
  693. b.Value = "value#extra2";
  694. menu.DataBindings.Add (b);
  695. b = new MenuItemBinding ();
  696. b.DataMember = "extra3";
  697. b.TextField = "text";
  698. b.ValueField = "value";
  699. menu.DataBindings.Add (b);
  700. b = new MenuItemBinding ();
  701. b.DataMember = "extra4";
  702. b.TextField = "text";
  703. b.Text = "text#default";
  704. b.ValueField = "value";
  705. menu.DataBindings.Add (b);
  706. b = new MenuItemBinding ();
  707. b.DataMember = "extra5";
  708. b.TextField = "text";
  709. b.Value = "value#default";
  710. b.ValueField = "value";
  711. menu.DataBindings.Add (b);
  712. }
  713. XmlDataSource CreateXmlDataSource () {
  714. XmlDataSource xmlDs = new XmlDataSource ();
  715. xmlDs.ID = "XmlDataSource";
  716. xmlDs.Data = "<root>"+
  717. "<node url=\"url#1\" img=\"img#1\" enabled=\"true\" selectable=\"true\" popoutimg=\"popoutimg#1\" separatorimg=\"separatorimg#1\" target=\"target#1\" text=\"1\" tooltip=\"tooltip#1\" value=\"value#1\" />" +
  718. "<node url=\"url#2\" img=\"img#2\" enabled=\"false\" selectable=\"false\" popoutimg=\"popoutimg#2\" separatorimg=\"separatorimg#2\" target=\"target#2\" text=\"2\" tooltip=\"tooltip#2\" value=\"value#2\" />" +
  719. "<node url=\"\" img=\"\" enabled=\"\" selectable=\"\" popoutimg=\"\" separatorimg=\"\" target=\"\" text=\"\" tooltip=\"\" value=\"\">" +
  720. "<subnode url=\"url#unreachable\" img=\"img#unreachable\" enabled=\"false\" selectable=\"false\" popoutimg=\"popoutimg#unreachable\" separatorimg=\"separatorimg#unreachable\" target=\"target#unreachable\" text=\"text#unreachable\" tooltip=\"tooltip#unreachable\" value=\"value#unreachable\" />" +
  721. "<subnode /></node>"+
  722. "<extra1 /><extra2 />"+
  723. "<extra3 text=\"text#extra3\" value=\"\" />" +
  724. "<extra3 text=\"\" value=\"value#extra3\" />" +
  725. "<extra3 text=\"\" value=\"\" />" +
  726. "<extra4 text=\"text#extra4\" value=\"\" />" +
  727. "<extra5 text=\"\" value=\"value#extra5\" />" +
  728. "</root>";
  729. return xmlDs;
  730. }
  731. [Test]
  732. public void Menu_DataBindings () {
  733. Menu m = new Menu ();
  734. SetDataBindings (m);
  735. m.DataSource = CreateXmlDataSource ();
  736. m.DataBind ();
  737. CheckMenuItems (m);
  738. }
  739. // Rendering Menu controll with some possible options, styles and items
  740. [Test]
  741. [Category ("NunitWeb")]
  742. public void Menu_DefaultRender ()
  743. {
  744. string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (_DefaultRender)).Run ();
  745. string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
  746. string OriginControlHtml = "";
  747. HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderDefault");
  748. }
  749. // All this methods are delegates for running tests in host assembly.
  750. public static void _DefaultRender (Page p)
  751. {
  752. LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
  753. LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
  754. Menu menu = new Menu ();
  755. p.Form.Controls.Add (lcb);
  756. p.Form.Controls.Add (menu);
  757. p.Form.Controls.Add (lce);
  758. }
  759. [Test]
  760. [Category ("NunitWeb")]
  761. public void Menu_RenderStaticItems () {
  762. string RenderedPageHtml, RenderedControlHtml, OriginControlHtml;
  763. RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Vertical)).Run ();
  764. RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
  765. #region OriginControlHtml
  766. OriginControlHtml = @"<a href=""#Menu_SkipLink""><img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><table id=""Menu"" class=""Menu_2"" cellpadding=""0"" cellspacing=""0"" border=""0"">
  767. <tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun0"">
  768. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  769. <tr>
  770. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value')"">one-black</a></td>
  771. </tr>
  772. </table></td>
  773. </tr><tr>
  774. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  775. <tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun1"">
  776. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  777. <tr>
  778. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value')"" style=""margin-left:16px;"">two-black-1</a></td>
  779. </tr>
  780. </table></td>
  781. </tr><tr>
  782. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  783. <tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun2"">
  784. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  785. <tr>
  786. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value')"" style=""margin-left:32px;"">three-black-1</a></td>
  787. </tr>
  788. </table></td>
  789. </tr><tr>
  790. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  791. <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun3"">
  792. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  793. <tr>
  794. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value\\four-black-1-value')"" style=""margin-left:48px;"">four-black-1</a></td>
  795. </tr>
  796. </table></td>
  797. </tr><tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun4"">
  798. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  799. <tr>
  800. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value\\four-black-2-value')"" style=""margin-left:48px;"">four-black-2</a></td>
  801. </tr>
  802. </table></td>
  803. </tr>
  804. </table></td>
  805. </tr><tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun5"">
  806. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  807. <tr>
  808. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value')"" style=""margin-left:32px;"">three-black-2</a></td>
  809. </tr>
  810. </table></td>
  811. </tr><tr>
  812. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  813. <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun6"">
  814. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  815. <tr>
  816. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value\\four-black-3-value')"" style=""margin-left:48px;"">four-black-3</a></td>
  817. </tr>
  818. </table></td>
  819. </tr><tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun7"">
  820. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  821. <tr>
  822. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value\\four-black-4-value')"" style=""margin-left:48px;"">four-black-4</a></td>
  823. </tr>
  824. </table></td>
  825. </tr>
  826. </table></td>
  827. </tr>
  828. </table></td>
  829. </tr><tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun8"">
  830. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  831. <tr>
  832. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value')"" style=""margin-left:16px;"">two-black-2</a></td>
  833. </tr>
  834. </table></td>
  835. </tr><tr>
  836. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  837. <tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun9"">
  838. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  839. <tr>
  840. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value')"" style=""margin-left:32px;"">three-black-3</a></td>
  841. </tr>
  842. </table></td>
  843. </tr><tr>
  844. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  845. <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun10"">
  846. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  847. <tr>
  848. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value\\four-black-5-value')"" style=""margin-left:48px;"">four-black-5</a></td>
  849. </tr>
  850. </table></td>
  851. </tr><tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun11"">
  852. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  853. <tr>
  854. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value\\four-black-6-value')"" style=""margin-left:48px;"">four-black-6</a></td>
  855. </tr>
  856. </table></td>
  857. </tr>
  858. </table></td>
  859. </tr><tr onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun12"">
  860. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  861. <tr>
  862. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value')"" style=""margin-left:32px;"">three-black-4</a></td>
  863. </tr>
  864. </table></td>
  865. </tr><tr>
  866. <td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  867. <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun13"">
  868. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  869. <tr>
  870. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value\\four-black-7-value')"" style=""margin-left:48px;"">four-black-7</a></td>
  871. </tr>
  872. </table></td>
  873. </tr><tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun14"">
  874. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  875. <tr>
  876. <td style=""white-space:nowrap;width:100%;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value\\four-black-8-value')"" style=""margin-left:48px;"">four-black-8</a></td>
  877. </tr>
  878. </table></td>
  879. </tr>
  880. </table></td>
  881. </tr>
  882. </table></td>
  883. </tr>
  884. </table></td>
  885. </tr>
  886. </table><a id=""Menu_SkipLink""></a>";
  887. #endregion
  888. HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Vertical");
  889. RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Horizontal)).Run ();
  890. RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
  891. #region OriginControlHtml
  892. OriginControlHtml = @"<a href=""#Menu_SkipLink""><img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><table id=""Menu"" class=""Menu_2"" cellpadding=""0"" cellspacing=""0"" border=""0"">
  893. <tr>
  894. <td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun0""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  895. <tr>
  896. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value')"">one-black</a></td>
  897. </tr>
  898. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  899. <tr>
  900. <td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun1""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  901. <tr>
  902. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value')"" style=""margin-left:16px;"">two-black-1</a></td>
  903. </tr>
  904. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  905. <tr>
  906. <td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun2""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  907. <tr>
  908. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value')"" style=""margin-left:32px;"">three-black-1</a></td>
  909. </tr>
  910. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  911. <tr>
  912. <td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun3""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  913. <tr>
  914. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value\\four-black-1-value')"" style=""margin-left:48px;"">four-black-1</a></td>
  915. </tr>
  916. </table></td><td style=""width:3px;""></td><td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun4""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  917. <tr>
  918. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-1-value\\four-black-2-value')"" style=""margin-left:48px;"">four-black-2</a></td>
  919. </tr>
  920. </table></td><td style=""width:3px;""></td>
  921. </tr>
  922. </table></td><td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun5""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  923. <tr>
  924. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value')"" style=""margin-left:32px;"">three-black-2</a></td>
  925. </tr>
  926. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  927. <tr>
  928. <td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun6""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  929. <tr>
  930. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value\\four-black-3-value')"" style=""margin-left:48px;"">four-black-3</a></td>
  931. </tr>
  932. </table></td><td style=""width:3px;""></td><td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun7""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  933. <tr>
  934. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-1-value\\three-black-2-value\\four-black-4-value')"" style=""margin-left:48px;"">four-black-4</a></td>
  935. </tr>
  936. </table></td><td style=""width:3px;""></td>
  937. </tr>
  938. </table></td>
  939. </tr>
  940. </table></td><td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun8""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  941. <tr>
  942. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value')"" style=""margin-left:16px;"">two-black-2</a></td>
  943. </tr>
  944. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  945. <tr>
  946. <td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun9""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  947. <tr>
  948. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value')"" style=""margin-left:32px;"">three-black-3</a></td>
  949. </tr>
  950. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  951. <tr>
  952. <td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun10""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  953. <tr>
  954. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value\\four-black-5-value')"" style=""margin-left:48px;"">four-black-5</a></td>
  955. </tr>
  956. </table></td><td style=""width:3px;""></td><td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun11""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  957. <tr>
  958. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-3-value\\four-black-6-value')"" style=""margin-left:48px;"">four-black-6</a></td>
  959. </tr>
  960. </table></td><td style=""width:3px;""></td>
  961. </tr>
  962. </table></td><td onmouseover=""Menu_HoverRoot(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun12""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  963. <tr>
  964. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value')"" style=""margin-left:32px;"">three-black-4</a></td>
  965. </tr>
  966. </table></td><td style=""width:3px;""></td><td><table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%"">
  967. <tr>
  968. <td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun13""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  969. <tr>
  970. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value\\four-black-7-value')"" style=""margin-left:48px;"">four-black-7</a></td>
  971. </tr>
  972. </table></td><td style=""width:3px;""></td><td onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""Menun14""><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  973. <tr>
  974. <td style=""white-space:nowrap;""><a class=""Menu_1"" href=""javascript:__doPostBack('Menu','one-black-value\\two-black-2-value\\three-black-4-value\\four-black-8-value')"" style=""margin-left:48px;"">four-black-8</a></td>
  975. </tr>
  976. </table></td>
  977. </tr>
  978. </table></td>
  979. </tr>
  980. </table></td>
  981. </tr>
  982. </table></td>
  983. </tr>
  984. </table><a id=""Menu_SkipLink""></a>";
  985. #endregion
  986. HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Horizontal");
  987. }
  988. public static void Menu_RenderStaticItems_Vertical (Page p) {
  989. Menu m = CreateMenuForRenderTests ();
  990. m.StaticDisplayLevels = 4;
  991. AddMenuToPage (p, m);
  992. }
  993. public static void Menu_RenderStaticItems_Horizontal (Page p) {
  994. Menu m = CreateMenuForRenderTests ();
  995. m.Orientation = Orientation.Horizontal;
  996. m.StaticDisplayLevels = 4;
  997. AddMenuToPage (p, m);
  998. }
  999. private static void AddMenuToPage (Page p, Menu m) {
  1000. LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
  1001. LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
  1002. p.Form.Controls.Add (lcb);
  1003. p.Form.Controls.Add (m);
  1004. p.Form.Controls.Add (lce);
  1005. }
  1006. private static Menu CreateMenuForRenderTests () {
  1007. Menu menu = new Menu ();
  1008. menu.ID = "Menu";
  1009. MenuItem R, N1, N2, SN1, SN2, SN3, SN4;
  1010. R = new MenuItem ("one-black", "one-black-value");
  1011. N1 = new MenuItem ("two-black-1", "two-black-1-value");
  1012. N2 = new MenuItem ("two-black-2", "two-black-2-value");
  1013. SN1 = new MenuItem ("three-black-1", "three-black-1-value");
  1014. SN2 = new MenuItem ("three-black-2", "three-black-2-value");
  1015. SN3 = new MenuItem ("three-black-3", "three-black-3-value");
  1016. SN4 = new MenuItem ("three-black-4", "three-black-4-value");
  1017. SN1.ChildItems.Add (new MenuItem ("four-black-1", "four-black-1-value"));
  1018. SN1.ChildItems.Add (new MenuItem ("four-black-2", "four-black-2-value"));
  1019. SN2.ChildItems.Add (new MenuItem ("four-black-3", "four-black-3-value"));
  1020. SN2.ChildItems.Add (new MenuItem ("four-black-4", "four-black-4-value"));
  1021. SN3.ChildItems.Add (new MenuItem ("four-black-5", "four-black-5-value"));
  1022. SN3.ChildItems.Add (new MenuItem ("four-black-6", "four-black-6-value"));
  1023. SN4.ChildItems.Add (new MenuItem ("four-black-7", "four-black-7-value"));
  1024. SN4.ChildItems.Add (new MenuItem ("four-black-8", "four-black-8-value"));
  1025. N1.ChildItems.Add (SN1);
  1026. N1.ChildItems.Add (SN2);
  1027. N2.ChildItems.Add (SN3);
  1028. N2.ChildItems.Add (SN4);
  1029. R.ChildItems.Add (N1);
  1030. R.ChildItems.Add (N2);
  1031. menu.Items.Add (R);
  1032. return menu;
  1033. }
  1034. //Events Stuff
  1035. private bool OnDataBinding;
  1036. private bool OnDataBound;
  1037. private bool OnMenuItemClick;
  1038. private bool OnInit;
  1039. private bool OnMenuItemDataBound;
  1040. private bool OnPreRender;
  1041. private void OnMenuItemDataBoundHandler(object sender, MenuEventArgs e)
  1042. {
  1043. OnMenuItemDataBound = true;
  1044. }
  1045. private void OnInitHandler (object sender, EventArgs e)
  1046. {
  1047. OnInit = true;
  1048. }
  1049. private void OnDataBindingHandler (object sender, EventArgs e)
  1050. {
  1051. OnDataBinding = true;
  1052. }
  1053. private void OnDataDataBoundHandler (object sender, EventArgs e)
  1054. {
  1055. OnDataBound = true;
  1056. }
  1057. private void OnMenuItemClickHandler (object sender, MenuEventArgs e)
  1058. {
  1059. OnMenuItemClick = true;
  1060. }
  1061. private void OnPreRenderHandler (object sender, EventArgs e)
  1062. {
  1063. OnPreRender = true;
  1064. }
  1065. private void ResetEvents ()
  1066. {
  1067. OnMenuItemClick = false;
  1068. OnDataBinding = false;
  1069. OnDataBound = false;
  1070. OnInit = false;
  1071. OnPreRender = false;
  1072. }
  1073. [Test]
  1074. public void Menu_Events ()
  1075. {
  1076. Page myPage = new Page ();
  1077. PokerMenu p = new PokerMenu ();
  1078. MenuItem I = new MenuItem ();
  1079. p.Items.Add (I);
  1080. myPage.Controls.Add(p);
  1081. p.Init += new EventHandler(OnInitHandler);
  1082. p.DataBinding += new EventHandler (OnDataBindingHandler);
  1083. p.DataBound += new EventHandler(OnDataDataBoundHandler);
  1084. p.MenuItemClick += new MenuEventHandler(OnMenuItemClickHandler);
  1085. p.MenuItemDataBound += new MenuEventHandler (OnMenuItemDataBoundHandler);
  1086. Assert.AreEqual (false, OnDataBinding, "BeforeOnDataBinding");
  1087. p.DoOnDataBind (new EventArgs ());
  1088. Assert.AreEqual (true, OnDataBinding, "AfterOnDataBinding");
  1089. Assert.AreEqual (false, OnDataBound, "BeforeOnDataBound");
  1090. p.DoOnDataBound (new EventArgs ());
  1091. Assert.AreEqual (true, OnDataBound, "AfterOnDataBinding");
  1092. MenuEventArgs e = new MenuEventArgs (I);
  1093. Assert.AreEqual (false, OnMenuItemClick, "BeforeMenuItemClick");
  1094. p.DoOnMenuItemClick (e);
  1095. Assert.AreEqual (true, OnMenuItemClick, "AfterMenuItemClick");
  1096. Assert.AreEqual (false, OnInit, "BeforeOnInit");
  1097. p.DoOnInit (new EventArgs());
  1098. Assert.AreEqual (true, OnInit, "AfterOnInit");
  1099. Assert.AreEqual (false, OnMenuItemDataBound, "BeforeMenuItemDataBound");
  1100. p.DoMenuItemDataBound(e);
  1101. Assert.AreEqual (true, OnMenuItemDataBound, "AfterMenuItemDataBound");
  1102. }
  1103. [Test]
  1104. public void Menu_BubbleEvent () {
  1105. PokerMenu pm = new PokerMenu ();
  1106. MenuItem item = new MenuItem ("Root");
  1107. pm.Items.Add (item);
  1108. pm.MenuItemClick += new MenuEventHandler (pm_MenuItemClick);
  1109. _MenuItemClick = false;
  1110. MenuEventArgs clickCommandArg = new MenuEventArgs (item, null, new CommandEventArgs (Menu.MenuItemClickCommandName, null));
  1111. CommandEventArgs notClickCommandArg = new CommandEventArgs (Menu.MenuItemClickCommandName + "No", null);
  1112. Assert.AreEqual (true, pm.DoOnBubbleEvent (notClickCommandArg), "Bubble Event#1");
  1113. Assert.AreEqual (false, _MenuItemClick, "MenuItemClick Bubbled");
  1114. Assert.AreEqual (true, pm.DoOnBubbleEvent (clickCommandArg), "Bubble Event#2");
  1115. Assert.AreEqual (true, _MenuItemClick, "MenuItemClick Bubbled");
  1116. Assert.AreEqual (false, pm.DoOnBubbleEvent (new EventArgs ()), "Bubble Event#3");
  1117. }
  1118. bool _MenuItemClick;
  1119. void pm_MenuItemClick (object sender, MenuEventArgs e) {
  1120. _MenuItemClick = true;
  1121. }
  1122. [Test]
  1123. [Category ("NunitWeb")]
  1124. public void Menu_PreRenderEvent ()
  1125. {
  1126. new WebTest (PageInvoker.CreateOnLoad (PreRenderEvent)).Run ();
  1127. }
  1128. public void PreRenderEvent (Page p)
  1129. {
  1130. PokerMenu pm = new PokerMenu ();
  1131. p.Controls.Add (pm);
  1132. pm.PreRender += new EventHandler (OnPreRenderHandler);
  1133. Assert.AreEqual (false, OnPreRender, "BeforePreRender");
  1134. pm.DoOnPreRender (new EventArgs ());
  1135. Assert.AreEqual (true, OnPreRender, "AfterPreRender");
  1136. }
  1137. [TestFixtureTearDown]
  1138. public void TearDown ()
  1139. {
  1140. WebTest.Unload ();
  1141. }
  1142. // A simple Template class to wrap an image.
  1143. public class ImageTemplate : ITemplate
  1144. {
  1145. private MyWebControl.Image myImage;
  1146. public MyWebControl.Image MyImage
  1147. {
  1148. get
  1149. {
  1150. return myImage;
  1151. }
  1152. set
  1153. {
  1154. myImage = value;
  1155. }
  1156. }
  1157. public void InstantiateIn (Control container)
  1158. {
  1159. container.Controls.Add (MyImage);
  1160. }
  1161. }
  1162. [Test]
  1163. [Category ("NunitWeb")]
  1164. public void MenuClass ()
  1165. {
  1166. string res = new WebTest ("menuclass.aspx").Run ();
  1167. string menua_pattern="<table[^>]*class=\"[^\"]*menua[^\"]*\"[^>]*>";
  1168. Assert.IsTrue (Regex.IsMatch (res, ".*"+menua_pattern+".*",
  1169. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1170. "check that <table class=\"menua\"> is found");
  1171. Assert.IsFalse (Regex.IsMatch (res, ".*"+menua_pattern+".*"+menua_pattern+".*",
  1172. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1173. "check that <table class=\"menua\"> is found only once");
  1174. }
  1175. [Test]
  1176. [Category ("NunitWeb")]
  1177. [Category ("NotDotNet")] // implementation specific
  1178. public void Menu_PostBack ()
  1179. {
  1180. WebTest t = new WebTest ("PostBackMenuTest.aspx");
  1181. string str = t.Run ();
  1182. FormRequest fr = new FormRequest (t.Response, "form1");
  1183. fr.Controls.Add ("__EVENTTARGET");
  1184. fr.Controls.Add ("__EVENTARGUMENT");
  1185. fr.Controls["__EVENTTARGET"].Value = "Menu1";
  1186. fr.Controls ["__EVENTARGUMENT"].Value = "0_1";
  1187. t.Request = fr;
  1188. PageDelegates pd = new PageDelegates ();
  1189. pd.PreRender = _MenuItemsPost;
  1190. t.Invoker = new PageInvoker (pd);
  1191. t.Run ();
  1192. }
  1193. public static void _MenuItemsPost (Page p)
  1194. {
  1195. foreach (Control c in p.Form.Controls) {
  1196. Menu m = c as Menu;
  1197. if (m != null) {
  1198. Assert.AreEqual ("node2", m.SelectedValue, "MenuItemsPostBack");
  1199. }
  1200. }
  1201. }
  1202. [Test]
  1203. [Category ("NunitWeb")]
  1204. public void Menu_PostBackFireEvents_1 ()
  1205. {
  1206. WebTest t = new WebTest ("PostBackMenuTest.aspx");
  1207. string str = t.Run ();
  1208. FormRequest fr = new FormRequest (t.Response, "form1");
  1209. fr.Controls.Add ("__EVENTTARGET");
  1210. fr.Controls.Add ("__EVENTARGUMENT");
  1211. fr.Controls["__EVENTTARGET"].Value = "Menu1";
  1212. #if DOT_NET
  1213. fr.Controls["__EVENTARGUMENT"].Value = "root"; // "0_1";
  1214. #else
  1215. fr.Controls ["__EVENTARGUMENT"].Value = "0"; // "0_1";
  1216. #endif
  1217. t.Request = fr;
  1218. str = t.Run ();
  1219. Assert.AreEqual ("MenuItemClick", t.UserData.ToString (), "PostBackEvent");
  1220. }
  1221. [Test]
  1222. [Category ("NunitWeb")]
  1223. public void Menu_PostBackFireEvents_2 ()
  1224. {
  1225. WebTest t = new WebTest ("PostBackMenuTest.aspx");
  1226. PageDelegates pd = new PageDelegates ();
  1227. pd.Init = PostBackFireEvents_Init ;
  1228. t.Invoker = new PageInvoker (pd);
  1229. t.Run ();
  1230. Assert.AreEqual ("MenuItemDataBound", t.UserData.ToString (), "MenuItemDataBound");
  1231. }
  1232. public static void PostBackFireEvents_Init (Page p)
  1233. {
  1234. Menu m = new Menu ();
  1235. m.MenuItemDataBound += new MenuEventHandler (MenuItemDataBound_Event);
  1236. m.DataSource = LoadXml ();
  1237. p.Controls.Add (m);
  1238. m.DataBind ();
  1239. }
  1240. public static XmlDataSource LoadXml ()
  1241. {
  1242. XmlDataSource ds = new XmlDataSource ();
  1243. ds.EnableCaching = false;
  1244. #region xml_doc
  1245. String xml_text = @"<siteMapNode url=""1"" title=""root"" description="""">
  1246. <siteMapNode url=""~/MyPage.aspx"" title=""node1"" description="""" />
  1247. </siteMapNode>";
  1248. #endregion
  1249. ds.Data = xml_text;
  1250. return ds;
  1251. }
  1252. static void MenuItemDataBound_Event (object sender, MenuEventArgs e)
  1253. {
  1254. WebTest.CurrentTest.UserData = "MenuItemDataBound";
  1255. }
  1256. [Test]
  1257. public void MenuItemCollection1 ()
  1258. {
  1259. Menu m = new Menu ();
  1260. fillMenu (m);
  1261. ((IStateManager) m.Items).TrackViewState ();
  1262. m.Items [0].Text = "root";
  1263. m.Items [0].ChildItems [0].Text = "node";
  1264. m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
  1265. object state = ((IStateManager) m.Items).SaveViewState ();
  1266. Menu copy = new Menu ();
  1267. fillMenu (copy);
  1268. ((IStateManager) copy.Items).TrackViewState ();
  1269. ((IStateManager) copy.Items).LoadViewState (state);
  1270. Assert.AreEqual (1, copy.Items.Count);
  1271. Assert.AreEqual (2, copy.Items [0].ChildItems.Count);
  1272. Assert.AreEqual (1, copy.Items [0].ChildItems [0].ChildItems.Count);
  1273. Assert.AreEqual ("root", copy.Items [0].Text);
  1274. Assert.AreEqual ("node", copy.Items [0].ChildItems [0].Text);
  1275. Assert.AreEqual ("subnode", copy.Items [0].ChildItems [0].ChildItems [0].Text);
  1276. }
  1277. [Test]
  1278. public void MenuItemCollection2 ()
  1279. {
  1280. Menu m = new Menu ();
  1281. fillMenu (m);
  1282. ((IStateManager) m.Items).TrackViewState ();
  1283. m.Items [0].Text = "root";
  1284. m.Items [0].ChildItems [0].Text = "node";
  1285. m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
  1286. m.Items.Add (new MenuItem ("root 2"));
  1287. object state = ((IStateManager) m.Items).SaveViewState ();
  1288. Menu copy = new Menu ();
  1289. fillMenu (copy);
  1290. ((IStateManager) copy.Items).TrackViewState ();
  1291. ((IStateManager) copy.Items).LoadViewState (state);
  1292. Assert.AreEqual (2, copy.Items.Count);
  1293. Assert.AreEqual (2, copy.Items [0].ChildItems.Count);
  1294. Assert.AreEqual (1, copy.Items [0].ChildItems [0].ChildItems.Count);
  1295. Assert.AreEqual ("root", copy.Items [0].Text);
  1296. Assert.AreEqual ("node", copy.Items [0].ChildItems [0].Text);
  1297. Assert.AreEqual ("subnode", copy.Items [0].ChildItems [0].ChildItems [0].Text);
  1298. Assert.AreEqual ("root 2", copy.Items [1].Text);
  1299. }
  1300. [Test]
  1301. public void MenuItemCollection3 ()
  1302. {
  1303. Menu m = new Menu ();
  1304. fillMenu (m);
  1305. m.Items.Add (new MenuItem ("root 2"));
  1306. ((IStateManager) m.Items).TrackViewState ();
  1307. m.Items [0].Text = "root";
  1308. m.Items [0].ChildItems [0].Text = "node";
  1309. m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
  1310. m.Items.RemoveAt (1);
  1311. object state = ((IStateManager) m.Items).SaveViewState ();
  1312. Menu copy = new Menu ();
  1313. fillMenu (copy);
  1314. copy.Items.Add (new MenuItem ("root 2"));
  1315. ((IStateManager) copy.Items).TrackViewState ();
  1316. ((IStateManager) copy.Items).LoadViewState (state);
  1317. Assert.AreEqual (1, copy.Items.Count);
  1318. Assert.AreEqual (2, copy.Items [0].ChildItems.Count);
  1319. Assert.AreEqual (1, copy.Items [0].ChildItems [0].ChildItems.Count);
  1320. Assert.AreEqual ("root", copy.Items [0].Text);
  1321. Assert.AreEqual ("node", copy.Items [0].ChildItems [0].Text);
  1322. Assert.AreEqual ("subnode", copy.Items [0].ChildItems [0].ChildItems [0].Text);
  1323. }
  1324. [Test]
  1325. public void MenuItemCollection4 ()
  1326. {
  1327. Menu m = new Menu ();
  1328. fillMenu (m);
  1329. m.Items.Add (new MenuItem ("root 2"));
  1330. m.Items [0].ChildItems.RemoveAt (1);
  1331. ((IStateManager) m.Items).TrackViewState ();
  1332. m.Items [0].Text = "root";
  1333. m.Items [0].ChildItems [0].Text = "node";
  1334. m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
  1335. object state = ((IStateManager) m.Items).SaveViewState ();
  1336. Menu copy = new Menu ();
  1337. fillMenu (copy);
  1338. copy.Items.Add (new MenuItem ("root 2"));
  1339. copy.Items [0].ChildItems.RemoveAt (1);
  1340. ((IStateManager) copy.Items).TrackViewState ();
  1341. ((IStateManager) copy.Items).LoadViewState (state);
  1342. Assert.AreEqual (2, copy.Items.Count);
  1343. Assert.AreEqual (1, copy.Items [0].ChildItems.Count);
  1344. Assert.AreEqual (1, copy.Items [0].ChildItems [0].ChildItems.Count);
  1345. Assert.AreEqual ("root", copy.Items [0].Text);
  1346. Assert.AreEqual ("node", copy.Items [0].ChildItems [0].Text);
  1347. Assert.AreEqual ("subnode", copy.Items [0].ChildItems [0].ChildItems [0].Text);
  1348. }
  1349. [Test]
  1350. public void MenuItemCollection5 ()
  1351. {
  1352. Menu m = new Menu ();
  1353. ((IStateManager) m.Items).TrackViewState ();
  1354. fillMenu (m);
  1355. object state = ((IStateManager) m.Items).SaveViewState ();
  1356. Menu copy = new Menu ();
  1357. ((IStateManager) copy.Items).TrackViewState ();
  1358. ((IStateManager) copy.Items).LoadViewState (state);
  1359. Assert.AreEqual (1, copy.Items.Count);
  1360. Assert.AreEqual (2, copy.Items [0].ChildItems.Count);
  1361. Assert.AreEqual (1, copy.Items [0].ChildItems [0].ChildItems.Count);
  1362. }
  1363. private static void fillMenu (Menu m) {
  1364. m.Items.Clear ();
  1365. m.Items.Add (new MenuItem ());
  1366. m.Items [0].ChildItems.Add (new MenuItem ());
  1367. m.Items [0].ChildItems.Add (new MenuItem ());
  1368. m.Items [0].ChildItems [0].ChildItems.Add (new MenuItem ());
  1369. }
  1370. [Test]
  1371. public void MenuItem_TextValue1 ()
  1372. {
  1373. MenuItem item = new MenuItem ();
  1374. item.Text = "TTT";
  1375. Assert.AreEqual ("TTT", item.Value, "MenuItem_TextValue1#1");
  1376. item.Value = "";
  1377. Assert.AreEqual ("", item.Value, "MenuItem_TextValue1#2");
  1378. item.Value = null;
  1379. Assert.AreEqual ("TTT", item.Value, "MenuItem_TextValue1#3");
  1380. }
  1381. [Test]
  1382. public void MenuItem_TextValue2 ()
  1383. {
  1384. MenuItem item = new MenuItem ();
  1385. item.Value = "VVV";
  1386. Assert.AreEqual ("VVV", item.Text, "MenuItem_TextValue2#1");
  1387. item.Text = "";
  1388. Assert.AreEqual ("", item.Text, "MenuItem_TextValue2#2");
  1389. item.Text = null;
  1390. Assert.AreEqual ("VVV", item.Text, "MenuItem_TextValue2#3");
  1391. }
  1392. }
  1393. }
  1394. #endif