2 // DataListTest.cs - Unit tests for System.Web.UI.WebControls.DataList
5 // Sebastien Pouliot <sebastien@ximian.com>
6 // Gonzalo Paniagua Javier <gonzalo@ximian.com>
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using System.Collections;
32 using System.ComponentModel;
38 using System.Web.UI.WebControls;
40 using NUnit.Framework;
41 using MonoTests.Common;
43 namespace MonoTests.System.Web.UI.WebControls {
45 public class TestDataList : DataList {
48 get { return base.TagName; }
51 public StateBag StateBag {
52 get { return base.ViewState; }
56 private HtmlTextWriter GetWriter ()
58 StringWriter sw = new StringWriter ();
60 return new HtmlTextWriter (sw);
63 public string Render ()
65 HtmlTextWriter writer = GetWriter ();
67 return writer.InnerWriter.ToString ();
70 public string RenderItem (ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo)
72 HtmlTextWriter writer = GetWriter ();
73 (this as IRepeatInfoUser).RenderItem (itemType, repeatIndex, repeatInfo, writer);
74 return writer.InnerWriter.ToString ();
77 public void CreateCH ()
79 CreateControlHierarchy (true);
82 public void PrepareCH ()
84 PrepareControlHierarchy ();
87 public void TrackState ()
92 public void LoadState (object state)
94 LoadViewState (state);
97 public object SaveState ()
99 return SaveViewState ();
102 public void DoCancelCommand (DataListCommandEventArgs e)
107 public void DoDeleteCommand (DataListCommandEventArgs e)
112 public void DoEditCommand (DataListCommandEventArgs e)
117 public void DoItemCommand (DataListCommandEventArgs e)
122 public void DoUpdateCommand (DataListCommandEventArgs e)
127 public void DoItemCreated (DataListItemEventArgs e)
132 public void DoItemDataBound (DataListItemEventArgs e)
137 public void DoSelectedIndexChanged (EventArgs e)
139 OnSelectedIndexChanged (e);
142 public bool DoBubbleEvent (object source, EventArgs e)
144 return OnBubbleEvent (source, e);
148 public class TestTemplate : ITemplate {
150 public void InstantiateIn (Control container)
156 public class DataListTest {
158 private HtmlTextWriter GetWriter ()
160 StringWriter sw = new StringWriter ();
162 return new HtmlTextWriter (sw);
166 private ArrayList GetData (int n)
168 ArrayList al = new ArrayList ();
169 for (int i = 0; i < n; i++) {
170 al.Add (i.ToString ());
176 private TestDataSource GetDataSource (int n)
178 return new TestDataSource (GetData (n));
181 public void CheckIRepeatInfoUser (IRepeatInfoUser riu)
183 Assert.IsFalse (riu.HasFooter, "HasFooter");
184 Assert.IsFalse (riu.HasHeader, "HasHeader");
185 Assert.IsFalse (riu.HasSeparators, "HasSeparators");
186 Assert.AreEqual (0, riu.RepeatedItemCount, "RepeatedItemCount");
190 public void ConstantStrings ()
192 Assert.AreEqual ("Cancel", DataList.CancelCommandName, "CancelCommandName");
193 Assert.AreEqual ("Delete", DataList.DeleteCommandName, "DeleteCommandName");
194 Assert.AreEqual ("Edit", DataList.EditCommandName, "EditCommandName");
195 Assert.AreEqual ("Select", DataList.SelectCommandName, "SelectCommandName");
196 Assert.AreEqual ("Update", DataList.UpdateCommandName, "UpdateCommandName");
200 public void DefaultProperties ()
202 TestDataList dl = new TestDataList ();
203 CheckIRepeatInfoUser (dl);
204 Assert.AreEqual ("table", dl.Tag, "TagName");
205 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-1");
206 Assert.AreEqual (0, dl.StateBag.Count, "ViewState.Count-1");
209 Assert.IsNotNull (dl.AlternatingItemStyle, "AlternatingItemStyle");
210 Assert.IsNotNull (dl.EditItemStyle, "EditItemStyle");
211 Assert.IsNotNull (dl.FooterStyle, "FooterStyle");
212 Assert.IsNotNull (dl.HeaderStyle, "HeaderStyle");
213 Assert.IsNotNull (dl.ItemStyle, "ItemStyle");
214 Assert.IsNotNull (dl.SelectedItemStyle, "SelectedItemStyle");
215 Assert.IsNotNull (dl.SeparatorStyle, "SeparatorStyle");
218 Assert.IsNull (dl.AlternatingItemTemplate, "AlternatingItemTemplate");
219 Assert.IsNull (dl.EditItemTemplate, "EditItemTemplate");
220 Assert.IsNull (dl.FooterTemplate, "FooterTemplate");
221 Assert.IsNull (dl.HeaderTemplate, "HeaderTemplate");
222 Assert.IsNull (dl.ItemTemplate, "ItemTemplate");
223 Assert.IsNull (dl.SelectedItemTemplate, "SelectedItemTemplate");
224 Assert.IsNull (dl.SeparatorTemplate, "SeparatorTemplate");
227 Assert.AreEqual (-1, dl.EditItemIndex, "EditItemIndex");
228 Assert.AreEqual (-1, dl.SelectedIndex, "SelectedIndex");
230 // others (from DataList)
231 Assert.IsFalse (dl.ExtractTemplateRows, "ExtractTemplateRows");
232 Assert.AreEqual (0, dl.Items.Count, "Items.Count");
233 Assert.AreEqual (0, dl.RepeatColumns, "RepeatColumns");
234 Assert.AreEqual (RepeatDirection.Vertical, dl.RepeatDirection, "RepeatDirection");
235 Assert.AreEqual (RepeatLayout.Table, dl.RepeatLayout, "RepeatLayout");
236 Assert.IsNull (dl.SelectedItem, "SelectedItem");
237 Assert.IsTrue (dl.ShowFooter, "ShowFooter");
238 Assert.IsTrue (dl.ShowHeader, "ShowHeader");
240 // the CellPadding, CellSpacing, GridLines and HorizontalAlign are defined
241 // in BaseDataList but couldn't be totally tested from there
242 Assert.AreEqual (-1, dl.CellPadding, "CellPadding");
243 Assert.AreEqual (0, dl.CellSpacing, "CellSpacing");
244 Assert.AreEqual (GridLines.None, dl.GridLines, "GridLines");
245 Assert.AreEqual (HorizontalAlign.NotSet, dl.HorizontalAlign, "HorizontalAlign");
247 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-2");
248 Assert.AreEqual (0, dl.StateBag.Count, "ViewState.Count-2");
252 public void NullProperties ()
254 TestDataList dl = new TestDataList ();
255 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-1");
256 Assert.AreEqual (0, dl.StateBag.Count, "ViewState.Count-1");
258 // some properties couldn't be set in BaseDataList without causing a
259 // InvalidCastException, so they get test here first...
261 Assert.AreEqual (-1, dl.CellPadding, "CellPadding");
263 Assert.AreEqual (0, dl.CellSpacing, "CellSpacing");
264 dl.GridLines = GridLines.None;
265 Assert.AreEqual (GridLines.None, dl.GridLines, "GridLines");
266 dl.HorizontalAlign = HorizontalAlign.NotSet;
267 Assert.AreEqual (HorizontalAlign.NotSet, dl.HorizontalAlign, "HorizontalAlign");
269 // so the TableStyle isn't kept directly in the ViewState
270 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2");
272 // now for the DataList properties
273 // touching all styles
274 Assert.IsTrue (dl.AlternatingItemStyle.BackColor.IsEmpty, "AlternatingItemStyle");
275 Assert.IsTrue (dl.EditItemStyle.BackColor.IsEmpty, "EditItemStyle");
276 Assert.IsTrue (dl.FooterStyle.BackColor.IsEmpty, "FooterStyle");
277 Assert.IsTrue (dl.HeaderStyle.BackColor.IsEmpty, "HeaderStyle");
278 Assert.IsTrue (dl.ItemStyle.BackColor.IsEmpty, "ItemStyle");
279 Assert.IsTrue (dl.SelectedItemStyle.BackColor.IsEmpty, "SelectedItemStyle");
280 Assert.IsTrue (dl.SeparatorStyle.BackColor.IsEmpty, "SeparatorStyle");
281 dl.AlternatingItemTemplate = null;
282 Assert.IsNull (dl.AlternatingItemTemplate, "AlternatingItemTemplate");
283 dl.EditItemTemplate = null;
284 Assert.IsNull (dl.EditItemTemplate, "EditItemTemplate");
285 dl.FooterTemplate = null;
286 Assert.IsNull (dl.FooterTemplate, "FooterTemplate");
287 dl.HeaderTemplate = null;
288 Assert.IsNull (dl.HeaderTemplate, "HeaderTemplate");
289 dl.ItemTemplate = null;
290 Assert.IsNull (dl.ItemTemplate, "ItemTemplate");
291 dl.SelectedItemTemplate = null;
292 Assert.IsNull (dl.SelectedItemTemplate, "SelectedItemTemplate");
293 dl.SeparatorTemplate = null;
294 Assert.IsNull (dl.SeparatorTemplate, "SeparatorTemplate");
295 dl.EditItemIndex = -1;
296 Assert.AreEqual (-1, dl.EditItemIndex, "EditItemIndex");
297 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2b");
298 dl.SelectedIndex = -1;
299 Assert.AreEqual (-1, dl.SelectedIndex, "SelectedIndex");
300 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2c");
301 dl.ExtractTemplateRows = false;
302 Assert.IsFalse (dl.ExtractTemplateRows, "ExtractTemplateRows");
303 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-3");
304 dl.RepeatColumns = 0;
305 Assert.AreEqual (0, dl.RepeatColumns, "RepeatColumns");
306 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-4");
307 dl.RepeatDirection = RepeatDirection.Vertical;
308 Assert.AreEqual (RepeatDirection.Vertical, dl.RepeatDirection, "RepeatDirection");
309 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-5");
310 dl.RepeatLayout = RepeatLayout.Table;
311 Assert.AreEqual (RepeatLayout.Table, dl.RepeatLayout, "RepeatLayout");
312 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-6");
313 dl.ShowFooter = true;
314 Assert.IsTrue (dl.ShowFooter, "ShowFooter");
315 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-7");
316 dl.ShowHeader = true;
317 Assert.IsTrue (dl.ShowHeader, "ShowHeader");
318 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-8");
320 // and all this didn't affect IRepeatInfoUser
321 CheckIRepeatInfoUser (dl);
323 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-2");
327 public void RepeatLayout_Lists ()
329 TestDataList dl = new TestDataList ();
331 AssertExtensions.Throws<ArgumentOutOfRangeException> (() => {
332 dl.RepeatLayout = RepeatLayout.OrderedList;
335 AssertExtensions.Throws<ArgumentOutOfRangeException> (() => {
336 dl.RepeatLayout = RepeatLayout.UnorderedList;
341 public void CleanProperties ()
343 TestDataList dl = new TestDataList ();
344 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
345 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-1");
346 Assert.AreEqual (0, dl.StateBag.Count, "ViewState.Count-1");
349 Assert.AreEqual (0, dl.CellPadding, "CellPadding");
351 Assert.AreEqual (1, dl.CellSpacing, "CellSpacing");
352 dl.GridLines = GridLines.Vertical;
353 Assert.AreEqual (GridLines.Vertical, dl.GridLines, "GridLines");
354 dl.HorizontalAlign = HorizontalAlign.Center;
355 Assert.AreEqual (HorizontalAlign.Center, dl.HorizontalAlign, "HorizontalAlign");
357 // so the TableStyle isn't kept directly in the ViewState
358 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2");
360 // now for the DataList properties
361 // touching all styles
362 dl.AlternatingItemStyle.BackColor = Color.AliceBlue;
363 Assert.IsFalse (dl.AlternatingItemStyle.BackColor.IsEmpty, "AlternatingItemStyle");
364 dl.EditItemStyle.BackColor = Color.AntiqueWhite;
365 Assert.IsFalse (dl.EditItemStyle.BackColor.IsEmpty, "EditItemStyle");
366 dl.FooterStyle.BackColor = Color.Aqua;
367 Assert.IsFalse (dl.FooterStyle.BackColor.IsEmpty, "FooterStyle");
368 dl.HeaderStyle.BackColor = Color.Aquamarine;
369 Assert.IsFalse (dl.HeaderStyle.BackColor.IsEmpty, "HeaderStyle");
370 dl.ItemStyle.BackColor = Color.Azure;
371 Assert.IsFalse (dl.ItemStyle.BackColor.IsEmpty, "ItemStyle");
372 dl.SelectedItemStyle.BackColor = Color.Beige;
373 Assert.IsFalse (dl.SelectedItemStyle.BackColor.IsEmpty, "SelectedItemStyle");
374 dl.SeparatorStyle.BackColor = Color.Bisque;
375 Assert.IsFalse (dl.SeparatorStyle.BackColor.IsEmpty, "SeparatorStyle");
376 dl.AlternatingItemTemplate = new TestTemplate ();
377 Assert.IsNotNull (dl.AlternatingItemTemplate, "AlternatingItemTemplate");
378 dl.EditItemTemplate = new TestTemplate ();
379 Assert.IsNotNull (dl.EditItemTemplate, "EditItemTemplate");
380 dl.FooterTemplate = new TestTemplate ();
381 Assert.IsTrue (riu.HasFooter, "HasFooter");
382 Assert.IsNotNull (dl.FooterTemplate, "FooterTemplate");
383 dl.HeaderTemplate = new TestTemplate ();
384 Assert.IsTrue (riu.HasHeader, "HasHeader");
385 Assert.IsNotNull (dl.HeaderTemplate, "HeaderTemplate");
386 dl.ItemTemplate = new TestTemplate ();
387 Assert.IsNotNull (dl.ItemTemplate, "ItemTemplate");
388 dl.SelectedItemTemplate = new TestTemplate ();
389 Assert.IsNotNull (dl.SelectedItemTemplate, "SelectedItemTemplate");
390 dl.SeparatorTemplate = new TestTemplate ();
391 Assert.IsTrue (riu.HasSeparators, "HasSeparators");
392 Assert.IsNotNull (dl.SeparatorTemplate, "SeparatorTemplate");
393 dl.EditItemIndex = 0;
394 Assert.AreEqual (0, dl.EditItemIndex, "EditItemIndex");
395 dl.EditItemIndex = -1;
396 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2b");
397 dl.SelectedIndex = 0;
398 Assert.AreEqual (0, dl.SelectedIndex, "SelectedIndex");
399 dl.SelectedIndex = -1;
400 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-2c");
401 dl.ExtractTemplateRows = true;
402 Assert.IsTrue (dl.ExtractTemplateRows, "ExtractTemplateRows");
403 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-3");
404 dl.RepeatColumns = 1;
405 Assert.AreEqual (1, dl.RepeatColumns, "RepeatColumns");
406 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-4");
407 dl.RepeatDirection = RepeatDirection.Horizontal;
408 Assert.AreEqual (RepeatDirection.Horizontal, dl.RepeatDirection, "RepeatDirection");
409 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-5");
410 dl.RepeatLayout = RepeatLayout.Flow;
411 Assert.AreEqual (RepeatLayout.Flow, dl.RepeatLayout, "RepeatLayout");
412 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-6");
413 dl.ShowFooter = false;
414 Assert.IsFalse (riu.HasFooter, "HasFooter(lost)");
415 Assert.IsFalse (dl.ShowFooter, "ShowFooter");
416 Assert.AreEqual (sc++, dl.StateBag.Count, "ViewState.Count-7");
417 dl.ShowHeader = false;
418 Assert.IsFalse (riu.HasHeader, "HasHeader(lost)");
419 Assert.IsFalse (dl.ShowHeader, "ShowHeader");
420 Assert.AreEqual (sc, dl.StateBag.Count, "ViewState.Count-8");
422 // reverting back changes to default...
425 Assert.AreEqual (-1, dl.CellPadding, "-CellPadding");
427 Assert.AreEqual (0, dl.CellSpacing, "-CellSpacing");
428 dl.GridLines = GridLines.None;
429 Assert.AreEqual (GridLines.None, dl.GridLines, "-GridLines");
430 dl.HorizontalAlign = HorizontalAlign.NotSet;
431 Assert.AreEqual (HorizontalAlign.NotSet, dl.HorizontalAlign, "-HorizontalAlign");
432 Assert.AreEqual (sc, dl.StateBag.Count, "ViewState.Count-9");
433 dl.AlternatingItemStyle.Reset ();
434 Assert.IsTrue (dl.AlternatingItemStyle.BackColor.IsEmpty, "-AlternatingItemStyle");
435 dl.EditItemStyle.Reset ();
436 Assert.IsTrue (dl.EditItemStyle.BackColor.IsEmpty, "-EditItemStyle");
437 dl.FooterStyle.Reset ();
438 Assert.IsTrue (dl.FooterStyle.BackColor.IsEmpty, "-FooterStyle");
439 dl.HeaderStyle.Reset ();
440 Assert.IsTrue (dl.HeaderStyle.BackColor.IsEmpty, "-HeaderStyle");
441 dl.ItemStyle.Reset ();
442 Assert.IsTrue (dl.ItemStyle.BackColor.IsEmpty, "-ItemStyle");
443 dl.SelectedItemStyle.Reset ();
444 Assert.IsTrue (dl.SelectedItemStyle.BackColor.IsEmpty, "-SelectedItemStyle");
445 dl.SeparatorStyle.Reset ();
446 Assert.IsTrue (dl.SeparatorStyle.BackColor.IsEmpty, "-SeparatorStyle");
447 dl.AlternatingItemTemplate = null;
448 Assert.IsNull (dl.AlternatingItemTemplate, "-AlternatingItemTemplate");
449 dl.EditItemTemplate = null;
450 Assert.IsNull (dl.EditItemTemplate, "-EditItemTemplate");
451 dl.FooterTemplate = null;
452 Assert.IsNull (dl.FooterTemplate, "-FooterTemplate");
453 dl.HeaderTemplate = null;
454 Assert.IsNull (dl.HeaderTemplate, "-HeaderTemplate");
455 dl.ItemTemplate = null;
456 Assert.IsNull (dl.ItemTemplate, "-ItemTemplate");
457 dl.SelectedItemTemplate = null;
458 Assert.IsNull (dl.SelectedItemTemplate, "-SelectedItemTemplate");
459 dl.SeparatorTemplate = null;
460 Assert.IsNull (dl.SeparatorTemplate, "-SeparatorTemplate");
461 dl.EditItemIndex = -1;
462 Assert.AreEqual (-1, dl.EditItemIndex, "-EditItemIndex");
463 dl.SelectedIndex = -1;
464 Assert.AreEqual (-1, dl.SelectedIndex, "-SelectedIndex");
465 dl.ExtractTemplateRows = false;
466 Assert.IsFalse (dl.ExtractTemplateRows, "-ExtractTemplateRows");
467 dl.RepeatColumns = 0;
468 Assert.AreEqual (0, dl.RepeatColumns, "-RepeatColumns");
469 dl.RepeatDirection = RepeatDirection.Vertical;
470 Assert.AreEqual (RepeatDirection.Vertical, dl.RepeatDirection, "-RepeatDirection");
471 dl.RepeatLayout = RepeatLayout.Table;
472 Assert.AreEqual (RepeatLayout.Table, dl.RepeatLayout, "-RepeatLayout");
473 dl.ShowFooter = true;
474 Assert.IsTrue (dl.ShowFooter, "-ShowFooter");
475 dl.ShowHeader = true;
476 Assert.IsTrue (dl.ShowHeader, "-ShowHeader");
477 Assert.AreEqual (sc, dl.StateBag.Count, "ViewState.Count-10");
479 // and all this didn't affect IRepeatInfoUser
480 CheckIRepeatInfoUser (dl);
482 Assert.AreEqual (0, dl.Attributes.Count, "Attributes.Count-2");
486 public void RepeatedItemCount ()
488 TestDataList dl = new TestDataList ();
489 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
490 dl.DataSource = GetData (10);
491 Assert.AreEqual (0, riu.RepeatedItemCount, "before Bind");
493 Assert.AreEqual (10, riu.RepeatedItemCount, "after Bind");
497 [ExpectedException (typeof (ArgumentOutOfRangeException))]
498 public void GetItemStyle_Header_Empty ()
500 TestDataList dl = new TestDataList ();
501 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
502 // empty list/controls
503 riu.GetItemStyle (ListItemType.Header, 0);
507 public void GetItemStyle_Header ()
509 TestDataList dl = new TestDataList ();
510 dl.DataSource = GetData (6);
512 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
513 Assert.IsNull (riu.GetItemStyle (ListItemType.Header, 0));
517 [ExpectedException (typeof (ArgumentOutOfRangeException))]
518 public void GetItemStyle_Separator_Empty ()
520 TestDataList dl = new TestDataList ();
521 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
522 // empty list/controls
523 riu.GetItemStyle (ListItemType.Separator, 0);
527 public void GetItemStyle_Separator ()
529 TestDataList dl = new TestDataList ();
530 dl.DataSource = GetData (6);
532 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
533 Assert.IsNull (riu.GetItemStyle (ListItemType.Separator, 0));
537 public void GetItemStyle_Pager_Empty ()
539 TestDataList dl = new TestDataList ();
540 IRepeatInfoUser riu = (dl as IRepeatInfoUser);
541 // Pager isn't supported in DataList
542 Assert.IsNull (riu.GetItemStyle (ListItemType.Pager, 0), "Pager-0");
546 public void Controls ()
548 TestDataList dl = new TestDataList ();
549 Assert.AreEqual (0, dl.Controls.Count, "Controls-1");
550 Assert.AreEqual (0, dl.Items.Count, "Items-1");
551 dl.DataSource = GetDataSource (3);
552 Assert.AreEqual (0, dl.Controls.Count, "Controls-2");
553 Assert.AreEqual (0, dl.Items.Count, "Items-2");
555 Assert.AreEqual (0, dl.Controls.Count, "Controls-3");
556 Assert.AreEqual (0, dl.Items.Count, "Items-3");
560 [ExpectedException (typeof (ArgumentOutOfRangeException))]
561 public void EditItemIndexTooLow ()
563 TestDataList dl = new TestDataList ();
564 dl.EditItemIndex = -2;
568 [ExpectedException (typeof (ArgumentOutOfRangeException))]
569 public void SelectedIndexTooLow ()
571 TestDataList dl = new TestDataList ();
572 dl.SelectedIndex = -2;
576 public void SelectIndexOutOfRange ()
578 TestDataList dl = new TestDataList ();
579 // No exception is thrown
580 dl.SelectedIndex = 25;
584 [ExpectedException (typeof (ArgumentOutOfRangeException))]
585 public void SelectItemOutOfRange ()
587 TestDataList dl = new TestDataList ();
588 dl.SelectedIndex = 25;
589 DataListItem dli = dl.SelectedItem;
593 public void SaveViewState ()
595 TestDataList dl = new TestDataList ();
598 object[] vs = (object[]) dl.SaveState ();
599 Assert.AreEqual (9, vs.Length, "Size");
600 // By default the viewstate is all null
602 for (; i < vs.Length; i++)
603 Assert.IsNull (vs [i], "Empty-" + i);
607 dl.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
608 vs = (object []) dl.SaveState ();
609 Assert.IsNotNull (vs[i++], "ItemStyle");
611 dl.SelectedItemStyle.HorizontalAlign = HorizontalAlign.Center;
612 vs = (object []) dl.SaveState ();
613 Assert.IsNotNull (vs[i++], "SelectedItemStyle");
615 dl.AlternatingItemStyle.HorizontalAlign = HorizontalAlign.Center;
616 vs = (object []) dl.SaveState ();
617 Assert.IsNotNull (vs[i++], "AlternatingItemStyle");
619 dl.EditItemStyle.HorizontalAlign = HorizontalAlign.Center;
620 vs = (object []) dl.SaveState ();
621 Assert.IsNotNull (vs[i++], "EditItemStyle");
623 dl.SeparatorStyle.HorizontalAlign = HorizontalAlign.Center;
624 vs = (object []) dl.SaveState ();
625 Assert.IsNotNull (vs[i++], "SeparatorStyle");
627 dl.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
628 vs = (object []) dl.SaveState ();
629 Assert.IsNotNull (vs[i++], "HeaderStyle");
631 dl.FooterStyle.HorizontalAlign = HorizontalAlign.Center;
632 vs = (object []) dl.SaveState ();
633 Assert.IsNotNull (vs[i++], "FooterStyle");
634 // GridLines was moved last
635 dl.GridLines = GridLines.Vertical;
636 vs = (object []) dl.SaveState ();
637 Assert.IsNotNull (vs[i++], "GridLines");
641 public void SelectedValue_SelectedIndex ()
643 // Test for bug https://bugzilla.novell.com/show_bug.cgi?id=376519
644 DataTable table = new DataTable();
645 table.Columns.Add("id");
646 table.Columns.Add("text");
648 table.Rows.Add(new object[] {"id1", "Item N1"});
649 table.Rows.Add(new object[] {"id2", "Item N2"});
650 table.Rows.Add(new object[] {"id3", "Item N3"});
652 TestDataList dl = new TestDataList ();
653 dl.DataKeyField = "id";
654 dl.DataSource = table;
657 Assert.AreEqual (null, dl.SelectedValue, "A1");
658 dl.SelectedIndex = 0;
659 Assert.AreEqual ("id1", dl.SelectedValue.ToString (), "A2");
663 [ExpectedException (typeof (InvalidOperationException))]
664 public void SelectedValue_WithoutDataKeyField ()
666 TestDataList dl = new TestDataList ();
667 Assert.IsNull (dl.SelectedValue, "SelectedValue");
671 public void SelectedValue_WithUnexistingDataKeyField ()
673 TestDataList dl = new TestDataList ();
674 dl.DataKeyField = "mono";
675 Assert.IsNull (dl.SelectedValue, "SelectedValue");
677 private bool cancelCommandEvent;
678 private bool deleteCommandEvent;
679 private bool editCommandEvent;
680 private bool itemCommandEvent;
681 private bool itemCreatedEvent;
682 private bool itemDataBoundEvent;
683 private bool updateCommandEvent;
684 private bool selectedIndexChangedEvent;
686 private void ResetEvents ()
688 cancelCommandEvent = false;
689 deleteCommandEvent = false;
690 editCommandEvent = false;
691 itemCommandEvent = false;
692 itemCreatedEvent = false;
693 itemDataBoundEvent = false;
694 updateCommandEvent = false;
695 selectedIndexChangedEvent = false;
698 private void CancelCommandHandler (object sender, DataListCommandEventArgs e)
700 cancelCommandEvent = true;
703 private void DeleteCommandHandler (object sender, DataListCommandEventArgs e)
705 deleteCommandEvent = true;
708 private void EditCommandHandler (object sender, DataListCommandEventArgs e)
710 editCommandEvent = true;
713 private void ItemCommandHandler (object sender, DataListCommandEventArgs e)
715 itemCommandEvent = true;
718 private void ItemCreatedHandler (object sender, DataListItemEventArgs e)
720 itemCreatedEvent = true;
723 private void ItemDataBoundHandler (object sender, DataListItemEventArgs e)
725 itemDataBoundEvent = true;
728 private void SelectedIndexChangedHandler (object sender, EventArgs e)
730 selectedIndexChangedEvent = true;
733 private void UpdateCommandHandler (object sender, DataListCommandEventArgs e)
735 updateCommandEvent = true;
739 public void Events ()
741 TestDataList dl = new TestDataList ();
742 DataListCommandEventArgs command_args = new DataListCommandEventArgs (null,
743 null, new CommandEventArgs (String.Empty, String.Empty));
744 DataListItemEventArgs item_args = new DataListItemEventArgs (null);
747 dl.CancelCommand += new DataListCommandEventHandler (CancelCommandHandler);
748 dl.DoCancelCommand (command_args);
749 Assert.IsTrue (cancelCommandEvent, "cancelCommandEvent");
752 dl.DeleteCommand += new DataListCommandEventHandler (DeleteCommandHandler);
753 dl.DoDeleteCommand (command_args);
754 Assert.IsTrue (deleteCommandEvent, "deleteCommandEvent");
757 dl.EditCommand += new DataListCommandEventHandler (EditCommandHandler);
758 dl.DoEditCommand (command_args);
759 Assert.IsTrue (editCommandEvent, "editCommandEvent");
762 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
763 dl.DoItemCommand (command_args);
764 Assert.IsTrue (itemCommandEvent, "itemCommandEvent");
767 dl.ItemCreated += new DataListItemEventHandler (ItemCreatedHandler);
768 dl.DoItemCreated (item_args);
769 Assert.IsTrue (itemCreatedEvent, "itemCreatedEvent");
772 dl.ItemDataBound += new DataListItemEventHandler (ItemDataBoundHandler);
773 dl.DoItemDataBound (item_args);
774 Assert.IsTrue (itemDataBoundEvent, "itemDataBoundEvent");
777 dl.UpdateCommand += new DataListCommandEventHandler (UpdateCommandHandler);
778 dl.DoUpdateCommand (command_args);
779 Assert.IsTrue (updateCommandEvent, "updateCommandEvent");
782 dl.SelectedIndexChanged += new EventHandler (SelectedIndexChangedHandler);
783 dl.DoSelectedIndexChanged (new EventArgs ());
784 Assert.IsTrue (selectedIndexChangedEvent, "selectedIndexChangedEvent");
788 public void BubbleEvent ()
790 TestDataList dl = new TestDataList ();
791 DataListCommandEventArgs command_args;
797 command_args = new DataListCommandEventArgs (null,
798 null, new CommandEventArgs ("Cancel", String.Empty));
799 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
800 dl.CancelCommand += new DataListCommandEventHandler (CancelCommandHandler);
801 dl.DoBubbleEvent (this, command_args);
802 Assert.IsTrue (cancelCommandEvent, "cancelCommandEvent-1");
803 Assert.IsTrue (itemCommandEvent, "#00");
806 command_args = new DataListCommandEventArgs (null,
807 null, new CommandEventArgs ("cancel", String.Empty));
808 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
809 dl.CancelCommand += new DataListCommandEventHandler (CancelCommandHandler);
810 dl.DoBubbleEvent (this, command_args);
811 Assert.IsTrue (cancelCommandEvent, "cancelCommandEvent-2");
812 Assert.IsTrue (itemCommandEvent, "#00");
815 command_args = new DataListCommandEventArgs (null,
816 null, new CommandEventArgs ("CANCEL", String.Empty));
817 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
818 dl.CancelCommand += new DataListCommandEventHandler (CancelCommandHandler);
819 dl.DoBubbleEvent (this, command_args);
820 Assert.IsTrue (cancelCommandEvent, "cancelCommandEvent-3");
821 Assert.IsTrue (itemCommandEvent, "#00");
827 command_args = new DataListCommandEventArgs (null,
828 null, new CommandEventArgs ("Delete", String.Empty));
829 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
830 dl.DeleteCommand += new DataListCommandEventHandler (DeleteCommandHandler);
831 dl.DoBubbleEvent (this, command_args);
832 Assert.IsTrue (deleteCommandEvent, "deleteCommandEvent-1");
833 Assert.IsTrue (itemCommandEvent, "#00");
836 command_args = new DataListCommandEventArgs (null,
837 null, new CommandEventArgs ("delete", String.Empty));
838 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
839 dl.DeleteCommand += new DataListCommandEventHandler (DeleteCommandHandler);
840 dl.DoBubbleEvent (this, command_args);
841 Assert.IsTrue (deleteCommandEvent, "deleteCommandEvent-2");
842 Assert.IsTrue (itemCommandEvent, "#00");
845 command_args = new DataListCommandEventArgs (null,
846 null, new CommandEventArgs ("DELETE", String.Empty));
847 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
848 dl.DeleteCommand += new DataListCommandEventHandler (DeleteCommandHandler);
849 dl.DoBubbleEvent (this, command_args);
850 Assert.IsTrue (deleteCommandEvent, "deleteCommandEvent-3");
851 Assert.IsTrue (itemCommandEvent, "#00");
857 command_args = new DataListCommandEventArgs (null,
858 null, new CommandEventArgs ("Edit", String.Empty));
859 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
860 dl.EditCommand += new DataListCommandEventHandler (EditCommandHandler);
861 dl.DoBubbleEvent (this, command_args);
862 Assert.IsTrue (editCommandEvent, "editCommandEvent-1");
863 Assert.IsTrue (itemCommandEvent, "#00");
866 command_args = new DataListCommandEventArgs (null,
867 null, new CommandEventArgs ("edit", String.Empty));
868 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
869 dl.EditCommand += new DataListCommandEventHandler (EditCommandHandler);
870 dl.DoBubbleEvent (this, command_args);
871 Assert.IsTrue (editCommandEvent, "editCommandEvent-2");
872 Assert.IsTrue (itemCommandEvent, "#00");
875 command_args = new DataListCommandEventArgs (null,
876 null, new CommandEventArgs ("EDIT", String.Empty));
877 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
878 dl.EditCommand += new DataListCommandEventHandler (EditCommandHandler);
879 dl.DoBubbleEvent (this, command_args);
880 Assert.IsTrue (editCommandEvent, "editCommandEvent-3");
881 Assert.IsTrue (itemCommandEvent, "#00");
887 command_args = new DataListCommandEventArgs (null,
888 null, new CommandEventArgs ("Item", String.Empty));
889 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
890 dl.DoBubbleEvent (this, command_args);
891 Assert.IsTrue (itemCommandEvent, "itemCommandEvent-1");
894 command_args = new DataListCommandEventArgs (null,
895 null, new CommandEventArgs ("item", String.Empty));
896 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
897 dl.DoBubbleEvent (this, command_args);
898 Assert.IsTrue (itemCommandEvent, "itemCommandEvent-2");
901 command_args = new DataListCommandEventArgs (null,
902 null, new CommandEventArgs ("ITEM", String.Empty));
903 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
904 dl.DoBubbleEvent (this, command_args);
905 Assert.IsTrue (itemCommandEvent, "itemCommandEvent-3");
911 command_args = new DataListCommandEventArgs (null,
912 null, new CommandEventArgs ("Update", String.Empty));
913 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
914 dl.UpdateCommand += new DataListCommandEventHandler (UpdateCommandHandler);
915 dl.DoBubbleEvent (this, command_args);
916 Assert.IsTrue (updateCommandEvent, "updateCommandEvent-1");
917 Assert.IsTrue (itemCommandEvent, "#00");
920 command_args = new DataListCommandEventArgs (null,
921 null, new CommandEventArgs ("update", String.Empty));
922 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
923 dl.UpdateCommand += new DataListCommandEventHandler (UpdateCommandHandler);
924 dl.DoBubbleEvent (this, command_args);
925 Assert.IsTrue (updateCommandEvent, "updateCommandEvent-2");
926 Assert.IsTrue (itemCommandEvent, "#00");
929 command_args = new DataListCommandEventArgs (null,
930 null, new CommandEventArgs ("UPDATE", String.Empty));
931 dl.UpdateCommand += new DataListCommandEventHandler (UpdateCommandHandler);
932 dl.DoBubbleEvent (this, command_args);
933 Assert.IsTrue (updateCommandEvent, "updateCommandEvent-3");
934 Assert.IsTrue (itemCommandEvent, "#00");
939 DataListItem item = new DataListItem (0, ListItemType.Item);
942 command_args = new DataListCommandEventArgs (item, null,
943 new CommandEventArgs ("Select", String.Empty));
944 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
945 dl.SelectedIndexChanged += new EventHandler (SelectedIndexChangedHandler);
946 dl.DoBubbleEvent (this, command_args);
947 Assert.IsTrue (selectedIndexChangedEvent, "selectedIndexChangedEvent-1");
948 Assert.IsTrue (itemCommandEvent, "#00");
951 command_args = new DataListCommandEventArgs (item, null,
952 new CommandEventArgs ("select", String.Empty));
953 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
954 dl.SelectedIndexChanged += new EventHandler (SelectedIndexChangedHandler);
955 dl.DoBubbleEvent (this, command_args);
956 Assert.IsTrue (selectedIndexChangedEvent, "selectedIndexChangedEvent-2");
957 Assert.IsTrue (itemCommandEvent, "#00");
960 command_args = new DataListCommandEventArgs (item, null,
961 new CommandEventArgs ("SELECT", String.Empty));
962 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
963 dl.SelectedIndexChanged += new EventHandler (SelectedIndexChangedHandler);
964 dl.DoBubbleEvent (this, command_args);
965 Assert.IsTrue (selectedIndexChangedEvent, "selectedIndexChangedEvent-3");
966 Assert.IsTrue (itemCommandEvent, "#00");
972 command_args = new DataListCommandEventArgs (item, null,
973 new CommandEventArgs ("AnyComand", String.Empty));
974 dl.ItemCommand += new DataListCommandEventHandler (ItemCommandHandler);
975 bool res = dl.DoBubbleEvent (this, command_args);
976 Assert.IsTrue (res, "any comand#00");
977 Assert.IsTrue (itemCommandEvent, "any comand#01");
981 public void NControls1 ()
983 TestDataList dl = new TestDataList ();
984 dl.DataSource = GetData (5);
986 Assert.AreEqual (5, dl.Controls.Count, "#01");
990 public void NControls2 ()
992 TestDataList dl = new TestDataList ();
993 dl.ShowHeader = true;
994 dl.ShowFooter = true;
995 dl.DataSource = GetData (5);
997 Assert.AreEqual (5, dl.Controls.Count, "#01");
1000 class Templ : ITemplate {
1001 public void InstantiateIn (Control ctrl)
1003 ctrl.Controls.Add (new LiteralControl ("Lalalaa"));
1007 //Some real templates for testing if proper Template was used
1008 class ItemTemplate : ITemplate {
1009 public void InstantiateIn (Control container)
1011 Label lbl = new Label();
1012 lbl.ID = "itemtmpl";
1013 container.Controls.Add(lbl);
1017 class EditItemTemplate : ITemplate {
1018 public void InstantiateIn (Control container)
1020 TextBox tb = new TextBox();
1021 tb.ID = "eitemtmpl";
1022 container.Controls.Add(tb);
1027 public void ProperTemplateSelectedIndexEqualsEditIndex ()
1029 TestDataList dl = new TestDataList();
1030 dl.ItemTemplate = new ItemTemplate();
1031 dl.AlternatingItemTemplate = new ItemTemplate();
1032 dl.SelectedItemTemplate = new ItemTemplate();
1033 dl.EditItemTemplate = new EditItemTemplate();
1034 dl.DataSource = GetData(5);
1035 dl.SelectedIndex = 0;
1036 dl.EditItemIndex = 0;
1038 object canIGetMyEditItem = dl.Items[dl.EditItemIndex].FindControl("eitemtmpl");
1039 Assert.IsTrue(canIGetMyEditItem != null, "ProperTemplateSelectedIndexEqualsEditIndex");
1043 public void NControls3 ()
1045 TestDataList dl = new TestDataList ();
1046 dl.ShowHeader = true;
1047 dl.HeaderTemplate = new Templ ();
1048 dl.ShowFooter = true;
1049 dl.FooterTemplate = new Templ ();
1050 dl.DataSource = GetData (5);
1052 Assert.AreEqual (7, dl.Controls.Count, "#01");
1056 public void NControls4 ()
1058 TestDataList dl = new TestDataList ();
1059 dl.SeparatorTemplate = new Templ ();
1060 dl.DataSource = GetData (5);
1062 Assert.AreEqual (10, dl.Controls.Count, "#01");
1066 public void NControls5 ()
1068 TestDataList dl = new TestDataList ();
1069 dl.ShowHeader = true;
1070 dl.HeaderTemplate = new Templ ();
1071 dl.SeparatorTemplate = new Templ ();
1072 dl.DataSource = GetData (5);
1074 Assert.AreEqual (11, dl.Controls.Count, "#01");
1078 public void DataSourceID ()
1080 Page p = new Page();
1081 ObjectDataSource ds = new ObjectDataSource();
1082 ds.ID = "ObjectDataSource1";
1083 ds.TypeName = "System.Guid";
1084 ds.SelectMethod = "ToByteArray";
1085 TestDataList dl = new TestDataList ();
1090 dl.DataSourceID = "ObjectDataSource1";
1092 Assert.AreEqual (16, dl.Controls.Count, "#01");
1096 public void NControls6 ()
1098 TestDataList dl = new TestDataList ();
1099 dl.ShowHeader = true;
1100 dl.HeaderTemplate = new Templ ();
1101 dl.ShowFooter = true;
1102 dl.FooterTemplate = new Templ ();
1103 dl.SeparatorTemplate = new Templ ();
1104 dl.DataSource = GetData (6);
1106 Assert.AreEqual (14, dl.Controls.Count, "#01");
1108 Assert.AreEqual (ListItemType.Header, ((DataListItem) dl.Controls [0]).ItemType, "#02");
1109 for (int i = 0; i < 3; i++) {
1110 int b = (i * 4) + 1;
1111 DataListItem one = (DataListItem) dl.Controls [b];
1112 DataListItem two = (DataListItem) dl.Controls [b + 1];
1113 DataListItem three = (DataListItem) dl.Controls [b + 2];
1114 DataListItem four = (DataListItem) dl.Controls [b + 3];
1115 Assert.AreEqual (ListItemType.Item, one.ItemType, String.Format ("#02-{0}", b));
1116 Assert.AreEqual (ListItemType.Separator, two.ItemType, String.Format ("#02-{0}", b + 1));
1117 Assert.AreEqual (ListItemType.AlternatingItem, three.ItemType, String.Format ("#02-{0}", b + 2));
1118 Assert.AreEqual (ListItemType.Separator, four.ItemType, String.Format ("#02-{0}", b + 3));
1121 Assert.AreEqual (ListItemType.Footer, ((DataListItem) dl.Controls [13]).ItemType, "#03");
1125 public void RepeatInfo1 ()
1127 TestDataList dl = new TestDataList ();
1128 dl.ShowHeader = true;
1129 dl.HeaderTemplate = new Templ ();
1130 dl.ShowFooter = true;
1131 dl.FooterTemplate = new Templ ();
1132 dl.SeparatorTemplate = new Templ ();
1133 dl.DataSource = GetData (6);
1135 IRepeatInfoUser repeater = (IRepeatInfoUser) dl;
1136 Assert.AreEqual (true, repeater.HasHeader, "#01");
1137 Assert.AreEqual (true, repeater.HasFooter, "#02");
1138 Assert.AreEqual (true, repeater.HasSeparators, "#03");
1139 Assert.AreEqual (6, repeater.RepeatedItemCount, "#04");
1143 public void RepeatInfo2 ()
1145 TestDataList dl = new TestDataList ();
1146 dl.ShowHeader = true;
1147 dl.HeaderTemplate = new Templ ();
1148 dl.ShowFooter = true;
1149 dl.FooterTemplate = new Templ ();
1150 dl.SeparatorTemplate = new Templ ();
1151 dl.DataSource = GetData (6);
1153 IRepeatInfoUser repeater = (IRepeatInfoUser) dl;
1154 Style style = repeater.GetItemStyle (ListItemType.Pager, -1);
1155 Assert.IsNull (style, "#01");
1156 style = repeater.GetItemStyle (ListItemType.Pager, 0);
1157 Assert.IsNull (style, "#02");
1158 style = repeater.GetItemStyle (ListItemType.Pager, 15);
1159 Assert.IsNull (style, "#03");
1163 public void RepeatInfo3 ()
1165 TestDataList dl = new TestDataList ();
1166 dl.ShowHeader = true;
1167 dl.HeaderTemplate = new Templ ();
1168 dl.ShowFooter = true;
1169 dl.FooterTemplate = new Templ ();
1170 dl.SeparatorTemplate = new Templ ();
1171 dl.DataSource = GetData (6);
1173 IRepeatInfoUser repeater = (IRepeatInfoUser) dl;
1174 Style style = repeater.GetItemStyle (ListItemType.Header, -1);
1175 DataListItem header = (DataListItem) dl.Controls [0];
1176 Assert.IsNull (style, "#01");
1178 style = repeater.GetItemStyle (ListItemType.Footer, -1);
1179 DataListItem footer = (DataListItem) dl.Controls [13];
1180 Assert.IsNull (style, "#02");
1181 for (int i = 0; i < 6; i++) {
1182 style = repeater.GetItemStyle (ListItemType.Item, i);
1183 Assert.IsNull (style, String.Format ("#02-{0}", i));
1188 public void RepeatInfo4 ()
1190 TestDataList dl = new TestDataList ();
1191 dl.DataSource = GetData (6);
1192 dl.ItemStyle.ForeColor = Color.Blue;
1194 dl.PrepareCH (); // removing this causes all the GetItemStyle calls to return null
1195 IRepeatInfoUser repeater = (IRepeatInfoUser) dl;
1196 for (int i = 0; i < 6; i++) {
1197 Style style = repeater.GetItemStyle (ListItemType.Item, i);
1198 DataListItem item = (DataListItem) dl.Controls [i];
1199 Assert.AreEqual (style, item.ControlStyle, String.Format ("#01-{0}", i));
1204 public void DataBindTwice () {
1205 DataList dl = new DataList ();
1207 dl.DataSource = new object [] { "1", "2", "3" };
1210 Assert.AreEqual (3, dl.Items.Count, "first binding");
1212 dl.DataSource = new object [] { "a", "b", "c" };
1215 Assert.AreEqual (3, dl.Items.Count, "second binding");