1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
23 // Jordi Mas i Hernandez <jordi@ximian.com>
28 using System.Windows.Forms;
30 using System.Reflection;
31 using System.Collections;
32 using NUnit.Framework;
34 namespace MonoTests.System.Windows.Forms
37 public class ListViewCollectionsTest
40 ColumnHeaderCollection
43 public void ColumnHeaderCollectionTest_PropertiesTest ()
45 ListView listview = new ListView ();
48 Assert.AreEqual (false, listview.Columns.IsReadOnly, "ColumnHeaderCollectionTest_PropertiesTest#1");
49 Assert.AreEqual (true, ((ICollection)listview.Columns).IsSynchronized, "ColumnHeaderCollectionTest_PropertiesTest#2");
50 Assert.AreEqual (listview.Columns, ((ICollection)listview.Columns).SyncRoot, "ColumnHeaderCollectionTest_PropertiesTest#3");
51 Assert.AreEqual (false, ((IList)listview.Columns).IsFixedSize, "ColumnHeaderCollectionTest_PropertiesTest#4");
52 Assert.AreEqual (0, listview.Columns.Count, "ColumnHeaderCollectionTest_PropertiesTest#5");
56 public void ColumnHeaderCollectionTest_AddTest ()
58 ListView listview = new ListView ();
60 // Duplicated elements with same text added
61 listview.Columns.Add (new ColumnHeader ());
62 listview.Columns.Add (new ColumnHeader ());
63 Assert.AreEqual (2, listview.Columns.Count, "ColumnHeaderCollectionTest_AddTest#1");
64 Assert.AreEqual ("ColumnHeader", listview.Columns[0].Text, "ColumnHeaderCollectionTest_AddTest#2");
68 public void ColumnHeaderCollectionTest_ClearTest ()
70 ListView listview = new ListView ();
72 // Duplicated elements with same text added
73 listview.Columns.Add (new ColumnHeader ());
74 listview.Columns.Clear ();
75 Assert.AreEqual (0, listview.Columns.Count, "ColumnHeaderCollectionTest_ClearTest#1");
79 [Test, ExpectedException (typeof (ArgumentOutOfRangeException))]
80 public void ColumnHeaderCollectionTest_GetItem_ExceptionTest ()
82 // Duplicated elements not added
83 ListView listview = new ListView ();
84 ColumnHeader item = listview.Columns[5];
85 Assert.Fail ("#1: " + item.Text); // avoid CS0219 warning
89 CheckedIndexCollection
92 public void CheckedIndexCollectionTest_PropertiesTest ()
94 ListView listview = new ListView ();
97 Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
98 Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
99 Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
100 Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
101 Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
106 [Test, ExpectedException (typeof (NotSupportedException))]
107 public void CheckedIndexCollectionTest_Add_ExceptionTest ()
109 ListView listview = new ListView ();
110 ((IList)listview.CheckedIndices).Add (5);
113 [Test, ExpectedException (typeof (NotSupportedException))]
114 public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
116 ListView listview = new ListView ();
117 ((IList)listview.CheckedIndices).Remove (5);
120 [Test, ExpectedException (typeof (NotSupportedException))]
121 public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
123 ListView listview = new ListView ();
124 ((IList)listview.CheckedIndices).RemoveAt (5);
128 CheckedItemCollection
131 public void CheckedItemCollectionTest_PropertiesTest ()
133 ListView listview = new ListView ();
136 Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
137 Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
138 Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
139 Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
140 Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
145 [Test, ExpectedException (typeof (NotSupportedException))]
146 public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
148 ListView listview = new ListView ();
149 ((IList)listview.CheckedItems).Add (5);
153 public void CheckedItemCollectionTest_Order ()
155 Form form = new Form ();
156 form.ShowInTaskbar = false;
157 ListView lvw = new ListView ();
158 lvw.CheckBoxes = true;
159 form.Controls.Add (lvw);
160 ListViewItem itemA = lvw.Items.Add ("A");
161 itemA.Checked = true;
162 ListViewItem itemB = lvw.Items.Add ("B");
163 itemB.Checked = true;
164 ListViewItem itemC = lvw.Items.Add ("C");
165 itemC.Checked = true;
167 Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
168 Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
169 Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
170 Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
172 itemB.Checked = false;
174 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
175 Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
176 Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
178 itemB.Checked = true;
180 Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
181 Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
182 Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
183 Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
185 lvw.Sorting = SortOrder.Descending;
187 Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
188 Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
189 Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
190 Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
192 // sorting only takes effect when listview is created
195 Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
196 Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
197 Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
198 Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
202 [Test, ExpectedException (typeof (NotSupportedException))]
203 public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
205 ListView listview = new ListView ();
206 ((IList)listview.CheckedItems).Remove (5);
209 [Test, ExpectedException (typeof (NotSupportedException))]
210 public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
212 ListView listview = new ListView ();
213 ((IList)listview.CheckedItems).RemoveAt (5);
217 SelectedIndexCollection
220 public void SelectedIndexCollectionTest_PropertiesTest ()
222 ListView listview = new ListView ();
225 Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
226 Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
227 Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
228 Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
229 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
234 [Test, ExpectedException (typeof (NotSupportedException))]
235 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
237 ListView listview = new ListView ();
238 ((IList)listview.SelectedIndices).Add (5);
241 [Test, ExpectedException (typeof (NotSupportedException))]
242 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
244 ListView listview = new ListView ();
245 ((IList)listview.SelectedIndices).Remove (5);
248 [Test, ExpectedException (typeof (NotSupportedException))]
249 public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
251 ListView listview = new ListView ();
252 ((IList)listview.SelectedIndices).RemoveAt (5);
256 SelectedItemCollection
259 public void SelectedItemCollectionTest_PropertiesTest ()
261 ListView listview = new ListView ();
264 Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
265 Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
266 Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
267 Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
268 Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
273 [Test, ExpectedException (typeof (NotSupportedException))]
274 public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
276 ListView listview = new ListView ();
277 ((IList)listview.SelectedItems).Add (5);
280 [Test, ExpectedException (typeof (NotSupportedException))]
281 public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
283 ListView listview = new ListView ();
284 ((IList)listview.SelectedItems).Remove (5);
287 [Test, ExpectedException (typeof (NotSupportedException))]
288 public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
290 ListView listview = new ListView ();
291 ((IList)listview.SelectedItems).RemoveAt (5);
295 public void SelectedItemCollectionTest_Clear ()
297 Form form = new Form ();
298 form.ShowInTaskbar = false;
299 ListView lvw = new ListView ();
300 form.Controls.Add (lvw);
301 ListViewItem item = lvw.Items.Add ("Title");
302 item.Selected = true;
304 lvw.SelectedItems.Clear ();
306 Assert.IsTrue (item.Selected, "#A1");
307 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
308 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
312 Assert.IsTrue (item.Selected, "#B1");
313 Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
314 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
316 // once listview is created, clear DOES have effect
317 lvw.SelectedItems.Clear ();
319 Assert.IsFalse (item.Selected, "#C1");
320 Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
321 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
326 public void SelectedItemCollectionTest_Contains ()
328 Form form = new Form ();
329 form.ShowInTaskbar = false;
330 ListView lvw = new ListView ();
331 form.Controls.Add (lvw);
332 ListViewItem item = lvw.Items.Add ("Title");
333 item.Selected = true;
334 IList list = (IList) lvw.SelectedItems;
336 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
337 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
338 Assert.IsFalse (list.Contains (item), "#A3");
339 Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
343 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
344 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
345 Assert.IsTrue (list.Contains (item), "#B3");
346 Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
351 public void SelectedItemCollectionTest_CopyTo ()
353 Form form = new Form ();
354 form.ShowInTaskbar = false;
355 ListView lvw = new ListView ();
356 form.Controls.Add (lvw);
357 ListViewItem item = lvw.Items.Add ("Title");
358 item.Selected = true;
359 IList list = (IList) lvw.SelectedItems;
360 Assert.IsNotNull (list, "#A1");
361 ListViewItem [] items = new ListViewItem [1];
363 lvw.SelectedItems.CopyTo (items, 0);
364 Assert.IsNull (items [0], "#A2");
365 lvw.SelectedItems.CopyTo (items, 455);
369 lvw.SelectedItems.CopyTo (items, 0);
370 Assert.AreSame (item, items [0], "#B1");
372 lvw.SelectedItems.CopyTo (items, 455);
374 } catch (ArgumentException) {
380 public void SelectedItemCollectionTest_Count ()
382 Form form = new Form ();
383 form.ShowInTaskbar = false;
384 ListView lvw = new ListView ();
385 form.Controls.Add (lvw);
386 ListViewItem item = lvw.Items.Add ("Title");
387 item.Selected = true;
389 Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
391 Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
396 public void SelectedItemCollectionTest_GetEnumerator ()
398 Form form = new Form ();
399 form.ShowInTaskbar = false;
400 ListView lvw = new ListView ();
401 form.Controls.Add (lvw);
402 ListViewItem item = lvw.Items.Add ("Title");
403 item.Selected = true;
405 Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
409 Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
415 public void SelectedItemCollectionTest_Indexer ()
417 Form form = new Form ();
418 form.ShowInTaskbar = false;
419 ListView lvw = new ListView ();
420 form.Controls.Add (lvw);
421 ListViewItem item = lvw.Items.Add ("Title");
422 item.Selected = true;
423 IList list = (IList) lvw.SelectedItems;
426 ListViewItem x = lvw.SelectedItems [0];
427 Assert.Fail ("#A1: " + x.ToString ());
428 } catch (ArgumentOutOfRangeException) {
432 ListViewItem x = list [0] as ListViewItem;
433 Assert.Fail ("#A2: " + x.ToString ());
434 } catch (ArgumentOutOfRangeException) {
439 Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
440 Assert.AreSame (item, list [0], "#B2");
446 public void SelectedItemCollectionTest_IndexOf ()
448 Form form = new Form ();
449 form.ShowInTaskbar = false;
450 ListView lvw = new ListView ();
451 form.Controls.Add (lvw);
452 ListViewItem item = lvw.Items.Add ("Title");
453 item.Selected = true;
454 IList list = (IList) lvw.SelectedItems;
456 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
457 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
458 Assert.AreEqual (-1, list.IndexOf (item), "#A3");
459 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
463 Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
464 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
465 Assert.AreEqual (0, list.IndexOf (item), "#B3");
466 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
472 public void SelectedItemCollectionTest_Order ()
474 Form form = new Form ();
475 form.ShowInTaskbar = false;
476 ListView lvw = new ListView ();
477 lvw.MultiSelect = true;
478 form.Controls.Add (lvw);
479 ListViewItem itemA = lvw.Items.Add ("A");
480 itemA.Selected = true;
481 ListViewItem itemB = lvw.Items.Add ("B");
482 itemB.Selected = true;
483 ListViewItem itemC = lvw.Items.Add ("C");
484 itemC.Selected = true;
488 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
489 Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
490 Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
491 Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
493 itemB.Selected = false;
495 Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
496 Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
497 Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
499 itemB.Selected = true;
501 Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
502 Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
503 Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
504 Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
506 lvw.Sorting = SortOrder.Descending;
508 Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
509 Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
510 Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
511 Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
517 ListViewItemCollection
521 public void ListViewItemCollectionTest_Add ()
523 ListView lvw = new ListView ();
524 ListViewItem item = new ListViewItem ("Title");
525 ListViewItem newItem = lvw.Items.Add (item);
526 Assert.AreSame (newItem, item, "#A1");
527 Assert.AreEqual (0, item.Index, "#A2");
528 Assert.AreSame (item, lvw.Items [0], "#A3");
529 Assert.AreSame (lvw, item.ListView, "#A4");
531 newItem = lvw.Items.Add ("A title");
532 Assert.AreEqual ("A title", newItem.Text, "#B1");
533 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
534 Assert.AreEqual (1, newItem.Index, "#B3");
535 Assert.AreSame (newItem, lvw.Items [1], "#B4");
536 Assert.AreSame (lvw, newItem.ListView, "#B5");
537 Assert.AreEqual (0, item.Index, "#B6");
538 Assert.AreSame (item, lvw.Items [0], "#B7");
540 newItem = lvw.Items.Add ("A title", 4);
541 Assert.AreEqual ("A title", newItem.Text, "#C1");
542 Assert.AreEqual (4, newItem.ImageIndex, "#C2");
543 Assert.AreEqual (2, newItem.Index, "#C3");
544 Assert.AreSame (newItem, lvw.Items [2], "#C4");
545 Assert.AreSame (lvw, newItem.ListView, "#C5");
546 Assert.AreEqual (0, item.Index, "#C6");
547 Assert.AreSame (item, lvw.Items [0], "#C7");
551 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
552 public void ListViewItemCollectionTest_Add_ExistingItem ()
554 ListView lvw = new ListView ();
555 ListViewItem itemA = lvw.Items.Add ("A");
556 lvw.Items.Add (itemA);
560 public void ListViewItemCollectionTest_Insert ()
562 ListView lvw = new ListView ();
563 ListViewItem item = new ListViewItem ("Title");
564 ListViewItem newItem = lvw.Items.Insert (0, item);
565 Assert.AreSame (newItem, item, "#A1");
566 Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
567 Assert.AreSame (newItem, lvw.Items [0], "#A3");
568 Assert.AreSame (lvw, newItem.ListView, "#A4");
570 newItem = lvw.Items.Insert (1, "A title");
571 Assert.AreEqual ("A title", newItem.Text, "#B1");
572 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
573 Assert.AreEqual (1, newItem.Index, "#B3");
574 Assert.AreSame (newItem, lvw.Items [1], "#B4");
575 Assert.AreSame (lvw, newItem.ListView, "#B5");
576 Assert.AreEqual (0, item.Index, "#B6");
577 Assert.AreSame (item, lvw.Items [0], "#B7");
579 newItem = lvw.Items.Insert (0, "Other title");
580 Assert.AreEqual ("Other title", newItem.Text, "#C1");
581 Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
582 Assert.AreEqual (0, newItem.Index, "#C3");
583 Assert.AreSame (newItem, lvw.Items [0], "#C4");
584 Assert.AreSame (lvw, newItem.ListView, "#C5");
585 Assert.AreEqual (1, item.Index, "#C6");
586 Assert.AreSame (item, lvw.Items [1], "#C7");
588 newItem = lvw.Items.Insert (3, "Some title", 4);
589 Assert.AreEqual ("Some title", newItem.Text, "#D1");
590 Assert.AreEqual (4, newItem.ImageIndex, "#D2");
591 Assert.AreEqual (3, newItem.Index, "#D3");
592 Assert.AreSame (newItem, lvw.Items [3], "#D4");
593 Assert.AreSame (lvw, newItem.ListView, "#D5");
594 Assert.AreEqual (1, item.Index, "#D6");
595 Assert.AreSame (item, lvw.Items [1], "#D7");
597 newItem = lvw.Items.Insert (0, "No title", 4);
598 Assert.AreEqual ("No title", newItem.Text, "#E1");
599 Assert.AreEqual (4, newItem.ImageIndex, "#E2");
600 Assert.AreEqual (0, newItem.Index, "#E3");
601 Assert.AreSame (newItem, lvw.Items [0], "#E4");
602 Assert.AreSame (lvw, newItem.ListView, "#E5");
603 Assert.AreEqual (2, item.Index, "#E6");
604 Assert.AreSame (item, lvw.Items [2], "#E7");
608 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
609 public void ListViewItemCollectionTest_Insert_ExistingItem ()
611 ListView lvw = new ListView ();
612 ListViewItem itemA = lvw.Items.Add ("A");
613 lvw.Items.Insert (0, itemA);
617 public void ListViewItemCollectionTest_Remove ()
619 Form form = new Form ();
620 form.ShowInTaskbar = false;
621 ListView lvw = new ListView ();
622 form.Controls.Add (lvw);
623 lvw.MultiSelect = true;
624 lvw.CheckBoxes = true;
628 ListViewItem itemA = lvw.Items.Add ("A");
629 ListViewItem itemB = lvw.Items.Add ("B");
631 ListViewItem itemD = lvw.Items.Add ("D");
633 Assert.AreEqual (4, lvw.Items.Count, "#A1");
634 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
635 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
637 itemB.Checked = true;
638 itemD.Checked = true;
640 Assert.AreEqual (4, lvw.Items.Count, "#B1");
641 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
642 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
643 Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
644 Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
646 itemD.Selected = true;
648 Assert.AreEqual (4, lvw.Items.Count, "#C1");
649 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
650 Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
651 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
652 Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
653 Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
655 lvw.Items.Remove (itemB);
657 Assert.AreEqual (3, lvw.Items.Count, "#D1");
658 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
659 Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
660 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
661 Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
663 lvw.Items.Remove (itemA);
665 Assert.AreEqual (2, lvw.Items.Count, "#E1");
666 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
667 Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
668 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
669 Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
675 public void ListViewItemCollectionTest_RemoveAt ()
677 Form form = new Form ();
678 form.ShowInTaskbar = false;
679 ListView lvw = new ListView ();
680 form.Controls.Add (lvw);
681 lvw.MultiSelect = true;
682 lvw.CheckBoxes = true;
690 Assert.AreEqual (4, lvw.Items.Count, "#A1");
691 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
692 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
694 lvw.Items [1].Checked = true;
695 lvw.Items [3].Checked = true;
697 Assert.AreEqual (4, lvw.Items.Count, "#B1");
698 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
699 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
700 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
701 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
703 lvw.Items [3].Selected = true;
705 Assert.AreEqual (4, lvw.Items.Count, "#C1");
706 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
707 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
708 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
709 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
710 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
712 lvw.Items.RemoveAt (1);
714 Assert.AreEqual (3, lvw.Items.Count, "#D1");
715 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
716 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
717 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
718 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
720 lvw.Items.RemoveAt (0);
722 Assert.AreEqual (2, lvw.Items.Count, "#E1");
723 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
724 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
725 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
726 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");