2 // Tests for System.Web.UI.WebControls.BulletedList.cs
5 // Yoni Klein (yonik@mainsoft.com)
6 // Merav Sudri(meravs@mainsoft.com)
7 // Tal Klahr (talk@mainsoft.com)
10 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using NUnit.Framework;
34 using System.Collections;
36 using System.Globalization;
39 using System.Web.UI.WebControls;
40 using MonoTests.SystemWeb.Framework;
41 using MonoTests.stand_alone.WebHarness;
44 namespace MonoTests.System.Web.UI.WebControls
46 class PokerBulletedList : BulletedList
48 public PokerBulletedList ()
52 public object SaveState ()
54 return SaveViewState ();
56 public void LoadState (object o)
60 public StateBag StateBag
62 get { return base.ViewState; }
65 public string Render ()
67 StringWriter sw = new StringWriter ();
68 HtmlTextWriter tw = new HtmlTextWriter (sw);
71 return sw.ToString ();
74 public void DoRenderContents (HtmlTextWriter tw)
79 public void DoRenderBulletText (ListItem item, int index, HtmlTextWriter tw)
81 RenderBulletText (item, index, tw);
84 public void DoOnClick (BulletedListEventArgs e)
92 class VerifyMultiSelectBulletedList : BulletedList
94 public new virtual void VerifyMultiSelect()
96 base.VerifyMultiSelect();
101 public class BulletedListTest
106 WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
110 public void BulletedList_DefaultProperties ()
113 PokerBulletedList b = new PokerBulletedList ();
114 Assert.AreEqual (0, b.StateBag.Count, "ViewState.Count");
115 Assert.AreEqual (string.Empty, b.BulletImageUrl, "BulletImageUrl");
116 Assert.AreEqual (BulletStyle.NotSet, b.BulletStyle, "BulletStyle");
117 EmptyControlCollection c = new EmptyControlCollection (b);
118 EmptyControlCollection c2 = (EmptyControlCollection) b.Controls;
119 Assert.AreEqual ("System.Web.UI.EmptyControlCollection", b.Controls.GetType ().ToString (), "Controls");
120 Assert.AreEqual ("Text", b.DisplayMode.ToString (), "DisplayMode");
121 Assert.AreEqual (1, b.FirstBulletNumber, "FirstBulletNumber");
122 Assert.AreEqual (-1, b.SelectedIndex, "SelectedIndex");
123 Assert.AreEqual (null, b.SelectedItem, "SelectedItem");
124 Assert.AreEqual (string.Empty, b.Target, "Target");
128 public void BulletedList_DefaultPropertiesNotWorking ()
130 PokerBulletedList b = new PokerBulletedList ();
131 Assert.AreEqual (string.Empty, b.SelectedValue, "SelectedValue"); // NotImplementedException on Mono
132 Assert.AreEqual (string.Empty, b.Text, "Text");
136 public void BulletedList_AssignToDefaultProperties ()
138 PokerBulletedList b = new PokerBulletedList ();
139 Assert.AreEqual (0, b.StateBag.Count, "ViewState.Count");
140 b.BulletImageUrl = "Images/edit.gif";
141 Assert.AreEqual ("Images/edit.gif", b.BulletImageUrl, "BulletImageUrl");
142 b.BulletStyle = BulletStyle.Numbered;
143 Assert.AreEqual (BulletStyle.Numbered, b.BulletStyle, "BulletStyle");
144 b.BulletStyle = BulletStyle.LowerAlpha;
145 Assert.AreEqual (BulletStyle.LowerAlpha, b.BulletStyle, "BulletStyle");
146 b.BulletStyle = BulletStyle.CustomImage;
147 Assert.AreEqual (BulletStyle.CustomImage, b.BulletStyle, "BulletStyle");
148 b.BulletStyle = BulletStyle.Square;
149 Assert.AreEqual (BulletStyle.Square, b.BulletStyle, "BulletStyle");
150 b.DisplayMode = BulletedListDisplayMode.HyperLink;
151 Assert.AreEqual (BulletedListDisplayMode.HyperLink, b.DisplayMode, "DisplayMode");
152 b.FirstBulletNumber = 4;
153 Assert.AreEqual (4, b.FirstBulletNumber, "FirstBulletNumber");
154 b.Target = "_search";
155 Assert.AreEqual ("_search", b.Target, "Target_search");
157 Assert.AreEqual ("_top", b.Target, "Target_top");
158 b.Target = "_parent";
159 Assert.AreEqual ("_parent", b.Target, "Target_parent");
161 Assert.AreEqual ("_blank", b.Target, "Target_blank");
163 Assert.AreEqual ("_self", b.Target, "Target_self");
168 public void BulletedList_NullProperties ()
170 PokerBulletedList b = new PokerBulletedList ();
171 Assert.AreEqual (0, b.StateBag.Count, "ViewState.Count");
172 b.BulletImageUrl = null;
173 Assert.AreEqual (string.Empty, b.BulletImageUrl, "BulletImageUrl");
175 Assert.AreEqual (string.Empty, b.Target, "Target");
180 public void BulletedList_BulletStyle_Render ()
182 PokerBulletedList b = new PokerBulletedList ();
184 Assert.AreEqual (b.Render (), "<ul>\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "Render1");
185 b.BulletStyle = BulletStyle.Square;
186 Assert.AreEqual (b.Render (), "<ul style=\"list-style-type:square;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "BulletStyle.Square");
187 b.BulletStyle = BulletStyle.LowerRoman;
188 Assert.AreEqual (b.Render (), "<ol style=\"list-style-type:lower-roman;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "BulletStyle.LowerRoman");
189 b.BulletStyle = BulletStyle.Circle;
190 Assert.AreEqual (b.Render (), "<ul style=\"list-style-type:circle;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "BulletStyle.Circle");
191 b.BulletStyle = BulletStyle.Disc;
192 Assert.AreEqual (b.Render (), "<ul style=\"list-style-type:disc;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "BulletStyle.Disc");
193 b.BulletStyle = BulletStyle.LowerAlpha;
194 Assert.AreEqual (b.Render (), "<ol style=\"list-style-type:lower-alpha;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "BulletStyle.LowerAlpha");
195 b.BulletStyle = BulletStyle.Numbered;
196 Assert.AreEqual (b.Render (), "<ol style=\"list-style-type:decimal;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "BulletStyle.Numbered");
197 b.BulletStyle = BulletStyle.UpperAlpha;
198 Assert.AreEqual (b.Render (), "<ol style=\"list-style-type:upper-alpha;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "BulletStyle.UpperAlpha");
199 b.BulletStyle = BulletStyle.UpperRoman;
200 Assert.AreEqual (b.Render (), "<ol style=\"list-style-type:upper-roman;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "BulletStyle.UpperRoman");
201 b.BulletStyle = BulletStyle.NotSet;
202 Assert.AreEqual (b.Render (), "<ul>\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "BulletStyle.NotSet");
203 b.BulletStyle = BulletStyle.CustomImage;
204 b.BulletImageUrl = "Images/edit.gif";
205 Assert.AreEqual (b.Render (), "<ul style=\"list-style-image:url(Images/edit.gif);\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ul>", "BulletStyle.CustomImage");
209 public void BulletedList_HyperLinkDisplayMode_Render ()
211 PokerBulletedList b = new PokerBulletedList ();
212 ListItem item1 = new ListItem ("HyperLink1", "TextFile1.txt");
213 ListItem item2 = new ListItem ("HyperLink2", "TextFile2.txt");
216 b.DisplayMode = BulletedListDisplayMode.HyperLink;
217 Assert.AreEqual (b.Render (), "<ul>\n\t<li><a href=\"TextFile1.txt\">HyperLink1</a></li><li><a href=\"TextFile2.txt\">HyperLink2</a></li>\n</ul>", "BulletedListDisplayMode.HyperLink");
221 public void BulletedList_ButtonLinkDisplayMode_Render ()
223 PokerBulletedList b = new PokerBulletedList ();
225 b.DisplayMode = BulletedListDisplayMode.LinkButton;
226 b.ID = "BulletedListTest";
227 Page p = new Page ();
229 p.EnableEventValidation = false;
230 string html = b.Render ();
231 MonoTests.stand_alone.WebHarness.HtmlDiff.AssertAreEqual (b.Render (), "<ul id=\"BulletedListTest\">\n\t<li><a href=\"javascript:__doPostBack('BulletedListTest','0')\">Item1</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','1')\">Item2</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','2')\">Item3</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','3')\">Item4</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','4')\">Item5</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','5')\">Item6</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','6')\">Item7</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','7')\">Item8</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','8')\">Item9</a></li><li><a href=\"javascript:__doPostBack('BulletedListTest','9')\">Item10</a></li>\n</ul>", "BulletedListDisplayMode.LinkButton");
237 public void BulletedList_FirstBulletNumber_Render ()
239 PokerBulletedList b = new PokerBulletedList ();
241 b.BulletStyle = BulletStyle.Numbered;
242 b.FirstBulletNumber = 3;
243 Assert.AreEqual (b.Render (), "<ol start=\"3\" style=\"list-style-type:decimal;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "FirstBulletNumber1");
244 b.FirstBulletNumber = 6;
245 Assert.AreEqual (b.Render (), "<ol start=\"6\" style=\"list-style-type:decimal;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "FirstBulletNumber2");
246 b.FirstBulletNumber = -2;
247 Assert.AreEqual (b.Render (), "<ol start=\"-2\" style=\"list-style-type:decimal;\">\n\t<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>\n</ol>", "FirstBulletNumber3");
252 public void BulletedList_ViewState ()
254 PokerBulletedList b = new PokerBulletedList ();
255 b.BulletImageUrl = "Images/edit.gif";
256 Assert.AreEqual ("Images/edit.gif", b.BulletImageUrl, "ViewState1");
257 b.BulletStyle = BulletStyle.Numbered;
258 Assert.AreEqual (BulletStyle.Numbered, b.BulletStyle, "ViewState2");
259 b.Target = "_search";
260 Assert.AreEqual ("_search", b.Target, "ViewState3");
261 b.DisplayMode = BulletedListDisplayMode.HyperLink;
262 Assert.AreEqual (BulletedListDisplayMode.HyperLink, b.DisplayMode, "ViewState4");
263 b.FirstBulletNumber = 5;
264 Assert.AreEqual (5, b.FirstBulletNumber, "ViewState5");
265 object state = b.SaveState ();
266 PokerBulletedList copy = new PokerBulletedList ();
267 copy.LoadState (state);
268 Assert.AreEqual ("Images/edit.gif", b.BulletImageUrl, "ViewState6");
269 Assert.AreEqual (BulletStyle.Numbered, b.BulletStyle, "ViewState7");
270 Assert.AreEqual ("_search", b.Target, "ViewState8");
271 Assert.AreEqual (BulletedListDisplayMode.HyperLink, b.DisplayMode, "ViewState9");
272 Assert.AreEqual (5, b.FirstBulletNumber, "ViewState10");
278 public void BulletedList_RenderContents ()
280 PokerBulletedList p = new PokerBulletedList ();
281 StringWriter sw = new StringWriter ();
282 HtmlTextWriter tw = new HtmlTextWriter (sw);
284 p.DoRenderContents (tw);
285 Assert.AreEqual (sw.ToString (), "<li>Item1</li><li>Item2</li><li>Item3</li><li>Item4</li><li>Item5</li><li>Item6</li><li>Item7</li><li>Item8</li><li>Item9</li><li>Item10</li>", "BulletedList_RenderContents");
289 public void BulletedList_RenderBulletText ()
291 PokerBulletedList p = new PokerBulletedList ();
292 StringWriter sw = new StringWriter ();
293 HtmlTextWriter tw = new HtmlTextWriter (sw);
295 p.DoRenderBulletText (p.Items[0], 0, tw);
296 Assert.AreEqual (sw.ToString (), "Item1", "BulletedList_RenderBulletText1");
297 p.DoRenderBulletText (p.Items[5], 5, tw);
298 Assert.AreEqual (sw.ToString (), "Item1Item6", "BulletedList_RenderBulletText2");
303 private bool clicked = false;
305 private void BulletedListClickHandler (object sender, BulletedListEventArgs e)
310 private void ResetEvents ()
316 public void BulletedList_Events ()
318 PokerBulletedList pb = new PokerBulletedList ();
321 pb.Click += new BulletedListEventHandler (BulletedListClickHandler);
322 Assert.AreEqual (false, clicked, "BeforeClick");
323 pb.DoOnClick (new BulletedListEventArgs (0));
324 Assert.AreEqual (true, clicked, "BeforeClick");
327 //PostBack raise event
329 [Category ("NunitWeb")]
330 public void BulletedList_PostBackEvent ()
332 WebTest t = new WebTest ("NoEventValidation.aspx");
333 t.Invoker = PageInvoker.CreateOnInit (new PageDelegate (_PostBackEvent));
334 string html = t.Run ();
335 if (html.IndexOf ("Test_Item") < 0)
336 Assert.Fail ("BulletedList not created");
338 FormRequest fr = new FormRequest (t.Response, "form1");
339 fr.Controls.Add ("__EVENTTARGET");
340 fr.Controls.Add ("__EVENTARGUMENT");
341 fr.Controls["__EVENTTARGET"].Value = "BL";
342 fr.Controls["__EVENTARGUMENT"].Value = "0";
345 if (t.UserData == null || (string) t.UserData != "list_Click Fired_0")
346 Assert.Fail ("list_Click Not Fired");
349 #region _PostBackEvent_helper
350 public static void _PostBackEvent (Page p)
352 BulletedList list = new BulletedList ();
354 list.DisplayMode = BulletedListDisplayMode.LinkButton;
355 list.Items.Add (new ListItem ("Test_Item", "Test_Value", true));
356 list.Click += new BulletedListEventHandler (list_Click);
357 p.Controls.Add (list);
360 static void list_Click (object sender, BulletedListEventArgs e)
362 WebTest.CurrentTest.UserData = "list_Click Fired_" + e.Index.ToString();
367 [ExpectedException (typeof (HttpException))]
368 public void VerifyMultiSelectTest ()
370 VerifyMultiSelectBulletedList list = new VerifyMultiSelectBulletedList ();
371 list.VerifyMultiSelect ();
375 [TestFixtureTearDown]
376 public void TearDown ()
381 // Help class for DS creation
382 private void AddListItems (PokerBulletedList b)
384 ListItem item1 = new ListItem ("Item1", "Item1");
385 ListItem item2 = new ListItem ("Item2", "Item2");
386 ListItem item3 = new ListItem ("Item3", "Item3");
387 ListItem item4 = new ListItem ("Item4", "Item4");
388 ListItem item5 = new ListItem ("Item5", "Item5");
389 ListItem item6 = new ListItem ("Item6", "Item6");
390 ListItem item7 = new ListItem ("Item7", "Item7");
391 ListItem item8 = new ListItem ("Item8", "Item8");
392 ListItem item9 = new ListItem ("Item9", "Item9");
393 ListItem item10 = new ListItem ("Item10", "Item10");
403 b.Items.Add (item10);