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 ();
59 ColumnHeader colA = new ColumnHeader ();
60 ColumnHeader colB = new ColumnHeader ();
62 // Duplicated elements with same text added
63 listview.Columns.Add (colA);
64 listview.Columns.Add (colB);
65 Assert.AreEqual (2, listview.Columns.Count, "#1");
66 Assert.AreEqual ("ColumnHeader", listview.Columns[0].Text, "#2");
67 Assert.AreSame (listview, colA.ListView, "#3");
68 Assert.AreSame (listview, colB.ListView, "#4");
72 public void ColumnHeaderCollectionTest_ClearTest ()
74 ListView listview = new ListView ();
75 ColumnHeader colA = new ColumnHeader ();
76 ColumnHeader colB = new ColumnHeader ();
77 listview.Columns.Add (colA);
78 listview.Columns.Add (colB);
79 listview.Columns.Clear ();
80 Assert.AreEqual (0, listview.Columns.Count, "#1");
81 Assert.IsNull (colA.ListView, "#2");
82 Assert.IsNull (colB.ListView, "#3");
86 public void ColumnHeaderCollectionTest_Remove ()
88 ListView listview = new ListView ();
89 ColumnHeader colA = new ColumnHeader ();
90 ColumnHeader colB = new ColumnHeader ();
91 ColumnHeader colC = new ColumnHeader ();
92 listview.Columns.Add (colA);
93 listview.Columns.Add (colB);
94 listview.Columns.Add (colC);
96 listview.Columns.Remove (colB);
97 Assert.AreEqual (2, listview.Columns.Count, "#A1");
98 Assert.AreSame (colA, listview.Columns [0], "#A2");
99 Assert.AreSame (colC, listview.Columns [1], "#A3");
100 Assert.AreSame (listview, colA.ListView, "#A4");
101 Assert.IsNull (colB.ListView, "#A5");
102 Assert.AreSame (listview, colC.ListView, "#A6");
103 Assert.AreEqual (0, colA.Index, "#A7");
104 Assert.AreEqual (-1, colB.Index, "#A8");
105 Assert.AreEqual (1, colC.Index, "#A9");
107 listview.Columns.Remove (colC);
108 Assert.AreEqual (1, listview.Columns.Count, "#B1");
109 Assert.AreSame (colA, listview.Columns [0], "#B2");
110 Assert.AreSame (listview, colA.ListView, "#B3");
111 Assert.IsNull (colB.ListView, "#B4");
112 Assert.IsNull (colC.ListView, "#B5");
113 Assert.AreEqual (0, colA.Index, "#B6");
114 Assert.AreEqual (-1, colB.Index, "#B7");
115 Assert.AreEqual (-1, colC.Index, "#B8");
117 listview.Columns.Remove (colA);
118 Assert.AreEqual (0, listview.Columns.Count, "#C1");
119 Assert.IsNull (colA.ListView, "#C2");
120 Assert.IsNull (colB.ListView, "#C3");
121 Assert.IsNull (colC.ListView, "#C4");
122 Assert.AreEqual (-1, colA.Index, "#C5");
123 Assert.AreEqual (-1, colB.Index, "#C6");
124 Assert.AreEqual (-1, colC.Index, "#C7");
128 public void ColumnHeaderCollectionTest_RemoveAt ()
130 ListView listview = new ListView ();
131 ColumnHeader colA = new ColumnHeader ();
132 ColumnHeader colB = new ColumnHeader ();
133 ColumnHeader colC = new ColumnHeader ();
134 listview.Columns.Add (colA);
135 listview.Columns.Add (colB);
136 listview.Columns.Add (colC);
138 listview.Columns.RemoveAt (1);
139 Assert.AreEqual (2, listview.Columns.Count, "#A1");
140 Assert.AreSame (colA, listview.Columns [0], "#A2");
141 Assert.AreSame (colC, listview.Columns [1], "#A3");
142 Assert.AreSame (listview, colA.ListView, "#A4");
143 Assert.IsNull (colB.ListView, "#A5");
144 Assert.AreSame (listview, colC.ListView, "#A6");
146 listview.Columns.RemoveAt (0);
147 Assert.AreEqual (1, listview.Columns.Count, "#B1");
148 Assert.AreSame (colC, listview.Columns [0], "#B2");
149 Assert.IsNull (colA.ListView, "#B3");
150 Assert.IsNull (colB.ListView, "#B4");
151 Assert.AreSame (listview, colC.ListView, "#B5");
153 listview.Columns.RemoveAt (0);
154 Assert.AreEqual (0, listview.Columns.Count, "#C1");
155 Assert.IsNull (colA.ListView, "#C2");
156 Assert.IsNull (colB.ListView, "#C3");
157 Assert.IsNull (colC.ListView, "#C4");
161 CheckedIndexCollection
164 public void CheckedIndexCollectionTest_PropertiesTest ()
166 ListView listview = new ListView ();
169 Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
170 Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
171 Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
172 Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
173 Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
178 [Test, ExpectedException (typeof (NotSupportedException))]
179 public void CheckedIndexCollectionTest_Add_ExceptionTest ()
181 ListView listview = new ListView ();
182 ((IList)listview.CheckedIndices).Add (5);
185 [Test, ExpectedException (typeof (NotSupportedException))]
186 public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
188 ListView listview = new ListView ();
189 ((IList)listview.CheckedIndices).Remove (5);
192 [Test, ExpectedException (typeof (NotSupportedException))]
193 public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
195 ListView listview = new ListView ();
196 ((IList)listview.CheckedIndices).RemoveAt (5);
200 CheckedItemCollection
203 public void CheckedItemCollectionTest_PropertiesTest ()
205 ListView listview = new ListView ();
208 Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
209 Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
210 Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
211 Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
212 Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
217 [Test, ExpectedException (typeof (NotSupportedException))]
218 public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
220 ListView listview = new ListView ();
221 ((IList)listview.CheckedItems).Add (5);
225 public void CheckedItemCollectionTest_Order ()
227 Form form = new Form ();
228 form.ShowInTaskbar = false;
229 ListView lvw = new ListView ();
230 lvw.CheckBoxes = true;
231 form.Controls.Add (lvw);
232 ListViewItem itemA = lvw.Items.Add ("A");
233 itemA.Checked = true;
234 ListViewItem itemB = lvw.Items.Add ("B");
235 itemB.Checked = true;
236 ListViewItem itemC = lvw.Items.Add ("C");
237 itemC.Checked = true;
239 Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
240 Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
241 Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
242 Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
244 itemB.Checked = false;
246 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
247 Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
248 Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
250 itemB.Checked = true;
252 Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
253 Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
254 Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
255 Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
257 lvw.Sorting = SortOrder.Descending;
259 Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
260 Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
261 Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
262 Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
264 // sorting only takes effect when listview is created
267 Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
268 Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
269 Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
270 Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
274 [Test, ExpectedException (typeof (NotSupportedException))]
275 public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
277 ListView listview = new ListView ();
278 ((IList)listview.CheckedItems).Remove (5);
281 [Test, ExpectedException (typeof (NotSupportedException))]
282 public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
284 ListView listview = new ListView ();
285 ((IList)listview.CheckedItems).RemoveAt (5);
289 SelectedIndexCollection
292 public void SelectedIndexCollectionTest_PropertiesTest ()
294 ListView listview = new ListView ();
298 Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
299 Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
301 Assert.AreEqual (false, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
302 Assert.AreEqual (false, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
304 Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
305 Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
306 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
311 public void SelectedIndexCollectionTest_AddTest ()
313 ListView listview = new ListView ();
314 listview.Items.Add ("A");
316 int n = listview.SelectedIndices.Add (0);
317 Assert.AreEqual (0, n, "SelectedIndexCollectionTest_AddTest#1");
318 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#2");
320 // Force to create the handle
321 listview.CreateControl ();
322 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#4");
324 n = listview.SelectedIndices.Add (0);
325 Assert.AreEqual (1, n, "SelectedIndexCollectionTest_AddTest#5");
326 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#6");
327 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#7");
331 public void SelectedIndexCollectionTest_ClearTest ()
333 ListView listview = new ListView ();
334 listview.Items.Add ("A");
335 listview.Items.Add ("B");
336 listview.Items.Add ("C");
338 listview.SelectedIndices.Add (0);
339 listview.SelectedIndices.Add (2);
341 // Nothing if handle hasn't been created
342 listview.SelectedIndices.Clear ();
343 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#2");
344 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#3");
345 Assert.AreEqual (true, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#4");
347 // Force to create the handle
348 listview.CreateControl ();
350 listview.SelectedIndices.Add (0);
351 listview.SelectedIndices.Add (2);
353 listview.SelectedIndices.Clear ();
354 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_ClearTest#5");
355 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#6");
356 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#7");
357 Assert.AreEqual (false, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#8");
361 public void SelectedIndexCollectionTest_RemoveTest ()
363 ListView listview = new ListView ();
364 listview.Items.Add ("A");
366 listview.SelectedIndices.Add (0);
367 listview.SelectedIndices.Remove (0);
368 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#1");
369 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#2");
371 // Force to create the handle
372 listview.CreateControl ();
374 listview.SelectedIndices.Add (0);
375 listview.SelectedIndices.Remove (0);
376 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#3");
377 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#4");
383 [Test, ExpectedException (typeof (NotSupportedException))]
384 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
386 ListView listview = new ListView ();
387 ((IList)listview.SelectedIndices).Add (5);
390 [Test, ExpectedException (typeof (NotSupportedException))]
391 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
393 ListView listview = new ListView ();
394 ((IList)listview.SelectedIndices).Remove (5);
398 [Test, ExpectedException (typeof (NotSupportedException))]
399 public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
401 ListView listview = new ListView ();
402 ((IList)listview.SelectedIndices).RemoveAt (5);
407 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
409 ListView listview = new ListView ();
411 listview.SelectedIndices.Remove (-1);
412 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#1");
413 } catch (ArgumentOutOfRangeException) {
417 listview.SelectedIndices.Remove (listview.Items.Count);
418 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#2");
419 } catch (ArgumentOutOfRangeException) {
424 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
426 ListView listview = new ListView ();
428 listview.SelectedIndices.Add (-1);
429 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#1");
430 } catch (ArgumentOutOfRangeException) {
434 listview.SelectedIndices.Add (listview.Items.Count);
435 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#2");
436 } catch (ArgumentOutOfRangeException) {
442 SelectedItemCollection
445 public void SelectedItemCollectionTest_PropertiesTest ()
447 ListView listview = new ListView ();
450 Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
451 Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
452 Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
453 Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
454 Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
459 [Test, ExpectedException (typeof (NotSupportedException))]
460 public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
462 ListView listview = new ListView ();
463 ((IList)listview.SelectedItems).Add (5);
466 [Test, ExpectedException (typeof (NotSupportedException))]
467 public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
469 ListView listview = new ListView ();
470 ((IList)listview.SelectedItems).Remove (5);
473 [Test, ExpectedException (typeof (NotSupportedException))]
474 public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
476 ListView listview = new ListView ();
477 ((IList)listview.SelectedItems).RemoveAt (5);
481 public void SelectedItemCollectionTest_Clear ()
483 Form form = new Form ();
484 form.ShowInTaskbar = false;
485 ListView lvw = new ListView ();
486 form.Controls.Add (lvw);
487 ListViewItem item = lvw.Items.Add ("Title");
488 item.Selected = true;
490 lvw.SelectedItems.Clear ();
492 Assert.IsTrue (item.Selected, "#A1");
493 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
494 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
498 Assert.IsTrue (item.Selected, "#B1");
499 Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
500 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
502 // once listview is created, clear DOES have effect
503 lvw.SelectedItems.Clear ();
505 Assert.IsFalse (item.Selected, "#C1");
506 Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
507 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
512 public void SelectedItemCollectionTest_Contains ()
514 Form form = new Form ();
515 form.ShowInTaskbar = false;
516 ListView lvw = new ListView ();
517 form.Controls.Add (lvw);
518 ListViewItem item = lvw.Items.Add ("Title");
519 item.Selected = true;
520 IList list = (IList) lvw.SelectedItems;
522 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
523 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
524 Assert.IsFalse (list.Contains (item), "#A3");
525 Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
529 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
530 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
531 Assert.IsTrue (list.Contains (item), "#B3");
532 Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
537 public void SelectedItemCollectionTest_CopyTo ()
539 Form form = new Form ();
540 form.ShowInTaskbar = false;
541 ListView lvw = new ListView ();
542 form.Controls.Add (lvw);
543 ListViewItem item = lvw.Items.Add ("Title");
544 item.Selected = true;
545 IList list = (IList) lvw.SelectedItems;
546 Assert.IsNotNull (list, "#A1");
547 ListViewItem [] items = new ListViewItem [1];
549 lvw.SelectedItems.CopyTo (items, 0);
550 Assert.IsNull (items [0], "#A2");
551 lvw.SelectedItems.CopyTo (items, 455);
555 lvw.SelectedItems.CopyTo (items, 0);
556 Assert.AreSame (item, items [0], "#B1");
558 lvw.SelectedItems.CopyTo (items, 455);
560 } catch (ArgumentException) {
566 public void SelectedItemCollectionTest_Count ()
568 Form form = new Form ();
569 form.ShowInTaskbar = false;
570 ListView lvw = new ListView ();
571 form.Controls.Add (lvw);
572 ListViewItem item = lvw.Items.Add ("Title");
573 item.Selected = true;
575 Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
577 Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
582 public void SelectedItemCollectionTest_GetEnumerator ()
584 Form form = new Form ();
585 form.ShowInTaskbar = false;
586 ListView lvw = new ListView ();
587 form.Controls.Add (lvw);
588 ListViewItem item = lvw.Items.Add ("Title");
589 item.Selected = true;
591 Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
595 Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
601 public void SelectedItemCollectionTest_Indexer ()
603 Form form = new Form ();
604 form.ShowInTaskbar = false;
605 ListView lvw = new ListView ();
606 form.Controls.Add (lvw);
607 ListViewItem item = lvw.Items.Add ("Title");
608 item.Selected = true;
609 IList list = (IList) lvw.SelectedItems;
612 ListViewItem x = lvw.SelectedItems [0];
613 Assert.Fail ("#A1: " + x.ToString ());
614 } catch (ArgumentOutOfRangeException) {
618 ListViewItem x = list [0] as ListViewItem;
619 Assert.Fail ("#A2: " + x.ToString ());
620 } catch (ArgumentOutOfRangeException) {
625 Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
626 Assert.AreSame (item, list [0], "#B2");
632 public void SelectedItemCollectionTest_IndexOf ()
634 Form form = new Form ();
635 form.ShowInTaskbar = false;
636 ListView lvw = new ListView ();
637 form.Controls.Add (lvw);
638 ListViewItem item = lvw.Items.Add ("Title");
639 item.Selected = true;
640 IList list = (IList) lvw.SelectedItems;
642 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
643 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
644 Assert.AreEqual (-1, list.IndexOf (item), "#A3");
645 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
649 Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
650 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
651 Assert.AreEqual (0, list.IndexOf (item), "#B3");
652 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
659 public void SelectedItemCollectionTest_IndexOfKey ()
661 ListView lvw = new ListView ();
662 ListViewItem lvi1 = new ListViewItem ("A");
663 lvi1.Name = "A name";
664 lvi1.Selected = true;
665 ListViewItem lvi2 = new ListViewItem ("B");
666 lvi2.Name = "Same name";
667 lvi2.Selected = false;
668 ListViewItem lvi3 = new ListViewItem ("C");
669 lvi3.Name = "Same name";
670 lvi3.Selected = true;
671 ListViewItem lvi4 = new ListViewItem ("D");
672 lvi4.Name = String.Empty;
673 lvi4.Selected = true;
674 ListViewItem lvi5 = new ListViewItem ("E");
675 lvi5.Name = "E name";
676 lvi5.Selected = false;
677 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
679 // Force to create the control
680 lvw.CreateControl ();
682 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
683 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (String.Empty), "#A2");
684 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (null), "#A3");
685 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("A name"), "#A4");
686 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("a NAME"), "#A5");
687 Assert.AreEqual (1, lvw.SelectedItems.IndexOfKey ("Same name"), "#A6");
688 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey ("E name"), "#A7");
690 ListViewItem lvi6 = new ListViewItem ("F");
691 lvw.Items.Add (lvi6);
692 lvi6.Selected = true;
693 lvi6.Name = "F name";
695 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
696 Assert.AreEqual (3, lvw.SelectedItems.IndexOfKey ("F name"), "#B2");
700 public void SelectedItemCollectionTest_Indexer2 ()
702 ListView lvw = new ListView ();
703 ListViewItem lvi1 = new ListViewItem ("A");
704 lvi1.Name = "A name";
705 lvi1.Selected = true;
706 ListViewItem lvi2 = new ListViewItem ("B");
707 lvi2.Name = "Same name";
708 lvi2.Selected = false;
709 ListViewItem lvi3 = new ListViewItem ("C");
710 lvi3.Name = "Same name";
711 lvi3.Selected = true;
712 ListViewItem lvi4 = new ListViewItem ("D");
713 lvi4.Name = String.Empty;
714 lvi4.Selected = true;
715 ListViewItem lvi5 = new ListViewItem ("E");
716 lvi5.Name = "E name";
717 lvi5.Selected = false;
718 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
720 // Force to create the control
721 lvw.CreateControl ();
723 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
724 Assert.AreEqual (null, lvw.SelectedItems [String.Empty], "#A2");
725 Assert.AreEqual (null, lvw.SelectedItems [null], "#A3");
726 Assert.AreEqual (lvi1, lvw.SelectedItems ["A name"], "#A4");
727 Assert.AreEqual (lvi1, lvw.SelectedItems ["a NAME"], "#A5");
728 Assert.AreEqual (lvi3, lvw.SelectedItems ["Same name"], "#A6");
729 Assert.AreEqual (null, lvw.SelectedItems ["E name"], "#A7");
731 ListViewItem lvi6 = new ListViewItem ("F");
732 lvw.Items.Add (lvi6);
733 lvi6.Selected = true;
734 lvi6.Name = "F name";
736 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
737 Assert.AreEqual (lvi6, lvw.SelectedItems ["F name"], "#B2");
742 public void SelectedItemCollectionTest_Order ()
744 Form form = new Form ();
745 form.ShowInTaskbar = false;
746 ListView lvw = new ListView ();
747 lvw.MultiSelect = true;
748 form.Controls.Add (lvw);
749 ListViewItem itemA = lvw.Items.Add ("A");
750 itemA.Selected = true;
751 ListViewItem itemB = lvw.Items.Add ("B");
752 itemB.Selected = true;
753 ListViewItem itemC = lvw.Items.Add ("C");
754 itemC.Selected = true;
758 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
759 Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
760 Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
761 Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
763 itemB.Selected = false;
765 Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
766 Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
767 Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
769 itemB.Selected = true;
771 Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
772 Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
773 Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
774 Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
776 lvw.Sorting = SortOrder.Descending;
778 Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
779 Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
780 Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
781 Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
787 ListViewItemCollection
791 public void ListViewItemCollectionTest_Add ()
793 ListView lvw = new ListView ();
794 ListViewItem item = new ListViewItem ("Title");
795 ListViewItem newItem = lvw.Items.Add (item);
796 Assert.AreSame (newItem, item, "#A1");
797 Assert.AreEqual (0, item.Index, "#A2");
798 Assert.AreSame (item, lvw.Items [0], "#A3");
799 Assert.AreSame (lvw, item.ListView, "#A4");
801 newItem = lvw.Items.Add ("A title");
802 Assert.AreEqual ("A title", newItem.Text, "#B1");
803 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
804 Assert.AreEqual (1, newItem.Index, "#B3");
805 Assert.AreSame (newItem, lvw.Items [1], "#B4");
806 Assert.AreSame (lvw, newItem.ListView, "#B5");
807 Assert.AreEqual (0, item.Index, "#B6");
808 Assert.AreSame (item, lvw.Items [0], "#B7");
810 newItem = lvw.Items.Add ("A title", 4);
811 Assert.AreEqual ("A title", newItem.Text, "#C1");
812 Assert.AreEqual (4, newItem.ImageIndex, "#C2");
813 Assert.AreEqual (2, newItem.Index, "#C3");
814 Assert.AreSame (newItem, lvw.Items [2], "#C4");
815 Assert.AreSame (lvw, newItem.ListView, "#C5");
816 Assert.AreEqual (0, item.Index, "#C6");
817 Assert.AreSame (item, lvw.Items [0], "#C7");
821 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
822 public void ListViewItemCollectionTest_Add_ExistingItem ()
824 ListView lvw = new ListView ();
825 ListViewItem itemA = lvw.Items.Add ("A");
826 lvw.Items.Add (itemA);
830 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
831 public void ListViewItemCollectionTest_Add_OwnedItem ()
833 ListView lv1 = new ListView ();
834 ListView lv2 = new ListView ();
835 ListViewItem item = lv1.Items.Add ("A");
836 lv2.Items.Add (item);
840 public void ListViewItemCollectionTest_Add_Junk ()
842 ListView lv1 = new ListView ();
844 ListViewItem item4 = lv1.Items.Add("Item4", 4);
845 Assert.AreEqual(item4, lv1.Items[0], "#D1");
847 Assert.AreEqual(string.Empty, lv1.Items[0].Name, "#D2");
849 Assert.AreEqual("Item4", lv1.Items[0].Text, "#D3");
850 Assert.AreEqual(4, lv1.Items[0].ImageIndex, "#D4");
853 ListViewItem item5 = lv1.Items.Add(text);
854 Assert.AreEqual(item5, lv1.Items[1], "#E1");
856 Assert.AreEqual(string.Empty, lv1.Items[1].Name, "#E2");
858 Assert.AreEqual(string.Empty, lv1.Items[1].Text, "#E3");
860 ListViewItem item6 = lv1.Items.Add(null, 5);
861 Assert.AreEqual(item6, lv1.Items[2], "#F1");
863 Assert.AreEqual(string.Empty, lv1.Items[2].Name, "#F2");
865 Assert.AreEqual(string.Empty, lv1.Items[2].Text, "#F3");
866 Assert.AreEqual(5, lv1.Items[2].ImageIndex, "#F4");
868 ListViewItem item1 = lv1.Items.Add("ItemKey1", "Item1", 1);
869 Assert.AreEqual(item1, lv1.Items[3], "#A1");
870 Assert.AreEqual("ItemKey1", lv1.Items[3].Name, "#A2");
871 Assert.AreEqual("Item1", lv1.Items[3].Text, "#A3");
872 Assert.AreEqual(1, lv1.Items[3].ImageIndex, "#A4");
874 ListViewItem item2 = lv1.Items.Add("ItemKey2", "Item2", "Image2");
875 Assert.AreEqual(item2, lv1.Items[4], "#B1");
876 Assert.AreEqual("ItemKey2", lv1.Items[4].Name, "#B2");
877 Assert.AreEqual("Item2", lv1.Items[4].Text, "#B3");
878 Assert.AreEqual("Image2", lv1.Items[4].ImageKey, "#B4");
880 ListViewItem item3 = lv1.Items.Add("Item3", "Image3");
881 Assert.AreEqual(item3, lv1.Items[5], "#C1");
882 Assert.AreEqual(string.Empty, lv1.Items[5].Name, "#C2");
883 Assert.AreEqual("Item3", lv1.Items[5].Text, "#C3");
884 Assert.AreEqual("Image3", lv1.Items[5].ImageKey, "#C4");
886 ListViewItem item7 = lv1.Items.Add(null, "Item6", 6);
887 Assert.AreEqual(item7, lv1.Items[6], "#G1");
888 Assert.AreEqual(string.Empty, lv1.Items[6].Name, "#G2");
889 Assert.AreEqual("Item6", lv1.Items[6].Text, "#G3");
890 Assert.AreEqual(6, lv1.Items[6].ImageIndex, "#G4");
892 ListViewItem item8 = lv1.Items.Add("ItemKey7", null, 7);
893 Assert.AreEqual(item8, lv1.Items[7], "#H1");
894 Assert.AreEqual("ItemKey7", lv1.Items[7].Name, "#H2");
895 Assert.AreEqual(string.Empty, lv1.Items[7].Text, "#H3");
896 Assert.AreEqual(7, lv1.Items[7].ImageIndex, "#H4");
898 ListViewItem item9 = lv1.Items.Add("ItemKey8", "Item8", null);
899 Assert.AreEqual(item9, lv1.Items[8], "#I1");
900 Assert.AreEqual("ItemKey8", lv1.Items[8].Name, "#I2");
901 Assert.AreEqual("Item8", lv1.Items[8].Text, "#I3");
902 Assert.AreEqual(string.Empty, lv1.Items[8].ImageKey, "#I4");
907 public void ListViewItemCollectionTest_AddRange ()
909 ListView lv1 = new ListView ();
910 ListViewItem item1 = new ListViewItem ("Item1");
911 ListViewItem item2 = new ListViewItem ("Item2");
912 ListViewItem item3 = new ListViewItem ("Item3");
913 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
915 Assert.AreSame (item1, lv1.Items[0], "#A1");
916 Assert.AreEqual (0, item1.Index, "#A2");
917 Assert.AreSame (lv1, item1.ListView, "#A3");
919 Assert.AreSame (item2, lv1.Items[1], "#B1");
920 Assert.AreEqual (1, item2.Index, "#B2");
921 Assert.AreSame (lv1, item2.ListView, "#B3");
923 Assert.AreSame (item3, lv1.Items[2], "#C1");
924 Assert.AreEqual (2, item3.Index, "#C2");
925 Assert.AreSame (lv1, item3.ListView, "#C3");
929 public void ListViewItemCollectionTest_AddRange_Count ()
931 ListView lv1 = new ListView ();
932 ListViewItem item1 = new ListViewItem ("Item1");
933 ListViewItem item2 = new ListViewItem ("Item2");
934 ListViewItem item3 = new ListViewItem ("Item3");
936 lv1.Items.Add ("Item4");
937 Assert.AreEqual (1, lv1.Items.Count, "#A1");
938 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
939 Assert.AreEqual (4, lv1.Items.Count, "#A1");
943 [ExpectedException(typeof(ArgumentNullException))]
944 public void ListViewItemCollectionTest_AddRange_NullException ()
946 ListView lv1 = new ListView ();
947 ListViewItem[] value = null;
948 lv1.Items.AddRange (value);
952 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
953 public void ListViewItemCollectionTest_AddRange_OwnedItem ()
955 //MSDN told us, we can use this method to reuse items from a different ListView control. That is not true.
956 ListView lv1 = new ListView ();
957 ListView lv2 = new ListView ();
958 ListViewItem a = lv1.Items.Add ("Item1");
959 ListViewItem b = lv1.Items.Add ("Item2");
961 lv2.Items.AddRange (new ListViewItem[] { a, b });
965 [ExpectedException(typeof(ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
966 public void ListViewItemCollectionTest_AddRange_ExistingItem ()
968 ListView lv1 = new ListView ();
969 ListViewItem item1 = lv1.Items.Add ("Item1");
970 lv1.Items.Add (item1);
974 public void ListViewItemCollectionTest_Clear ()
976 ListView lvw = new ListView ();
977 ListViewItem itemA = lvw.Items.Add ("A");
978 ListViewItem itemB = lvw.Items.Add ("B");
980 Assert.AreEqual (2, lvw.Items.Count, "#A1");
981 Assert.AreSame (lvw, itemA.ListView, "#A2");
982 Assert.AreSame (lvw, itemB.ListView, "#A3");
986 Assert.AreEqual (0, lvw.Items.Count, "#B1");
987 Assert.IsNull (itemA.ListView, "#B2");
988 Assert.IsNull (itemB.ListView, "#B3");
992 public void ListViewItemCollectionTest_Insert ()
994 ListView lvw = new ListView ();
995 ListViewItem item = new ListViewItem ("Title");
996 ListViewItem newItem = lvw.Items.Insert (0, item);
997 Assert.AreSame (newItem, item, "#A1");
998 Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
999 Assert.AreSame (newItem, lvw.Items [0], "#A3");
1000 Assert.AreSame (lvw, newItem.ListView, "#A4");
1002 newItem = lvw.Items.Insert (1, "A title");
1003 Assert.AreEqual ("A title", newItem.Text, "#B1");
1004 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
1005 Assert.AreEqual (1, newItem.Index, "#B3");
1006 Assert.AreSame (newItem, lvw.Items [1], "#B4");
1007 Assert.AreSame (lvw, newItem.ListView, "#B5");
1008 Assert.AreEqual (0, item.Index, "#B6");
1009 Assert.AreSame (item, lvw.Items [0], "#B7");
1011 newItem = lvw.Items.Insert (0, "Other title");
1012 Assert.AreEqual ("Other title", newItem.Text, "#C1");
1013 Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
1014 Assert.AreEqual (0, newItem.Index, "#C3");
1015 Assert.AreSame (newItem, lvw.Items [0], "#C4");
1016 Assert.AreSame (lvw, newItem.ListView, "#C5");
1017 Assert.AreEqual (1, item.Index, "#C6");
1018 Assert.AreSame (item, lvw.Items [1], "#C7");
1020 newItem = lvw.Items.Insert (3, "Some title", 4);
1021 Assert.AreEqual ("Some title", newItem.Text, "#D1");
1022 Assert.AreEqual (4, newItem.ImageIndex, "#D2");
1023 Assert.AreEqual (3, newItem.Index, "#D3");
1024 Assert.AreSame (newItem, lvw.Items [3], "#D4");
1025 Assert.AreSame (lvw, newItem.ListView, "#D5");
1026 Assert.AreEqual (1, item.Index, "#D6");
1027 Assert.AreSame (item, lvw.Items [1], "#D7");
1029 newItem = lvw.Items.Insert (0, "No title", 4);
1030 Assert.AreEqual ("No title", newItem.Text, "#E1");
1031 Assert.AreEqual (4, newItem.ImageIndex, "#E2");
1032 Assert.AreEqual (0, newItem.Index, "#E3");
1033 Assert.AreSame (newItem, lvw.Items [0], "#E4");
1034 Assert.AreSame (lvw, newItem.ListView, "#E5");
1035 Assert.AreEqual (2, item.Index, "#E6");
1036 Assert.AreSame (item, lvw.Items [2], "#E7");
1040 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
1041 public void ListViewItemCollectionTest_Insert_ExistingItem ()
1043 ListView lvw = new ListView ();
1044 ListViewItem itemA = lvw.Items.Add ("A");
1045 lvw.Items.Insert (0, itemA);
1049 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
1050 public void ListViewItemCollectionTest_Insert_OwnedItem ()
1052 ListView lv1 = new ListView ();
1053 ListView lv2 = new ListView ();
1054 ListViewItem item = lv1.Items.Add ("A");
1055 lv2.Items.Insert (0, item);
1059 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
1060 public void ListViewItemCollectionTest_Indexer_OwnedItem ()
1062 ListView lv1 = new ListView ();
1063 ListView lv2 = new ListView ();
1064 ListViewItem item = lv1.Items.Add ("A");
1066 lv2.Items.Add ("Dummy");
1067 lv2.Items[0] = item;
1071 public void ListViewItemCollectionTest_Remove ()
1073 Form form = new Form ();
1074 form.ShowInTaskbar = false;
1075 ListView lvw = new ListView ();
1076 form.Controls.Add (lvw);
1077 lvw.MultiSelect = true;
1078 lvw.CheckBoxes = true;
1082 ListViewItem itemA = lvw.Items.Add ("A");
1083 ListViewItem itemB = lvw.Items.Add ("B");
1084 lvw.Items.Add ("C");
1085 ListViewItem itemD = lvw.Items.Add ("D");
1087 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1088 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1089 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1091 itemB.Checked = true;
1092 itemD.Checked = true;
1094 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1095 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1096 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1097 Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
1098 Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
1100 itemD.Selected = true;
1102 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1103 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1104 Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
1105 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1106 Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
1107 Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
1109 lvw.Items.Remove (itemB);
1111 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1112 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1113 Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
1114 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1115 Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
1117 lvw.Items.Remove (itemA);
1119 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1120 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1121 Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
1122 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1123 Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
1125 Assert.IsNull (itemA.ListView, "#F1");
1126 Assert.IsNull (itemB.ListView, "#F2");
1127 Assert.AreSame (lvw, itemD.ListView, "#F3");
1133 public void ListViewItemCollectionTest_RemoveAt ()
1135 Form form = new Form ();
1136 form.ShowInTaskbar = false;
1137 ListView lvw = new ListView ();
1138 form.Controls.Add (lvw);
1139 lvw.MultiSelect = true;
1140 lvw.CheckBoxes = true;
1142 ListViewItem itemA = lvw.Items.Add ("A");
1143 ListViewItem itemB = lvw.Items.Add ("B");
1144 ListViewItem itemC = lvw.Items.Add ("C");
1145 ListViewItem itemD = lvw.Items.Add ("D");
1149 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1150 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1151 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1153 lvw.Items [1].Checked = true;
1154 lvw.Items [3].Checked = true;
1156 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1157 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1158 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1159 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
1160 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
1162 lvw.Items [3].Selected = true;
1164 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1165 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1166 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
1167 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1168 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
1169 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
1171 lvw.Items.RemoveAt (1);
1173 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1174 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1175 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
1176 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1177 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
1179 lvw.Items.RemoveAt (0);
1181 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1182 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1183 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
1184 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1185 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
1187 Assert.IsNull (itemA.ListView, "#F1");
1188 Assert.IsNull (itemB.ListView, "#F2");
1189 Assert.AreSame (lvw, itemC.ListView, "#F3");
1190 Assert.AreSame (lvw, itemD.ListView, "#F4");
1197 public void ListViewItemCollectionTest_RemoveByKey ()
1199 ListView lvw = new ListView ();
1200 ListViewItem lvi1 = new ListViewItem ("A");
1201 lvi1.Name = "A name";
1202 ListViewItem lvi2 = new ListViewItem ("B");
1203 lvi2.Name = "B name";
1204 ListViewItem lvi3 = new ListViewItem ("C");
1205 lvi3.Name = "Same name";
1206 ListViewItem lvi4 = new ListViewItem ("D");
1207 lvi4.Name = "Same name";
1208 ListViewItem lvi5 = new ListViewItem ("E");
1209 lvi5.Name = String.Empty;
1210 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1212 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1214 lvw.Items.RemoveByKey ("B name");
1215 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1216 Assert.AreSame (lvi1, lvw.Items [0], "#B2");
1217 Assert.AreSame (lvi3, lvw.Items [1], "#B3");
1218 Assert.AreSame (lvi4, lvw.Items [2], "#B4");
1219 Assert.AreSame (lvi5, lvw.Items [3], "#B5");
1221 lvw.Items.RemoveByKey ("Same name");
1222 Assert.AreEqual (3, lvw.Items.Count, "#C1");
1223 Assert.AreSame (lvi1, lvw.Items [0], "#C2");
1224 Assert.AreSame (lvi4, lvw.Items [1], "#C3");
1225 Assert.AreSame (lvi5, lvw.Items [2], "#C4");
1227 lvw.Items.RemoveByKey ("a NAME");
1228 Assert.AreEqual (2, lvw.Items.Count, "#D1");
1229 Assert.AreSame (lvi4, lvw.Items [0], "#D2");
1230 Assert.AreSame (lvi5, lvw.Items [1], "#D3");
1232 lvw.Items.RemoveByKey (String.Empty);
1233 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1234 Assert.AreSame (lvi4, lvw.Items [0], "#E2");
1235 Assert.AreSame (lvi5, lvw.Items [1], "#E3");
1237 Assert.IsNull (lvi1.ListView, "#F1");
1238 Assert.IsNull (lvi2.ListView, "#F2");
1239 Assert.IsNull (lvi3.ListView, "#F3");
1240 Assert.AreSame (lvw, lvi4.ListView, "#F4");
1241 Assert.AreSame (lvw, lvi5.ListView, "#F5");
1245 public void ListViewItemCollectionTest_IndexOfKey ()
1247 ListView lvw = new ListView ();
1248 ListViewItem lvi1 = new ListViewItem ("A");
1249 lvi1.Name = "A name";
1250 ListViewItem lvi2 = new ListViewItem ("B");
1251 lvi2.Name = "Same name";
1252 ListViewItem lvi3 = new ListViewItem ("C");
1253 lvi3.Name = "Same name";
1254 ListViewItem lvi4 = new ListViewItem ("D");
1255 lvi4.Name = String.Empty;
1256 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1258 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1259 Assert.AreEqual (-1, lvw.Items.IndexOfKey (String.Empty), "#A2");
1260 Assert.AreEqual (-1, lvw.Items.IndexOfKey (null), "#A3");
1261 Assert.AreEqual (0, lvw.Items.IndexOfKey ("A name"), "#A4");
1262 Assert.AreEqual (0, lvw.Items.IndexOfKey ("a NAME"), "#A5");
1263 Assert.AreEqual (1, lvw.Items.IndexOfKey ("Same name"), "#A6");
1265 ListViewItem lvi5 = new ListViewItem ("E");
1266 lvw.Items.Add (lvi5);
1267 lvi5.Name = "E name";
1269 Assert.AreEqual (4, lvw.Items.IndexOfKey ("E name"), "#B1");
1273 public void ListViewItemCollectionTest_Indexer ()
1275 ListView lvw = new ListView ();
1276 ListViewItem lvi1 = new ListViewItem ("A");
1277 lvi1.Name = "A name";
1278 ListViewItem lvi2 = new ListViewItem ("B");
1279 lvi2.Name = "Same name";
1280 ListViewItem lvi3 = new ListViewItem ("C");
1281 lvi3.Name = "Same name";
1282 ListViewItem lvi4 = new ListViewItem ("D");
1283 lvi4.Name = String.Empty;
1284 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1286 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1287 Assert.AreEqual (null, lvw.Items [String.Empty], "#A2");
1288 Assert.AreEqual (null, lvw.Items [null], "#A3");
1289 Assert.AreSame (lvi1, lvw.Items ["A name"], "#A4");
1290 Assert.AreSame (lvi1, lvw.Items ["a NAME"], "#A5");
1291 Assert.AreSame (lvi2, lvw.Items ["Same name"], "#A6");
1293 ListViewItem lvi5 = new ListViewItem ("E");
1294 lvw.Items.Add (lvi5);
1295 lvi5.Name = "E name";
1297 Assert.AreSame (lvi5, lvw.Items ["E name"], "#B1");
1301 public void ListViewItemCollectionTest_ContainsKey ()
1303 ListView lvw = new ListView();
1304 ListViewItem lvi1 = new ListViewItem("A");
1305 lvi1.Name = "A name";
1306 ListViewItem lvi2 = new ListViewItem("B");
1307 lvi2.Name = "B name";
1308 ListViewItem lvi3 = new ListViewItem("D");
1309 lvi3.Name = String.Empty;
1310 lvw.Items.AddRange(new ListViewItem[] { lvi1, lvi2, lvi3 });
1312 Assert.AreEqual(3, lvw.Items.Count, "#A1");
1313 Assert.AreEqual(false, lvw.Items.ContainsKey (String.Empty), "#A2");
1314 Assert.AreEqual(false, lvw.Items.ContainsKey (null), "#A3");
1315 Assert.AreEqual(true, lvw.Items.ContainsKey ("A name"), "#A4");
1316 Assert.AreEqual(true, lvw.Items.ContainsKey ("a NAME"), "#A5");
1317 Assert.AreEqual(true, lvw.Items.ContainsKey ("B name"), "#A6");
1319 ListViewItem lvi5 = new ListViewItem("E");
1320 lvw.Items.Add(lvi5);
1321 lvi5.Name = "E name";
1323 Assert.AreEqual(true, lvw.Items.ContainsKey ("E name"), "#B1");
1327 public void ListViewItemCollectionTest_Find ()
1329 ListView lvw = new ListView ();
1330 ListViewItem lvi1 = new ListViewItem ("A");
1331 lvi1.Name = "A name";
1332 ListViewItem lvi2 = new ListViewItem ("B");
1333 lvi2.Name = "a NAME";
1334 ListViewItem lvi3 = new ListViewItem ("C");
1335 lvi3.Name = "a NAME";
1336 ListViewItem lvi4 = new ListViewItem ("D");
1337 lvi4.Name = String.Empty;
1338 ListViewItem lvi5 = new ListViewItem ("F");
1339 lvi5.Name = String.Empty;
1340 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1342 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1344 ListViewItem [] items = lvw.Items.Find ("A name", false);
1345 Assert.AreEqual (3, items.Length, "#B11");
1346 Assert.AreSame (lvi1, items [0], "#B2");
1347 Assert.AreSame (lvi2, items [1], "#B3");
1348 Assert.AreSame (lvi3, items [2], "#B4");
1350 items = lvw.Items.Find (String.Empty, false);
1351 Assert.AreEqual (2, items.Length, "#B1");
1352 Assert.AreSame (lvi4, items [0], "#B2");
1353 Assert.AreSame (lvi5, items [1], "#B3");
1355 Assert.AreEqual (0, lvw.Items.Find (null, false).Length, "#C1");
1359 public void ListViewSubItemCollectionTest_ContainsKey ()
1361 ListViewItem lvi = new ListViewItem ("A");
1362 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1363 si1.Name = "A name";
1364 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1365 si2.Name = "B name";
1366 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1367 si3.Name = String.Empty;
1368 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3 });
1370 Assert.AreEqual (4, lvi.SubItems.Count, "#A1");
1371 Assert.AreEqual (false, lvi.SubItems.ContainsKey (String.Empty), "#A2");
1372 Assert.AreEqual (false, lvi.SubItems.ContainsKey (null), "#A3");
1373 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("A name"), "#A4");
1374 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("a NAME"), "#A5");
1375 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("B name"), "#A6");
1377 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1378 lvi.SubItems.Add (si5);
1379 si5.Name = "E name";
1381 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("E name"), "#B1");
1385 public void ListViewSubItemCollectionTest_IndexOfKey ()
1387 ListViewItem lvi = new ListViewItem ();
1388 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1389 si1.Name = "A name";
1390 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1391 si2.Name = "Same name";
1392 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1393 si3.Name = "Same name";
1394 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1395 si4.Name = String.Empty;
1396 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1398 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1399 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (String.Empty), "#A2");
1400 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (null), "#A3");
1401 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("A name"), "#A4");
1402 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("a NAME"), "#A5");
1403 Assert.AreEqual (2, lvi.SubItems.IndexOfKey ("Same name"), "#A6");
1405 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1406 lvi.SubItems.Add (si5);
1407 si5.Name = "E name";
1409 Assert.AreEqual (5, lvi.SubItems.IndexOfKey ("E name"), "#B1");
1413 public void ListViewSubItemCollectionTest_RemoveByKey ()
1415 ListViewItem lvi = new ListViewItem ();
1416 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1417 si1.Name = "A name";
1418 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1419 si2.Name = "B name";
1420 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1421 si3.Name = "Same name";
1422 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1423 si4.Name = "Same name";
1424 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1425 si5.Name = String.Empty;
1426 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4, si5 });
1428 Assert.AreEqual (6, lvi.SubItems.Count, "#A1");
1430 lvi.SubItems.RemoveByKey ("B name");
1431 Assert.AreEqual (5, lvi.SubItems.Count, "#B1");
1432 Assert.AreSame (si1, lvi.SubItems [1], "#B2");
1433 Assert.AreSame (si3, lvi.SubItems [2], "#B3");
1434 Assert.AreSame (si4, lvi.SubItems [3], "#B4");
1435 Assert.AreSame (si5, lvi.SubItems [4], "#B5");
1437 lvi.SubItems.RemoveByKey ("Same name");
1438 Assert.AreEqual (4, lvi.SubItems.Count, "#C1");
1439 Assert.AreSame (si1, lvi.SubItems [1], "#C2");
1440 Assert.AreSame (si4, lvi.SubItems [2], "#C3");
1441 Assert.AreSame (si5, lvi.SubItems [3], "#C4");
1443 lvi.SubItems.RemoveByKey ("a NAME");
1444 Assert.AreEqual (3, lvi.SubItems.Count, "#D1");
1445 Assert.AreSame (si4, lvi.SubItems [1], "#D2");
1446 Assert.AreSame (si5, lvi.SubItems [2], "#D3");
1448 lvi.SubItems.RemoveByKey (String.Empty);
1449 Assert.AreEqual (3, lvi.SubItems.Count, "#E1");
1450 Assert.AreSame (si4, lvi.SubItems [1], "#E2");
1451 Assert.AreSame (si5, lvi.SubItems [2], "#E3");
1455 public void ListViewSubItemCollectionTest_Indexer ()
1457 ListViewItem lvi = new ListViewItem ();
1458 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1459 si1.Name = "A name";
1460 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1461 si2.Name = "Same name";
1462 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1463 si3.Name = "Same name";
1464 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1465 si4.Name = String.Empty;
1466 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1468 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1469 Assert.AreEqual (null, lvi.SubItems [String.Empty], "#A2");
1470 Assert.AreEqual (null, lvi.SubItems [null], "#A3");
1471 Assert.AreEqual (si1, lvi.SubItems ["A name"], "#A4");
1472 Assert.AreEqual (si1, lvi.SubItems ["a NAME"], "#A5");
1473 Assert.AreEqual (si2, lvi.SubItems ["Same name"], "#A6");
1475 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1476 lvi.SubItems.Add (si5);
1477 si5.Name = "E name";
1479 Assert.AreEqual (si5, lvi.SubItems ["E name"], "#B1");
1482 static ListViewItem [] items;
1485 public void ListViewItemCollectionTest_VirtualMode_Exceptions ()
1487 ListView lvw = new ListView ();
1488 lvw.VirtualMode = true;
1489 lvw.VirtualListSize = 1;
1490 lvw.RetrieveVirtualItem += ListViewRetrieveVirtualItemHandler;
1492 ListViewItem item = new ListViewItem ("Item 1");
1494 items = new ListViewItem [1];
1498 lvw.Items.Add ("Item 2");
1499 Assert.Fail ("#A1");
1500 } catch (InvalidOperationException) {
1504 lvw.Items.AddRange (new ListViewItem [0]);
1505 Assert.Fail ("#A2");
1506 } catch (InvalidOperationException) {
1510 lvw.Items.Insert (0, new ListViewItem ("Item 1"));
1511 Assert.Fail ("#A3");
1512 } catch (InvalidOperationException) {
1516 lvw.Items.Remove (new ListViewItem ("Item 99"));
1517 Assert.Fail ("#A4");
1518 } catch (InvalidOperationException) {
1522 lvw.Items.RemoveAt (0);
1523 Assert.Fail ("#A5");
1524 } catch (InvalidOperationException) {
1528 lvw.Items.RemoveByKey ("A");
1529 Assert.Fail ("#A6");
1530 } catch (InvalidOperationException) {
1534 lvw.Items.GetEnumerator ();
1535 Assert.Fail ("#A7");
1536 } catch (InvalidOperationException) {
1540 void ListViewRetrieveVirtualItemHandler (object o, RetrieveVirtualItemEventArgs args)
1542 args.Item = items [args.ItemIndex];