MenuTest.cs 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124
  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. namespace MonoTests.System.Web.UI.WebControls
  46. {
  47. class PokerMenu:Menu
  48. {
  49. public PokerMenu ()
  50. {
  51. TrackViewState();
  52. }
  53. public StateBag StateBag
  54. {
  55. get { return base.ViewState; }
  56. }
  57. public HtmlTextWriterTag OnTagKey()
  58. {
  59. return TagKey;
  60. }
  61. public void DoOnDataBind(EventArgs e)
  62. {
  63. OnDataBinding(e);
  64. }
  65. public void DoOnDataBound (EventArgs e)
  66. {
  67. OnDataBound(e);
  68. }
  69. public void DoCreateChildControls ()
  70. {
  71. CreateChildControls ();
  72. }
  73. public void DoEnsureDataBound ()
  74. {
  75. EnsureDataBound ();
  76. }
  77. public void DoLoadViewState (object state)
  78. {
  79. LoadViewState (state);
  80. }
  81. public object DoSaveViewState ()
  82. {
  83. return SaveViewState ();
  84. }
  85. public void DoLoadControlState (object state)
  86. {
  87. LoadControlState (state);
  88. }
  89. public object DoSaveControlState ()
  90. {
  91. return SaveControlState ();
  92. }
  93. public void DoOnMenuItemClick (MenuEventArgs e)
  94. {
  95. OnMenuItemClick(e);
  96. }
  97. public void DoOnInit(EventArgs e)
  98. {
  99. OnInit(e);
  100. }
  101. public void DoMenuItemDataBound (MenuEventArgs e)
  102. {
  103. OnMenuItemDataBound (e);
  104. }
  105. public void DoOnPreRender (EventArgs e)
  106. {
  107. base.OnPreRender(e);
  108. }
  109. public bool DoOnBubbleEvent(EventArgs e)
  110. {
  111. return base.OnBubbleEvent(this,e);
  112. }
  113. }
  114. [Serializable]
  115. [TestFixture]
  116. public class MenuTest
  117. {
  118. [Test]
  119. public void Menu_DefaultProperties ()
  120. {
  121. PokerMenu p = new PokerMenu ();
  122. Assert.AreEqual ("Click",PokerMenu.MenuItemClickCommandName,"Staic_MenuItemClickCommandName");
  123. Assert.AreEqual (0,p.Controls.Count,"ControlsCollection");
  124. Assert.AreEqual (0,p.DataBindings.Count,"DataBindings");
  125. Assert.AreEqual (500,p.DisappearAfter,"DisappearAfter");
  126. Assert.AreEqual (string.Empty, p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
  127. Assert.IsTrue (p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
  128. Assert.AreEqual (0, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
  129. Assert.IsNotNull (p.DynamicHoverStyle, "DynamicHoverStyle");
  130. Assert.AreEqual ("", p.DynamicItemFormatString, "DynamicItemFormatString");
  131. Assert.IsNull (p.DynamicItemTemplate, "DynamicItemTemplate");
  132. Assert.IsNotNull (p.DynamicMenuItemStyle, "DynamicMenuItemStyle");
  133. Assert.IsNotNull (p.DynamicMenuStyle, "DynamicMenuStyle");
  134. Assert.AreEqual (string.Empty,p.DynamicPopOutImageUrl,"DynamicPopOutImageUrl");
  135. Assert.IsNotNull (p.DynamicSelectedStyle, "DynamicSelectedStyle");
  136. Assert.AreEqual (string.Empty, p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
  137. Assert.AreEqual (0, p.DynamicVerticalOffset, "DynamicVerticalOffset");
  138. Assert.AreEqual (0, p.Items.Count, "Items");
  139. Assert.AreEqual (false, p.ItemWrap, "ItemWrap");
  140. Assert.IsNotNull (p.LevelSelectedStyles, "LevelSelectedStyles");
  141. Assert.IsNotNull (p.LevelSubMenuStyles, "LevelSubMenuStyles");
  142. Assert.AreEqual (3, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
  143. Assert.AreEqual (Orientation.Vertical, p.Orientation, "Orientation");
  144. Assert.AreEqual ("/", p.PathSeparator.ToString(), "PathSeparator");
  145. Assert.AreEqual (string.Empty, p.ScrollDownImageUrl, "ScrollDownImageUrl");
  146. Assert.AreEqual (null, p.SelectedItem, "p.SelectedItem");
  147. Assert.AreEqual (string.Empty, p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
  148. Assert.AreEqual (1, p.StaticDisplayLevels, "StaticDisplayLevels");
  149. Assert.AreEqual (true, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
  150. Assert.IsNotNull (p.StaticHoverStyle, "StaticHoverStyle");
  151. Assert.AreEqual ("", p.StaticItemFormatString, "StaticItemFormatString");
  152. Assert.AreEqual (null, p.StaticItemTemplate, "StaticItemTemplate");
  153. Assert.IsNotNull (p.StaticMenuItemStyle, "StaticMenuItemStyle");
  154. Assert.IsNotNull (p.StaticMenuStyle, "StaticMenuStyle");
  155. Assert.AreEqual ("", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
  156. Assert.IsNotNull (p.StaticSelectedStyle, "StaticSelectedStyle");
  157. Assert.AreEqual (Unit.Pixel(16), p.StaticSubMenuIndent, "StaticSubMenuIndent");
  158. Assert.AreEqual ("", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
  159. Assert.AreEqual ("", p.Target, "Target");
  160. Assert.IsNotNull (p.OnTagKey (), "TagKey");
  161. }
  162. [Test]
  163. public void Menu_DefaultProperties_2 ()
  164. {
  165. PokerMenu p = new PokerMenu ();
  166. Assert.AreEqual ("Skip Navigation Links", p.SkipLinkText, "SkipLinkText");
  167. Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
  168. Assert.AreEqual ("Scroll up", p.ScrollUpText, "ScrollUpText");
  169. Assert.AreEqual ("Expand {0}", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString"); //not implemented
  170. Assert.AreEqual ("Scroll down", p.ScrollDownText, "ScrollDownText");
  171. Assert.AreEqual ("Expand {0}", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString"); //not implemented
  172. }
  173. [Test]
  174. public void Menu_ChangeDefaultProperties ()
  175. {
  176. PokerMenu p = new PokerMenu ();
  177. Button B = new Button ();
  178. p.Controls.Add (B);
  179. Assert.AreEqual (1,p.Controls.Count, "ControlsCollection");
  180. MenuItemBinding M = new MenuItemBinding ();
  181. M.DataMember = "test";
  182. M.Depth = 0;
  183. M.TextField = "title";
  184. M.NavigateUrl="url";
  185. Object C = p.DataBindings;
  186. Assert.AreEqual (0, p.DataBindings.Count, "DataBindings#1");
  187. ((MenuItemBindingCollection)C).Add (M);
  188. Assert.AreEqual (1,p.DataBindings.Count,"DataBindings#2");
  189. p.DisappearAfter = 100;
  190. Assert.AreEqual (100, p.DisappearAfter, "DisappearAfter");
  191. p.DynamicBottomSeparatorImageUrl = "test.aspx";
  192. Assert.AreEqual ("test.aspx", p.DynamicBottomSeparatorImageUrl, "DynamicBottomSeparatorImageUrl");
  193. p.DynamicEnableDefaultPopOutImage = false;
  194. Assert.AreEqual (false,p.DynamicEnableDefaultPopOutImage, "DynamicEnableDefaultPopOutImage");
  195. p.DynamicHorizontalOffset = 10;
  196. Assert.AreEqual (10, p.DynamicHorizontalOffset, "DynamicHorizontalOffset");
  197. p.DynamicHoverStyle.BackColor = Color.Red;
  198. Assert.AreEqual (Color.Red ,p.DynamicHoverStyle.BackColor, "DynamicHoverStyle");
  199. p.DynamicItemFormatString = "Mytest";
  200. Assert.AreEqual ("Mytest", p.DynamicItemFormatString, "DynamicItemFormatString");
  201. MyWebControl.Image myImage = new MyWebControl.Image ();
  202. myImage.ImageUrl = "myimage.jpg";
  203. ImageTemplate Template = new ImageTemplate ();
  204. Template.MyImage = myImage;
  205. // end create template image
  206. p.DynamicItemTemplate = Template;
  207. Assert.IsNotNull (p.DynamicItemTemplate, "RootNodeTemplate");
  208. Assert.AreEqual (typeof (ImageTemplate), p.DynamicItemTemplate.GetType (), "RootNodeTemplate#1");
  209. p.DynamicMenuItemStyle.BackColor = Color.Red;
  210. Assert.AreEqual (Color.Red, p.DynamicMenuItemStyle.BackColor, "DynamicMenuItemStyle");
  211. p.DynamicMenuStyle.BackColor = Color.Red;
  212. Assert.AreEqual (Color.Red,p.DynamicMenuStyle.BackColor, "DynamicMenuStyle");
  213. p.DynamicPopOutImageUrl = "test";
  214. Assert.AreEqual ("test", p.DynamicPopOutImageUrl, "DynamicPopOutImageUrl");
  215. p.DynamicSelectedStyle.BackColor = Color.Red;
  216. Assert.AreEqual (Color.Red,p.DynamicSelectedStyle.BackColor, "DynamicSelectedStyle");
  217. p.DynamicTopSeparatorImageUrl = "test";
  218. Assert.AreEqual ("test", p.DynamicTopSeparatorImageUrl, "DynamicTopSeparatorImageUrl");
  219. p.DynamicVerticalOffset = 10;
  220. Assert.AreEqual (10, p.DynamicVerticalOffset, "DynamicVerticalOffset");
  221. MenuItem I = new MenuItem ();
  222. I.NavigateUrl = "default.aspx";
  223. I.Text = "MyText";
  224. I.ToolTip = "Test";
  225. p.Items.Add (I);
  226. Assert.AreEqual (1, p.Items.Count, "Items");
  227. p.ItemWrap = true;
  228. Assert.AreEqual (true, p.ItemWrap, "ItemWrap");
  229. MenuItemStyle S = new MenuItemStyle ();
  230. S.BackColor = Color.Red;
  231. p.LevelSelectedStyles.Add (S);
  232. Assert.AreEqual (1,p.LevelSelectedStyles.Count , "LevelSelectedStyles#1");
  233. Assert.AreEqual (true, p.LevelSelectedStyles.Contains (S), "LevelSelectedStyles#2");
  234. SubMenuStyle SM = new SubMenuStyle ();
  235. SM.BackColor = Color.Red;
  236. p.LevelSubMenuStyles.Add (SM);
  237. Assert.AreEqual(1, p.LevelSubMenuStyles.Count, "LevelSubMenuStyles#1");
  238. Assert.AreEqual (true, p.LevelSubMenuStyles.Contains (SM), "LevelSubMenuStyles#2");
  239. p.MaximumDynamicDisplayLevels = 5;
  240. Assert.AreEqual (5, p.MaximumDynamicDisplayLevels, "MaximumDynamicDisplayLevels");
  241. p.Orientation = Orientation.Horizontal;
  242. Assert.AreEqual (Orientation.Horizontal, p.Orientation, "Orientation");
  243. p.PathSeparator = 'A';
  244. Assert.AreEqual ('A', p.PathSeparator, "PathSeparator");
  245. p.ScrollDownImageUrl = "test";
  246. Assert.AreEqual ("test", p.ScrollDownImageUrl, "ScrollDownImageUrl");
  247. p.ScrollDownText = "test";
  248. Assert.AreEqual ("test", p.ScrollDownText, "ScrollDownText");
  249. // This properties will be checked in events part of tests
  250. // Assert.AreEqual (0, p.SelectedItem, "p.SelectedItem");
  251. // Assert.AreEqual (string.Empty, p.SelectedValue, "SelectedValue");
  252. p.SkipLinkText = "test";
  253. Assert.AreEqual ("test", p.SkipLinkText, "SkipLinkText");
  254. p.StaticBottomSeparatorImageUrl = "test";
  255. Assert.AreEqual ("test", p.StaticBottomSeparatorImageUrl, "StaticBottomSeparatorImageUrl");
  256. p.StaticDisplayLevels = 2;
  257. Assert.AreEqual (2, p.StaticDisplayLevels, "StaticDisplayLevels");
  258. p.StaticEnableDefaultPopOutImage = false;
  259. Assert.AreEqual (false, p.StaticEnableDefaultPopOutImage, "StaticEnableDefaultPopOutImage");
  260. p.StaticHoverStyle.BackColor = Color.Red;
  261. Assert.AreEqual(Color.Red, p.StaticHoverStyle.BackColor, "StaticHoverStyle");
  262. p.StaticItemFormatString = "test";
  263. Assert.AreEqual ("test", p.StaticItemFormatString, "StaticItemFormatString");
  264. p.StaticItemTemplate = Template;
  265. Assert.IsNotNull (p.StaticItemTemplate, "StaticItemTemplate");
  266. p.StaticMenuItemStyle.BackColor = Color.Red;
  267. Assert.AreEqual(Color.Red,p.StaticMenuItemStyle.BackColor, "StaticMenuItemStyle");
  268. p.StaticMenuStyle.BackColor = Color.Red;
  269. Assert.AreEqual (Color.Red,p.StaticMenuStyle.BackColor, "StaticMenuStyle");
  270. p.StaticPopOutImageUrl = "test";
  271. Assert.AreEqual ("test", p.StaticPopOutImageUrl, "StaticPopOutImageUrl");
  272. p.StaticSelectedStyle.BackColor = Color.Red;
  273. Assert.AreEqual(Color.Red,p.StaticSelectedStyle.BackColor, "StaticSelectedStyle");
  274. p.StaticSubMenuIndent = 20;
  275. Assert.AreEqual (Unit.Pixel (20), p.StaticSubMenuIndent, "StaticSubMenuIndent");
  276. p.StaticTopSeparatorImageUrl = "test";
  277. Assert.AreEqual ("test", p.StaticTopSeparatorImageUrl, "StaticTopSeparatorImageUrl");
  278. p.Target = "test";
  279. Assert.AreEqual ("test", p.Target, "Target");
  280. }
  281. [Test]
  282. public void Menu_ChangeDefaultProperties_2 ()
  283. {
  284. PokerMenu p = new PokerMenu ();
  285. p.ScrollUpText = "test";
  286. Assert.AreEqual ("test", p.ScrollUpText, "ScrollUpText");
  287. p.DynamicPopOutImageTextFormatString = "test";
  288. Assert.AreEqual ("test", p.DynamicPopOutImageTextFormatString, "DynamicPopOutImageTextFormatString");
  289. p.StaticPopOutImageTextFormatString = "test";
  290. Assert.AreEqual ("test", p.StaticPopOutImageTextFormatString, "StaticPopOutImageTextFormatString");
  291. }
  292. [Test]
  293. public void Menu_ControlState()
  294. {
  295. PokerMenu p = new PokerMenu ();
  296. MenuItem I1 = new MenuItem ();
  297. MenuItem I2 = new MenuItem ();
  298. p.Items.Add (I1);
  299. p.Items.Add (I2);
  300. MenuEventArgs e = new MenuEventArgs (I1);
  301. p.DoOnMenuItemClick (e);
  302. object state = p.DoSaveControlState ();
  303. p.DoLoadControlState (state);
  304. e = new MenuEventArgs (I2);
  305. p.DoOnMenuItemClick (e);
  306. Console.WriteLine();
  307. }
  308. [Test]
  309. public void Menu_FindItem ()
  310. {
  311. PokerMenu p = new PokerMenu ();
  312. MenuItem I = new MenuItem ();
  313. string path = I.ValuePath;
  314. p.Items.Add (I);
  315. MenuItem V = new MenuItem ();
  316. I.ChildItems.Add (V);
  317. MenuItem copy = p.FindItem (path);
  318. Assert.AreEqual (I, copy, "FindItem#1");
  319. path = V.ValuePath;
  320. Assert.AreEqual (V, p.FindItem (path), "FindItem#2");
  321. }
  322. // Set & Get DesignModeState dosn't tested
  323. // Can't test on Page Load event
  324. [Test]
  325. [Category ("NunitWeb")]
  326. public void Menu_RenderBeginTag ()
  327. {
  328. new WebTest (PageInvoker.CreateOnLoad (_BeginTagRender)).Run ();
  329. }
  330. public static void _BeginTagRender(Page p)
  331. {
  332. PokerMenu pm = new PokerMenu ();
  333. p.Form.Controls.Add (pm);
  334. StringWriter sw = new StringWriter ();
  335. HtmlTextWriter tw = new HtmlTextWriter (sw);
  336. pm.RenderBeginTag (tw);
  337. string RenderedControlHtml = sw.ToString();
  338. string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
  339. <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&amp;t=632784640484505569""
  340. width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
  341. </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">";
  342. HtmlDiff.AssertAreEqual(OriginControlHtml,RenderedControlHtml,"RenderBeginTag");
  343. }
  344. [Test]
  345. [Category ("NunitWeb")]
  346. public void Menu_RenderEndTag ()
  347. {
  348. new WebTest (PageInvoker.CreateOnLoad (_EndTagRender)).Run ();
  349. }
  350. public static void _EndTagRender (Page p)
  351. {
  352. PokerMenu pm = new PokerMenu ();
  353. p.Form.Controls.Add (pm);
  354. StringWriter sw = new StringWriter ();
  355. HtmlTextWriter tw = new HtmlTextWriter (sw);
  356. pm.RenderBeginTag (tw);
  357. pm.RenderEndTag (tw);
  358. string RenderedControlHtml = sw.ToString ();
  359. string OriginControlHtml = @"<a href=""#ctl01_SkipLink"">
  360. <img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&amp;t=632784640484505569""
  361. width=""0"" style=""border-width:0px"" height=""0"" style=""border-width:0px;"" />
  362. </a><table id=""ctl01"" cellpadding=""0"" cellspacing=""0"" border=""0"">
  363. </table><a id=""ctl01_SkipLink""></a>";
  364. HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderEndTag");
  365. }
  366. [Test]
  367. public void Menu_DataBind () {
  368. Page p = new Page ();
  369. Menu m = CreateMenu ();
  370. m.DataBinding += new EventHandler (m_DataBinding);
  371. m.DataBound += new EventHandler (m_DataBound);
  372. p.Controls.Add (m);
  373. ResetTemplateBoundFlags ();
  374. m.DataBind ();
  375. }
  376. static void m_DataBinding (object sender, EventArgs e) {
  377. Assert.AreEqual (true, _StaticTemplateCreated, "StaticTemplateCreated");
  378. Assert.AreEqual (true, _DynamicTemplateCreated, "DynamicTemplateCreated");
  379. }
  380. static void m_DataBound (object sender, EventArgs e) {
  381. Assert.AreEqual (true, _StaticTemplateBound, "StaticTemplateBound");
  382. Assert.AreEqual (true, _DynamicTemplateBound, "DynamicTemplateBound");
  383. }
  384. private static void ResetTemplateBoundFlags() {
  385. _StaticTemplateBound = false;
  386. _DynamicTemplateBound = false;
  387. _StaticTemplateCreated = false;
  388. _DynamicTemplateCreated = false;
  389. }
  390. static Menu CreateMenu () {
  391. Menu m = new Menu ();
  392. MenuItem rootItem = new MenuItem ("RootItem-Text", "RootItem-Value");
  393. m.Items.Add (rootItem);
  394. rootItem.ChildItems.Add (new MenuItem ("Node1-Text", "Node1-Value"));
  395. rootItem.ChildItems.Add (new MenuItem ("Node2-Text", "Node2-Value"));
  396. m.StaticItemTemplate = new CompiledTemplateBuilder (_StaticItemTemplate);
  397. m.DynamicItemTemplate = new CompiledTemplateBuilder (_DynamicItemTemplate);
  398. return m;
  399. }
  400. [Test]
  401. [Category ("NunitWeb")]
  402. public void Menu_DataBindByDataSourceID () {
  403. PageDelegates pd = new PageDelegates ();
  404. pd.Init = Menu_DataBindByDataSourceID_PageInit;
  405. pd.PreRenderComplete = Menu_DataBindByDataSourceID_PagePreRenderComplete;
  406. PageInvoker pi = new PageInvoker (pd);
  407. new WebTest (pi).Run ();
  408. }
  409. public static void Menu_DataBindByDataSourceID_PageInit (Page p) {
  410. XmlDataSource xmlDs = new XmlDataSource ();
  411. xmlDs.ID = "XmlDataSource";
  412. xmlDs.Data = "<root><node /><node /><node><subnode /><subnode /></node></root>";
  413. p.Form.Controls.Add (xmlDs);
  414. Menu m = CreateMenu ();
  415. m.DataSourceID = "XmlDataSource";
  416. m.MenuItemDataBound += new MenuEventHandler (m_MenuItemDataBound);
  417. p.Form.Controls.Add (m);
  418. ResetTemplateBoundFlags ();
  419. _MenuItemBoundCount = 0;
  420. _MenuItemCreatedCount = 0;
  421. }
  422. public static void m_MenuItemDataBound (object sender, MenuEventArgs e) {
  423. _MenuItemBoundCount++;
  424. }
  425. [Test]
  426. [Category ("NunitWeb")]
  427. public void Menu_Templates () {
  428. PageDelegates pd = new PageDelegates ();
  429. pd.Init = Menu_Templates_PageInit;
  430. pd.PreRenderComplete = Menu_Templates_PagePreRenderComplete;
  431. PageInvoker pi = new PageInvoker (pd);
  432. new WebTest (pi).Run ();
  433. }
  434. public static void Menu_Templates_PageInit (Page p) {
  435. Menu m = CreateMenu ();
  436. p.Form.Controls.Add (m);
  437. ResetTemplateBoundFlags ();
  438. }
  439. static bool _StaticTemplateBound;
  440. static bool _DynamicTemplateBound;
  441. static bool _StaticTemplateCreated;
  442. static bool _DynamicTemplateCreated;
  443. static int _MenuItemBoundCount;
  444. static int _MenuItemCreatedCount;
  445. private static void CheckTemplateBoundFlags () {
  446. Assert.AreEqual (true, _StaticTemplateCreated, "StaticTemplateCreated");
  447. Assert.AreEqual (true, _DynamicTemplateCreated, "DynamicTemplateCreated");
  448. Assert.AreEqual (true, _StaticTemplateBound, "StaticTemplateBound");
  449. Assert.AreEqual (true, _DynamicTemplateBound, "DynamicTemplateBound");
  450. }
  451. public static void Menu_Templates_PagePreRenderComplete (Page p) {
  452. CheckTemplateBoundFlags ();
  453. }
  454. public static void Menu_DataBindByDataSourceID_PagePreRenderComplete (Page p) {
  455. CheckTemplateBoundFlags ();
  456. Assert.AreEqual (6, _MenuItemBoundCount, "MenuItemBoundCount");
  457. Assert.AreEqual (6, _MenuItemCreatedCount, "MenuItemBoundCount");
  458. }
  459. private static void _StaticItemTemplate (Control container) {
  460. _StaticTemplateCreated = true;
  461. _MenuItemCreatedCount++;
  462. Literal l = new Literal ();
  463. container.Controls.Add (l);
  464. container.DataBinding += new EventHandler (StaticTemplate_DataBinding);
  465. }
  466. static void StaticTemplate_DataBinding (object sender, EventArgs e) {
  467. _StaticTemplateBound = true;
  468. }
  469. private static void _DynamicItemTemplate (Control container) {
  470. _DynamicTemplateCreated = true;
  471. _MenuItemCreatedCount++;
  472. Literal l = new Literal ();
  473. container.Controls.Add (l);
  474. container.DataBinding += new EventHandler (DynamicTemplate_DataBinding);
  475. }
  476. static void DynamicTemplate_DataBinding (object sender, EventArgs e) {
  477. _DynamicTemplateBound = true;
  478. }
  479. [Test]
  480. public void Menu_ViewState()
  481. {
  482. PokerMenu b = new PokerMenu ();
  483. PokerMenu copy = new PokerMenu ();
  484. b.ToolTip = "mytest1";
  485. b.Target = "mytest2";
  486. b.BackColor = Color.Red;
  487. b.BorderColor = Color.Red;
  488. b.BorderStyle = BorderStyle.Dotted;
  489. b.BorderWidth = 1;
  490. b.ForeColor = Color.Red;
  491. b.Height = 100;
  492. b.MaximumDynamicDisplayLevels = 2;
  493. b.Orientation = Orientation.Vertical;
  494. b.PathSeparator = '-';
  495. b.ScrollDownImageUrl = "test";
  496. b.ScrollDownText = "test";
  497. b.ScrollUpImageUrl = "test";
  498. b.ScrollUpText = "test";
  499. b.SkipLinkText = "test";
  500. b.Visible = false;
  501. b.Width = 100;
  502. b.TabIndex = 1;
  503. object state = b.DoSaveViewState ();
  504. copy.DoLoadViewState (state);
  505. Assert.AreEqual ("mytest1", copy.ToolTip, "ViewState#1");
  506. Assert.AreEqual ("mytest2", copy.Target, "ViewState#2");
  507. Assert.AreEqual (Color.Red, copy.BackColor, "ViewState#3");
  508. Assert.AreEqual (Color.Red, copy.BorderColor , "ViewState#4");
  509. Assert.AreEqual (BorderStyle.Dotted, copy.BorderStyle, "ViewState#5");
  510. Assert.AreEqual (Unit.Pixel(1), copy.BorderWidth, "ViewState#6");
  511. Assert.AreEqual (Color.Red, copy.ForeColor, "ViewState#8");
  512. Assert.AreEqual (Unit.Pixel(100), copy.Height, "ViewState#9");
  513. Assert.AreEqual (2, copy.MaximumDynamicDisplayLevels, "ViewState#10");
  514. Assert.AreEqual (Orientation.Vertical, copy.Orientation, "ViewState#11");
  515. Assert.AreEqual ('-', copy.PathSeparator, "ViewState#12");
  516. Assert.AreEqual ("test", copy.ScrollDownImageUrl, "ViewState#13");
  517. Assert.AreEqual ("test", copy.ScrollDownText, "ViewState#14");
  518. Assert.AreEqual ("test", copy.ScrollUpImageUrl, "ViewState#15");
  519. Assert.AreEqual ("test", copy.ScrollUpText, "ViewState#16");
  520. Assert.AreEqual ("test", copy.SkipLinkText, "ViewState#17");
  521. Assert.AreEqual (1, copy.TabIndex, "ViewState#18");
  522. Assert.AreEqual (false, copy.Visible, "ViewState#19");
  523. Assert.AreEqual (Unit.Pixel (100), copy.Width, "ViewState#20");
  524. }
  525. [Test]
  526. [Category ("NotWorking")]
  527. public void Menu_ViewStateNotWorking()
  528. {
  529. PokerMenu b = new PokerMenu ();
  530. PokerMenu copy = new PokerMenu ();
  531. b.Font.Size = 10;
  532. object state = b.DoSaveViewState ();
  533. copy.DoLoadViewState (state);
  534. Assert.AreEqual ("10pt", copy.Font.Size.ToString() , "ViewState#7");
  535. }
  536. [Test]
  537. public void Menu_ViewStateItems () {
  538. PokerMenu b = new PokerMenu ();
  539. MenuItem R = new MenuItem ("root", "value-root");
  540. MenuItem N1 = new MenuItem ("node1", "value-node1");
  541. MenuItem N2 = new MenuItem ("node2", "value-node2");
  542. R.ChildItems.Add (N1);
  543. R.ChildItems.Add (N2);
  544. b.Items.Add (R);
  545. PokerMenu copy = new PokerMenu ();
  546. object state = b.DoSaveViewState ();
  547. copy.DoLoadViewState (state);
  548. Assert.AreEqual (1, copy.Items.Count, "ViewStateItems#1");
  549. Assert.AreEqual (2, copy.Items [0].ChildItems.Count, "ViewStateItems#2");
  550. Assert.AreEqual (0, copy.Items [0].ChildItems [0].ChildItems.Count, "ViewStateItems#3");
  551. Assert.AreEqual ("node1", copy.Items [0].ChildItems [0].Text, "ViewStateItems#4");
  552. Assert.AreEqual ("value-node1", copy.Items [0].ChildItems [0].Value, "ViewStateItems#5");
  553. Assert.AreEqual (false, copy.Items [0].ChildItems [0].DataBound, "ViewStateItems#6");
  554. Assert.AreEqual ("", copy.Items [0].ChildItems [0].DataPath, "ViewStateItems#7");
  555. }
  556. [Test]
  557. public void Menu_ViewStateDataBoundItems () {
  558. PokerMenu b = new PokerMenu ();
  559. SetDataBindings (b);
  560. b.DataSource = CreateXmlDataSource ();
  561. b.DataBind ();
  562. PokerMenu copy = new PokerMenu ();
  563. object state = b.DoSaveViewState ();
  564. copy.DoLoadViewState (state);
  565. CheckMenuItems (copy);
  566. }
  567. private static void CheckMenuItems (Menu m) {
  568. Assert.AreEqual (1, m.Items.Count, "CheckMenuItems#1");
  569. Assert.AreEqual (10, m.Items [0].ChildItems.Count, "CheckMenuItems#2");
  570. Assert.AreEqual (0, m.Items [0].ChildItems [0].ChildItems.Count, "CheckMenuItems#3");
  571. Assert.AreEqual (true, m.Items [0].ChildItems [0].DataBound, "CheckMenuItems#4");
  572. Assert.AreEqual ("/*[position()=1]/*[position()=1]", m.Items [0].ChildItems [0].DataPath, "CheckMenuItems#5");
  573. Assert.AreEqual (false, m.Items [0].Enabled, "CheckMenuItems_Enabled#1");
  574. Assert.AreEqual (true, m.Items [0].ChildItems [0].Enabled, "CheckMenuItems_Enabled#2");
  575. Assert.AreEqual (false, m.Items [0].ChildItems [1].Enabled, "CheckMenuItems_Enabled#3");
  576. Assert.AreEqual (false, m.Items [0].ChildItems [2].Enabled, "CheckMenuItems_Enabled#4");
  577. Assert.AreEqual (true, m.Items [0].ChildItems [2].ChildItems [0].Enabled, "CheckMenuItems_Enabled#5");
  578. Assert.AreEqual ("img#root", m.Items [0].ImageUrl, "CheckMenuItems_ImageUrl#1");
  579. Assert.AreEqual ("img#1", m.Items [0].ChildItems [0].ImageUrl, "CheckMenuItems_ImageUrl#2");
  580. Assert.AreEqual ("img#2", m.Items [0].ChildItems [1].ImageUrl, "CheckMenuItems_ImageUrl#3");
  581. Assert.AreEqual ("img#default", m.Items [0].ChildItems [2].ImageUrl, "CheckMenuItems_ImageUrl#4");
  582. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].ImageUrl, "CheckMenuItems_ImageUrl#5");
  583. Assert.AreEqual ("url#root", m.Items [0].NavigateUrl, "CheckMenuItems_NavigateUrl#1");
  584. Assert.AreEqual ("url#1", m.Items [0].ChildItems [0].NavigateUrl, "CheckMenuItems_NavigateUrl#2");
  585. Assert.AreEqual ("url#2", m.Items [0].ChildItems [1].NavigateUrl, "CheckMenuItems_NavigateUrl#3");
  586. Assert.AreEqual ("url#default", m.Items [0].ChildItems [2].NavigateUrl, "CheckMenuItems_NavigateUrl#4");
  587. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].NavigateUrl, "CheckMenuItems_NavigateUrl#5");
  588. Assert.AreEqual ("popoutimg#root", m.Items [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#1");
  589. Assert.AreEqual ("popoutimg#1", m.Items [0].ChildItems [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#2");
  590. Assert.AreEqual ("popoutimg#2", m.Items [0].ChildItems [1].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#3");
  591. Assert.AreEqual ("popoutimg#default", m.Items [0].ChildItems [2].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#4");
  592. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].PopOutImageUrl, "CheckMenuItems_PopOutImageUrl#5");
  593. Assert.AreEqual (false, m.Items [0].Selectable, "CheckMenuItems_Selectable#1");
  594. Assert.AreEqual (true, m.Items [0].ChildItems [0].Selectable, "CheckMenuItems_Selectable#2");
  595. Assert.AreEqual (false, m.Items [0].ChildItems [1].Selectable, "CheckMenuItems_Selectable#3");
  596. Assert.AreEqual (false, m.Items [0].ChildItems [2].Selectable, "CheckMenuItems_Selectable#4");
  597. Assert.AreEqual (true, m.Items [0].ChildItems [2].ChildItems [0].Selectable, "CheckMenuItems_Selectable#5");
  598. Assert.AreEqual ("separatorimg#root", m.Items [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#1");
  599. Assert.AreEqual ("separatorimg#1", m.Items [0].ChildItems [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#2");
  600. Assert.AreEqual ("separatorimg#2", m.Items [0].ChildItems [1].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#3");
  601. Assert.AreEqual ("separatorimg#default", m.Items [0].ChildItems [2].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#4");
  602. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].SeparatorImageUrl, "CheckMenuItems_SeparatorImageUrl#5");
  603. Assert.AreEqual ("target#root", m.Items [0].Target, "CheckMenuItems_Target#1");
  604. Assert.AreEqual ("target#1", m.Items [0].ChildItems [0].Target, "CheckMenuItems_Target#2");
  605. Assert.AreEqual ("target#2", m.Items [0].ChildItems [1].Target, "CheckMenuItems_Target#3");
  606. Assert.AreEqual ("target#default", m.Items [0].ChildItems [2].Target, "CheckMenuItems_Target#4");
  607. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].Target, "CheckMenuItems_Target#5");
  608. Assert.AreEqual ("text#root", m.Items [0].Text, "CheckMenuItems_Text#1");
  609. Assert.AreEqual ("text#1", m.Items [0].ChildItems [0].Text, "CheckMenuItems_Text#2");
  610. Assert.AreEqual ("text#2", m.Items [0].ChildItems [1].Text, "CheckMenuItems_Text#3");
  611. Assert.AreEqual ("text#", m.Items [0].ChildItems [2].Text, "CheckMenuItems_Text#4");
  612. Assert.AreEqual ("subnode", m.Items [0].ChildItems [2].ChildItems [0].Text, "CheckMenuItems_Text#5");
  613. Assert.AreEqual ("tooltip#root", m.Items [0].ToolTip, "CheckMenuItems_ToolTip#1");
  614. Assert.AreEqual ("tooltip#1", m.Items [0].ChildItems [0].ToolTip, "CheckMenuItems_ToolTip#2");
  615. Assert.AreEqual ("tooltip#2", m.Items [0].ChildItems [1].ToolTip, "CheckMenuItems_ToolTip#3");
  616. Assert.AreEqual ("tooltip#default", m.Items [0].ChildItems [2].ToolTip, "CheckMenuItems_ToolTip#4");
  617. Assert.AreEqual ("", m.Items [0].ChildItems [2].ChildItems [0].ToolTip, "CheckMenuItems_ToolTip#5");
  618. Assert.AreEqual ("value#root", m.Items [0].Value, "CheckMenuItems_Value#1");
  619. Assert.AreEqual ("value#1", m.Items [0].ChildItems [0].Value, "CheckMenuItems_Value#2");
  620. Assert.AreEqual ("value#2", m.Items [0].ChildItems [1].Value, "CheckMenuItems_Value#3");
  621. Assert.AreEqual ("value#default", m.Items [0].ChildItems [2].Value, "CheckMenuItems_Value#4");
  622. Assert.AreEqual ("subnode", m.Items [0].ChildItems [2].ChildItems [0].Value, "CheckMenuItems_Value#5");
  623. Assert.AreEqual ("text#extra1", m.Items [0].ChildItems [3].Text, "CheckMenuItems_Extra1#1");
  624. Assert.AreEqual ("text#extra1", m.Items [0].ChildItems [3].Value, "CheckMenuItems_Extra1#2");
  625. Assert.AreEqual ("value#extra2", m.Items [0].ChildItems [4].Text, "CheckMenuItems_Extra2#1");
  626. Assert.AreEqual ("value#extra2", m.Items [0].ChildItems [4].Value, "CheckMenuItems_Extra2#2");
  627. Assert.AreEqual ("text#extra3", m.Items [0].ChildItems [5].Text, "CheckMenuItems_Extra3#1");
  628. Assert.AreEqual ("", m.Items [0].ChildItems [5].Value, "CheckMenuItems_Extra3#2");
  629. Assert.AreEqual ("", m.Items [0].ChildItems [6].Text, "CheckMenuItems_Extra3#3");
  630. Assert.AreEqual ("value#extra3", m.Items [0].ChildItems [6].Value, "CheckMenuItems_Extra3#4");
  631. Assert.AreEqual ("", m.Items [0].ChildItems [7].Text, "CheckMenuItems_Extra3#5");
  632. Assert.AreEqual ("", m.Items [0].ChildItems [7].Value, "CheckMenuItems_Extra3#6");
  633. Assert.AreEqual ("text#extra4", m.Items [0].ChildItems [8].Text, "CheckMenuItems_Extra4#1");
  634. Assert.AreEqual ("text#default", m.Items [0].ChildItems [8].Value, "CheckMenuItems_Extra4#2");
  635. Assert.AreEqual ("value#default", m.Items [0].ChildItems [9].Text, "CheckMenuItems_Extra5#1");
  636. Assert.AreEqual ("value#extra5", m.Items [0].ChildItems [9].Value, "CheckMenuItems_Extra5#2");
  637. }
  638. void SetDataBindings (Menu menu) {
  639. MenuItemBinding b = new MenuItemBinding ();
  640. b.DataMember = "node";
  641. b.EnabledField = "enabled";
  642. b.Enabled = false;
  643. b.ImageUrlField = "img";
  644. b.ImageUrl = "img#default";
  645. b.NavigateUrlField = "url";
  646. b.NavigateUrl = "url#default";
  647. b.PopOutImageUrlField = "popoutimg";
  648. b.PopOutImageUrl = "popoutimg#default";
  649. b.SelectableField = "selectable";
  650. b.Selectable = false;
  651. b.SeparatorImageUrlField = "separatorimg";
  652. b.SeparatorImageUrl = "separatorimg#default";
  653. b.TargetField = "target";
  654. b.Target = "target#default";
  655. b.FormatString = "text#{0}";
  656. b.TextField = "text";
  657. b.Text = "text#default";
  658. b.ToolTipField = "tooltip";
  659. b.ToolTip = "tooltip#default";
  660. b.ValueField = "value";
  661. b.Value = "value#default";
  662. menu.DataBindings.Add (b);
  663. b = new MenuItemBinding ();
  664. b.DataMember = "root";
  665. b.Enabled = false;
  666. b.ImageUrl = "img#root";
  667. b.NavigateUrl = "url#root";
  668. b.PopOutImageUrl = "popoutimg#root";
  669. b.Selectable = false;
  670. b.SeparatorImageUrl = "separatorimg#root";
  671. b.Target = "target#root";
  672. b.Text = "text#root";
  673. b.ToolTip = "tooltip#root";
  674. b.Value = "value#root";
  675. menu.DataBindings.Add (b);
  676. b = new MenuItemBinding ();
  677. b.DataMember = "extra1";
  678. b.Text = "text#extra1";
  679. menu.DataBindings.Add (b);
  680. b = new MenuItemBinding ();
  681. b.DataMember = "extra2";
  682. b.Value = "value#extra2";
  683. menu.DataBindings.Add (b);
  684. b = new MenuItemBinding ();
  685. b.DataMember = "extra3";
  686. b.TextField = "text";
  687. b.ValueField = "value";
  688. menu.DataBindings.Add (b);
  689. b = new MenuItemBinding ();
  690. b.DataMember = "extra4";
  691. b.TextField = "text";
  692. b.Text = "text#default";
  693. b.ValueField = "value";
  694. menu.DataBindings.Add (b);
  695. b = new MenuItemBinding ();
  696. b.DataMember = "extra5";
  697. b.TextField = "text";
  698. b.Value = "value#default";
  699. b.ValueField = "value";
  700. menu.DataBindings.Add (b);
  701. }
  702. XmlDataSource CreateXmlDataSource () {
  703. XmlDataSource xmlDs = new XmlDataSource ();
  704. xmlDs.ID = "XmlDataSource";
  705. xmlDs.Data = "<root>"+
  706. "<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\" />" +
  707. "<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\" />" +
  708. "<node url=\"\" img=\"\" enabled=\"\" selectable=\"\" popoutimg=\"\" separatorimg=\"\" target=\"\" text=\"\" tooltip=\"\" value=\"\">" +
  709. "<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\" />" +
  710. "<subnode /></node>"+
  711. "<extra1 /><extra2 />"+
  712. "<extra3 text=\"text#extra3\" value=\"\" />" +
  713. "<extra3 text=\"\" value=\"value#extra3\" />" +
  714. "<extra3 text=\"\" value=\"\" />" +
  715. "<extra4 text=\"text#extra4\" value=\"\" />" +
  716. "<extra5 text=\"\" value=\"value#extra5\" />" +
  717. "</root>";
  718. return xmlDs;
  719. }
  720. [Test]
  721. public void Menu_DataBindings () {
  722. Menu m = new Menu ();
  723. SetDataBindings (m);
  724. m.DataSource = CreateXmlDataSource ();
  725. m.DataBind ();
  726. CheckMenuItems (m);
  727. }
  728. // Rendering Menu controll with some possible options, styles and items
  729. [Test]
  730. [Category ("NunitWeb")]
  731. public void Menu_DefaultRender ()
  732. {
  733. string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (_DefaultRender)).Run ();
  734. string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
  735. string OriginControlHtml = "";
  736. HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderDefault");
  737. }
  738. // All this methods are delegates for running tests in host assembly.
  739. public static void _DefaultRender (Page p)
  740. {
  741. LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
  742. LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
  743. Menu menu = new Menu ();
  744. p.Form.Controls.Add (lcb);
  745. p.Form.Controls.Add (menu);
  746. p.Form.Controls.Add (lce);
  747. }
  748. [Test]
  749. [Category ("NunitWeb")]
  750. [Category ("NotWorking")]
  751. public void Menu_ItemsRender ()
  752. {
  753. string RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (_ItemsRender)).Run ();
  754. string RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
  755. string OriginControlHtml = @"<a href=""#ctl01_SkipLink""><img alt=""Skip Navigation Links"" src=""/NunitWeb/WebResource.axd?d=gZrz8lvSQfolS1pG07HX9g2&amp;t=632784640484505569"" width=""0"" height=""0""
  756. style=""border-width:0px;"" /></a>
  757. <table id=""ctl01"" class=""ctl01_2"" cellpadding=""0"" cellspacing=""0"" border=""0"">
  758. <tr onmouseover=""Menu_HoverStatic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n0"">
  759. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  760. <tr>
  761. <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1')"">root</a></td><td style=""width:0;"">
  762. <img src=""/NunitWeb/WebResource.axd?d=jEQEPhExqNH3fus0nmWZ3pFNw-rGIVoBqrGqFcOqB1U1&amp;t=632784640484505569"" alt=""Expand root"" style=""border-style:none;vertical-align:middle;"" /></td>
  763. </tr>
  764. </table></td>
  765. </tr>
  766. </table><div id=""ctl01n0Items"" class=""ctl01_0"">
  767. <table border=""0"" cellpadding=""0"" cellspacing=""0"">
  768. <tr onmouseover=""Menu_HoverDynamic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n1"">
  769. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  770. <tr>
  771. <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1\\value2')"">node1</a></td>
  772. </tr>
  773. </table></td>
  774. </tr><tr onmouseover=""Menu_HoverDynamic(this)"" onmouseout=""Menu_Unhover(this)"" onkeyup=""Menu_Key(this)"" id=""ctl01n2"">
  775. <td><table cellpadding=""0"" cellspacing=""0"" border=""0"" width=""100%"">
  776. <tr>
  777. <td style=""white-space:nowrap;width:100%;""><a class=""ctl01_1"" href=""javascript:__doPostBack('ctl01','value1\\value3')"">node2</a></td>
  778. </tr>
  779. </table></td>
  780. </tr>
  781. </table><div class=""ctl01_0"" id=""ctl01n0ItemsUp"" onmouseover=""PopOut_Up(this)"" onmouseout=""PopOut_Stop(this)"" style=""text-align:center;"">
  782. <img src=""/NunitWeb/WebResource.axd?d=Kql4shtTcfCiKn_s1ZX6W6WIJmS2VsB7hDFw8oD-9I01&amp;t=632784640484505569"" alt=""Scroll up"" />
  783. </div><div class=""ctl01_0"" id=""ctl01n0ItemsDn"" onmouseover=""PopOut_Down(this)"" onmouseout=""PopOut_Stop(this)"" style=""text-align:center;"">
  784. <img src=""/NunitWeb/WebResource.axd?d=QxI-WSWnY8jfAZsv_BcOLFGj_CTJTI_bGi0dPzQPCtI1&amp;t=632784640484505569"" alt=""Scroll down"" />
  785. </div>
  786. </div><a id=""ctl01_SkipLink""></a>";
  787. HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"Render Items");
  788. }
  789. public static void _ItemsRender (Page p)
  790. {
  791. LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
  792. LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
  793. Menu menu = new Menu ();
  794. MenuItem R = new MenuItem ("root", "value1");
  795. MenuItem N1 = new MenuItem ("node1", "value2");
  796. MenuItem N2 = new MenuItem ("node2", "value3");
  797. R.ChildItems.Add (N1);
  798. R.ChildItems.Add (N2);
  799. menu.Items.Add (R);
  800. p.Form.Controls.Add (lcb);
  801. p.Form.Controls.Add (menu);
  802. p.Form.Controls.Add (lce);
  803. }
  804. //Events Stuff
  805. private bool OnDataBinding;
  806. private bool OnDataBound;
  807. private bool OnMenuItemClick;
  808. private bool OnInit;
  809. private bool OnMenuItemDataBound;
  810. private bool OnPreRender;
  811. private void OnMenuItemDataBoundHandler(object sender, MenuEventArgs e)
  812. {
  813. OnMenuItemDataBound = true;
  814. }
  815. private void OnInitHandler (object sender, EventArgs e)
  816. {
  817. OnInit = true;
  818. }
  819. private void OnDataBindingHandler (object sender, EventArgs e)
  820. {
  821. OnDataBinding = true;
  822. }
  823. private void OnDataDataBoundHandler (object sender, EventArgs e)
  824. {
  825. OnDataBound = true;
  826. }
  827. private void OnMenuItemClickHandler (object sender, MenuEventArgs e)
  828. {
  829. OnMenuItemClick = true;
  830. }
  831. private void OnPreRenderHandler (object sender, EventArgs e)
  832. {
  833. OnPreRender = true;
  834. }
  835. private void ResetEvents ()
  836. {
  837. OnMenuItemClick = false;
  838. OnDataBinding = false;
  839. OnDataBound = false;
  840. OnInit = false;
  841. OnPreRender = false;
  842. }
  843. [Test]
  844. public void Menu_Events ()
  845. {
  846. Page myPage = new Page ();
  847. PokerMenu p = new PokerMenu ();
  848. MenuItem I = new MenuItem ();
  849. p.Items.Add (I);
  850. myPage.Controls.Add(p);
  851. p.Init += new EventHandler(OnInitHandler);
  852. p.DataBinding += new EventHandler (OnDataBindingHandler);
  853. p.DataBound += new EventHandler(OnDataDataBoundHandler);
  854. p.MenuItemClick += new MenuEventHandler(OnMenuItemClickHandler);
  855. p.MenuItemDataBound += new MenuEventHandler (OnMenuItemDataBoundHandler);
  856. Assert.AreEqual (false, OnDataBinding, "BeforeOnDataBinding");
  857. p.DoOnDataBind (new EventArgs ());
  858. Assert.AreEqual (true, OnDataBinding, "AfterOnDataBinding");
  859. Assert.AreEqual (false, OnDataBound, "BeforeOnDataBound");
  860. p.DoOnDataBound (new EventArgs ());
  861. Assert.AreEqual (true, OnDataBound, "AfterOnDataBinding");
  862. MenuEventArgs e = new MenuEventArgs (I);
  863. Assert.AreEqual (false, OnMenuItemClick, "BeforeMenuItemClick");
  864. p.DoOnMenuItemClick (e);
  865. Assert.AreEqual (true, OnMenuItemClick, "AfterMenuItemClick");
  866. Assert.AreEqual (false, OnInit, "BeforeOnInit");
  867. p.DoOnInit (new EventArgs());
  868. Assert.AreEqual (true, OnInit, "AfterOnInit");
  869. Assert.AreEqual (false, OnMenuItemDataBound, "BeforeMenuItemDataBound");
  870. p.DoMenuItemDataBound(e);
  871. Assert.AreEqual (true, OnMenuItemDataBound, "AfterMenuItemDataBound");
  872. }
  873. [Test]
  874. public void Menu_BubbleEvent () {
  875. PokerMenu pm = new PokerMenu ();
  876. MenuItem item = new MenuItem ("Root");
  877. pm.Items.Add (item);
  878. pm.MenuItemClick += new MenuEventHandler (pm_MenuItemClick);
  879. _MenuItemClick = false;
  880. MenuEventArgs clickCommandArg = new MenuEventArgs (item, null, new CommandEventArgs (Menu.MenuItemClickCommandName, null));
  881. CommandEventArgs notClickCommandArg = new CommandEventArgs (Menu.MenuItemClickCommandName + "No", null);
  882. Assert.AreEqual (true, pm.DoOnBubbleEvent (notClickCommandArg), "Bubble Event#1");
  883. Assert.AreEqual (false, _MenuItemClick, "MenuItemClick Bubbled");
  884. Assert.AreEqual (true, pm.DoOnBubbleEvent (clickCommandArg), "Bubble Event#2");
  885. Assert.AreEqual (true, _MenuItemClick, "MenuItemClick Bubbled");
  886. Assert.AreEqual (false, pm.DoOnBubbleEvent (new EventArgs ()), "Bubble Event#3");
  887. }
  888. bool _MenuItemClick;
  889. void pm_MenuItemClick (object sender, MenuEventArgs e) {
  890. _MenuItemClick = true;
  891. }
  892. [Test]
  893. [Category ("NunitWeb")]
  894. public void Menu_PreRenderEvent ()
  895. {
  896. new WebTest (PageInvoker.CreateOnLoad (PreRenderEvent)).Run ();
  897. }
  898. public void PreRenderEvent (Page p)
  899. {
  900. PokerMenu pm = new PokerMenu ();
  901. p.Controls.Add (pm);
  902. pm.PreRender += new EventHandler (OnPreRenderHandler);
  903. Assert.AreEqual (false, OnPreRender, "BeforePreRender");
  904. pm.DoOnPreRender (new EventArgs ());
  905. Assert.AreEqual (true, OnPreRender, "AfterPreRender");
  906. }
  907. [TestFixtureTearDown]
  908. public void TearDown ()
  909. {
  910. Thread.Sleep (100);
  911. WebTest.Unload ();
  912. }
  913. // A simple Template class to wrap an image.
  914. public class ImageTemplate : ITemplate
  915. {
  916. private MyWebControl.Image myImage;
  917. public MyWebControl.Image MyImage
  918. {
  919. get
  920. {
  921. return myImage;
  922. }
  923. set
  924. {
  925. myImage = value;
  926. }
  927. }
  928. public void InstantiateIn (Control container)
  929. {
  930. container.Controls.Add (MyImage);
  931. }
  932. }
  933. [Test]
  934. public void MenuClass ()
  935. {
  936. #if DOT_NET
  937. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.menuclass.aspx", "menuclass.aspx");
  938. #else
  939. WebTest.CopyResource (GetType (), "menuclass.aspx", "menuclass.aspx");
  940. #endif
  941. string res = new WebTest ("menuclass.aspx").Run ();
  942. string menua_pattern="<table[^>]*class=\"[^\"]*menua[^\"]*\"[^>]*>";
  943. Assert.IsTrue (Regex.IsMatch (res, ".*"+menua_pattern+".*",
  944. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  945. "check that <table class=\"menua\"> is found");
  946. Assert.IsFalse (Regex.IsMatch (res, ".*"+menua_pattern+".*"+menua_pattern+".*",
  947. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  948. "check that <table class=\"menua\"> is found only once");
  949. }
  950. [Test]
  951. [Category ("NunitWeb")]
  952. public void Menu_PostBack ()
  953. {
  954. #if DOT_NET
  955. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
  956. #else
  957. WebTest.CopyResource (GetType (), "PostBackMenuTest.aspx", "PostBackMenuTest.aspx");
  958. #endif
  959. WebTest t = new WebTest ("PostBackMenuTest.aspx");
  960. string str = t.Run ();
  961. FormRequest fr = new FormRequest (t.Response, "form1");
  962. fr.Controls.Add ("__EVENTTARGET");
  963. fr.Controls.Add ("__EVENTARGUMENT");
  964. fr.Controls["__EVENTTARGET"].Value = "Menu1";
  965. fr.Controls["__EVENTARGUMENT"].Value = "root\\node2";
  966. t.Request = fr;
  967. PageDelegates pd = new PageDelegates ();
  968. pd.PreRender = _MenuItemsPost;
  969. t.Invoker = new PageInvoker (pd);
  970. t.Run ();
  971. }
  972. public static void _MenuItemsPost (Page p)
  973. {
  974. foreach (Control c in p.Form.Controls) {
  975. Menu m = c as Menu;
  976. if (m != null)
  977. Assert.AreEqual ("node2", m.SelectedValue, "MenuItemsPostBack");
  978. }
  979. }
  980. }
  981. }
  982. #endif