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");
104 listview.Columns.Remove (colC);
105 Assert.AreEqual (1, listview.Columns.Count, "#B1");
106 Assert.AreSame (colA, listview.Columns [0], "#B2");
107 Assert.AreSame (listview, colA.ListView, "#B3");
108 Assert.IsNull (colB.ListView, "#B4");
109 Assert.IsNull (colC.ListView, "#B5");
111 listview.Columns.Remove (colA);
112 Assert.AreEqual (0, listview.Columns.Count, "#C1");
113 Assert.IsNull (colA.ListView, "#C2");
114 Assert.IsNull (colB.ListView, "#C3");
115 Assert.IsNull (colC.ListView, "#C4");
119 public void ColumnHeaderCollectionTest_RemoveAt ()
121 ListView listview = new ListView ();
122 ColumnHeader colA = new ColumnHeader ();
123 ColumnHeader colB = new ColumnHeader ();
124 ColumnHeader colC = new ColumnHeader ();
125 listview.Columns.Add (colA);
126 listview.Columns.Add (colB);
127 listview.Columns.Add (colC);
129 listview.Columns.RemoveAt (1);
130 Assert.AreEqual (2, listview.Columns.Count, "#A1");
131 Assert.AreSame (colA, listview.Columns [0], "#A2");
132 Assert.AreSame (colC, listview.Columns [1], "#A3");
133 Assert.AreSame (listview, colA.ListView, "#A4");
134 Assert.IsNull (colB.ListView, "#A5");
135 Assert.AreSame (listview, colC.ListView, "#A6");
137 listview.Columns.RemoveAt (0);
138 Assert.AreEqual (1, listview.Columns.Count, "#B1");
139 Assert.AreSame (colC, listview.Columns [0], "#B2");
140 Assert.IsNull (colA.ListView, "#B3");
141 Assert.IsNull (colB.ListView, "#B4");
142 Assert.AreSame (listview, colC.ListView, "#B5");
144 listview.Columns.RemoveAt (0);
145 Assert.AreEqual (0, listview.Columns.Count, "#C1");
146 Assert.IsNull (colA.ListView, "#C2");
147 Assert.IsNull (colB.ListView, "#C3");
148 Assert.IsNull (colC.ListView, "#C4");
152 CheckedIndexCollection
155 public void CheckedIndexCollectionTest_PropertiesTest ()
157 ListView listview = new ListView ();
160 Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
161 Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
162 Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
163 Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
164 Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
169 [Test, ExpectedException (typeof (NotSupportedException))]
170 public void CheckedIndexCollectionTest_Add_ExceptionTest ()
172 ListView listview = new ListView ();
173 ((IList)listview.CheckedIndices).Add (5);
176 [Test, ExpectedException (typeof (NotSupportedException))]
177 public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
179 ListView listview = new ListView ();
180 ((IList)listview.CheckedIndices).Remove (5);
183 [Test, ExpectedException (typeof (NotSupportedException))]
184 public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
186 ListView listview = new ListView ();
187 ((IList)listview.CheckedIndices).RemoveAt (5);
191 CheckedItemCollection
194 public void CheckedItemCollectionTest_PropertiesTest ()
196 ListView listview = new ListView ();
199 Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
200 Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
201 Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
202 Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
203 Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
208 [Test, ExpectedException (typeof (NotSupportedException))]
209 public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
211 ListView listview = new ListView ();
212 ((IList)listview.CheckedItems).Add (5);
216 public void CheckedItemCollectionTest_Order ()
218 Form form = new Form ();
219 form.ShowInTaskbar = false;
220 ListView lvw = new ListView ();
221 lvw.CheckBoxes = true;
222 form.Controls.Add (lvw);
223 ListViewItem itemA = lvw.Items.Add ("A");
224 itemA.Checked = true;
225 ListViewItem itemB = lvw.Items.Add ("B");
226 itemB.Checked = true;
227 ListViewItem itemC = lvw.Items.Add ("C");
228 itemC.Checked = true;
230 Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
231 Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
232 Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
233 Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
235 itemB.Checked = false;
237 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
238 Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
239 Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
241 itemB.Checked = true;
243 Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
244 Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
245 Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
246 Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
248 lvw.Sorting = SortOrder.Descending;
250 Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
251 Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
252 Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
253 Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
255 // sorting only takes effect when listview is created
258 Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
259 Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
260 Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
261 Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
265 [Test, ExpectedException (typeof (NotSupportedException))]
266 public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
268 ListView listview = new ListView ();
269 ((IList)listview.CheckedItems).Remove (5);
272 [Test, ExpectedException (typeof (NotSupportedException))]
273 public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
275 ListView listview = new ListView ();
276 ((IList)listview.CheckedItems).RemoveAt (5);
280 SelectedIndexCollection
283 public void SelectedIndexCollectionTest_PropertiesTest ()
285 ListView listview = new ListView ();
289 Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
290 Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
292 Assert.AreEqual (false, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
293 Assert.AreEqual (false, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
295 Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
296 Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
297 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
302 public void SelectedIndexCollectionTest_AddTest ()
304 ListView listview = new ListView ();
305 listview.Items.Add ("A");
307 int n = listview.SelectedIndices.Add (0);
308 Assert.AreEqual (0, n, "SelectedIndexCollectionTest_AddTest#1");
309 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#2");
311 // Force to create the handle
312 listview.CreateControl ();
313 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#4");
315 n = listview.SelectedIndices.Add (0);
316 Assert.AreEqual (1, n, "SelectedIndexCollectionTest_AddTest#5");
317 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#6");
318 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#7");
322 public void SelectedIndexCollectionTest_ClearTest ()
324 ListView listview = new ListView ();
325 listview.Items.Add ("A");
326 listview.Items.Add ("B");
327 listview.Items.Add ("C");
329 listview.SelectedIndices.Add (0);
330 listview.SelectedIndices.Add (2);
332 // Nothing if handle hasn't been created
333 listview.SelectedIndices.Clear ();
334 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#2");
335 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#3");
336 Assert.AreEqual (true, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#4");
338 // Force to create the handle
339 listview.CreateControl ();
341 listview.SelectedIndices.Add (0);
342 listview.SelectedIndices.Add (2);
344 listview.SelectedIndices.Clear ();
345 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_ClearTest#5");
346 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#6");
347 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#7");
348 Assert.AreEqual (false, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#8");
352 public void SelectedIndexCollectionTest_RemoveTest ()
354 ListView listview = new ListView ();
355 listview.Items.Add ("A");
357 listview.SelectedIndices.Add (0);
358 listview.SelectedIndices.Remove (0);
359 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#1");
360 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#2");
362 // Force to create the handle
363 listview.CreateControl ();
365 listview.SelectedIndices.Add (0);
366 listview.SelectedIndices.Remove (0);
367 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#3");
368 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#4");
374 [Test, ExpectedException (typeof (NotSupportedException))]
375 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
377 ListView listview = new ListView ();
378 ((IList)listview.SelectedIndices).Add (5);
381 [Test, ExpectedException (typeof (NotSupportedException))]
382 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
384 ListView listview = new ListView ();
385 ((IList)listview.SelectedIndices).Remove (5);
389 [Test, ExpectedException (typeof (NotSupportedException))]
390 public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
392 ListView listview = new ListView ();
393 ((IList)listview.SelectedIndices).RemoveAt (5);
398 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
400 ListView listview = new ListView ();
402 listview.SelectedIndices.Remove (-1);
403 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#1");
404 } catch (ArgumentOutOfRangeException) {
408 listview.SelectedIndices.Remove (listview.Items.Count);
409 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#2");
410 } catch (ArgumentOutOfRangeException) {
415 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
417 ListView listview = new ListView ();
419 listview.SelectedIndices.Add (-1);
420 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#1");
421 } catch (ArgumentOutOfRangeException) {
425 listview.SelectedIndices.Add (listview.Items.Count);
426 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#2");
427 } catch (ArgumentOutOfRangeException) {
433 SelectedItemCollection
436 public void SelectedItemCollectionTest_PropertiesTest ()
438 ListView listview = new ListView ();
441 Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
442 Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
443 Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
444 Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
445 Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
450 [Test, ExpectedException (typeof (NotSupportedException))]
451 public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
453 ListView listview = new ListView ();
454 ((IList)listview.SelectedItems).Add (5);
457 [Test, ExpectedException (typeof (NotSupportedException))]
458 public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
460 ListView listview = new ListView ();
461 ((IList)listview.SelectedItems).Remove (5);
464 [Test, ExpectedException (typeof (NotSupportedException))]
465 public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
467 ListView listview = new ListView ();
468 ((IList)listview.SelectedItems).RemoveAt (5);
472 public void SelectedItemCollectionTest_Clear ()
474 Form form = new Form ();
475 form.ShowInTaskbar = false;
476 ListView lvw = new ListView ();
477 form.Controls.Add (lvw);
478 ListViewItem item = lvw.Items.Add ("Title");
479 item.Selected = true;
481 lvw.SelectedItems.Clear ();
483 Assert.IsTrue (item.Selected, "#A1");
484 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
485 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
489 Assert.IsTrue (item.Selected, "#B1");
490 Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
491 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
493 // once listview is created, clear DOES have effect
494 lvw.SelectedItems.Clear ();
496 Assert.IsFalse (item.Selected, "#C1");
497 Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
498 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
503 public void SelectedItemCollectionTest_Contains ()
505 Form form = new Form ();
506 form.ShowInTaskbar = false;
507 ListView lvw = new ListView ();
508 form.Controls.Add (lvw);
509 ListViewItem item = lvw.Items.Add ("Title");
510 item.Selected = true;
511 IList list = (IList) lvw.SelectedItems;
513 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
514 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
515 Assert.IsFalse (list.Contains (item), "#A3");
516 Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
520 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
521 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
522 Assert.IsTrue (list.Contains (item), "#B3");
523 Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
528 public void SelectedItemCollectionTest_CopyTo ()
530 Form form = new Form ();
531 form.ShowInTaskbar = false;
532 ListView lvw = new ListView ();
533 form.Controls.Add (lvw);
534 ListViewItem item = lvw.Items.Add ("Title");
535 item.Selected = true;
536 IList list = (IList) lvw.SelectedItems;
537 Assert.IsNotNull (list, "#A1");
538 ListViewItem [] items = new ListViewItem [1];
540 lvw.SelectedItems.CopyTo (items, 0);
541 Assert.IsNull (items [0], "#A2");
542 lvw.SelectedItems.CopyTo (items, 455);
546 lvw.SelectedItems.CopyTo (items, 0);
547 Assert.AreSame (item, items [0], "#B1");
549 lvw.SelectedItems.CopyTo (items, 455);
551 } catch (ArgumentException) {
557 public void SelectedItemCollectionTest_Count ()
559 Form form = new Form ();
560 form.ShowInTaskbar = false;
561 ListView lvw = new ListView ();
562 form.Controls.Add (lvw);
563 ListViewItem item = lvw.Items.Add ("Title");
564 item.Selected = true;
566 Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
568 Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
573 public void SelectedItemCollectionTest_GetEnumerator ()
575 Form form = new Form ();
576 form.ShowInTaskbar = false;
577 ListView lvw = new ListView ();
578 form.Controls.Add (lvw);
579 ListViewItem item = lvw.Items.Add ("Title");
580 item.Selected = true;
582 Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
586 Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
592 public void SelectedItemCollectionTest_Indexer ()
594 Form form = new Form ();
595 form.ShowInTaskbar = false;
596 ListView lvw = new ListView ();
597 form.Controls.Add (lvw);
598 ListViewItem item = lvw.Items.Add ("Title");
599 item.Selected = true;
600 IList list = (IList) lvw.SelectedItems;
603 ListViewItem x = lvw.SelectedItems [0];
604 Assert.Fail ("#A1: " + x.ToString ());
605 } catch (ArgumentOutOfRangeException) {
609 ListViewItem x = list [0] as ListViewItem;
610 Assert.Fail ("#A2: " + x.ToString ());
611 } catch (ArgumentOutOfRangeException) {
616 Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
617 Assert.AreSame (item, list [0], "#B2");
623 public void SelectedItemCollectionTest_IndexOf ()
625 Form form = new Form ();
626 form.ShowInTaskbar = false;
627 ListView lvw = new ListView ();
628 form.Controls.Add (lvw);
629 ListViewItem item = lvw.Items.Add ("Title");
630 item.Selected = true;
631 IList list = (IList) lvw.SelectedItems;
633 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
634 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
635 Assert.AreEqual (-1, list.IndexOf (item), "#A3");
636 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
640 Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
641 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
642 Assert.AreEqual (0, list.IndexOf (item), "#B3");
643 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
650 public void SelectedItemCollectionTest_IndexOfKey ()
652 ListView lvw = new ListView ();
653 ListViewItem lvi1 = new ListViewItem ("A");
654 lvi1.Name = "A name";
655 lvi1.Selected = true;
656 ListViewItem lvi2 = new ListViewItem ("B");
657 lvi2.Name = "Same name";
658 lvi2.Selected = false;
659 ListViewItem lvi3 = new ListViewItem ("C");
660 lvi3.Name = "Same name";
661 lvi3.Selected = true;
662 ListViewItem lvi4 = new ListViewItem ("D");
663 lvi4.Name = String.Empty;
664 lvi4.Selected = true;
665 ListViewItem lvi5 = new ListViewItem ("E");
666 lvi5.Name = "E name";
667 lvi5.Selected = false;
668 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
670 // Force to create the control
671 lvw.CreateControl ();
673 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
674 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (String.Empty), "#A2");
675 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (null), "#A3");
676 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("A name"), "#A4");
677 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("a NAME"), "#A5");
678 Assert.AreEqual (1, lvw.SelectedItems.IndexOfKey ("Same name"), "#A6");
679 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey ("E name"), "#A7");
681 ListViewItem lvi6 = new ListViewItem ("F");
682 lvw.Items.Add (lvi6);
683 lvi6.Selected = true;
684 lvi6.Name = "F name";
686 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
687 Assert.AreEqual (3, lvw.SelectedItems.IndexOfKey ("F name"), "#B2");
691 public void SelectedItemCollectionTest_Indexer2 ()
693 ListView lvw = new ListView ();
694 ListViewItem lvi1 = new ListViewItem ("A");
695 lvi1.Name = "A name";
696 lvi1.Selected = true;
697 ListViewItem lvi2 = new ListViewItem ("B");
698 lvi2.Name = "Same name";
699 lvi2.Selected = false;
700 ListViewItem lvi3 = new ListViewItem ("C");
701 lvi3.Name = "Same name";
702 lvi3.Selected = true;
703 ListViewItem lvi4 = new ListViewItem ("D");
704 lvi4.Name = String.Empty;
705 lvi4.Selected = true;
706 ListViewItem lvi5 = new ListViewItem ("E");
707 lvi5.Name = "E name";
708 lvi5.Selected = false;
709 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
711 // Force to create the control
712 lvw.CreateControl ();
714 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
715 Assert.AreEqual (null, lvw.SelectedItems [String.Empty], "#A2");
716 Assert.AreEqual (null, lvw.SelectedItems [null], "#A3");
717 Assert.AreEqual (lvi1, lvw.SelectedItems ["A name"], "#A4");
718 Assert.AreEqual (lvi1, lvw.SelectedItems ["a NAME"], "#A5");
719 Assert.AreEqual (lvi3, lvw.SelectedItems ["Same name"], "#A6");
720 Assert.AreEqual (null, lvw.SelectedItems ["E name"], "#A7");
722 ListViewItem lvi6 = new ListViewItem ("F");
723 lvw.Items.Add (lvi6);
724 lvi6.Selected = true;
725 lvi6.Name = "F name";
727 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
728 Assert.AreEqual (lvi6, lvw.SelectedItems ["F name"], "#B2");
733 public void SelectedItemCollectionTest_Order ()
735 Form form = new Form ();
736 form.ShowInTaskbar = false;
737 ListView lvw = new ListView ();
738 lvw.MultiSelect = true;
739 form.Controls.Add (lvw);
740 ListViewItem itemA = lvw.Items.Add ("A");
741 itemA.Selected = true;
742 ListViewItem itemB = lvw.Items.Add ("B");
743 itemB.Selected = true;
744 ListViewItem itemC = lvw.Items.Add ("C");
745 itemC.Selected = true;
749 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
750 Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
751 Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
752 Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
754 itemB.Selected = false;
756 Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
757 Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
758 Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
760 itemB.Selected = true;
762 Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
763 Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
764 Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
765 Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
767 lvw.Sorting = SortOrder.Descending;
769 Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
770 Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
771 Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
772 Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
778 ListViewItemCollection
782 public void ListViewItemCollectionTest_Add ()
784 ListView lvw = new ListView ();
785 ListViewItem item = new ListViewItem ("Title");
786 ListViewItem newItem = lvw.Items.Add (item);
787 Assert.AreSame (newItem, item, "#A1");
788 Assert.AreEqual (0, item.Index, "#A2");
789 Assert.AreSame (item, lvw.Items [0], "#A3");
790 Assert.AreSame (lvw, item.ListView, "#A4");
792 newItem = lvw.Items.Add ("A title");
793 Assert.AreEqual ("A title", newItem.Text, "#B1");
794 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
795 Assert.AreEqual (1, newItem.Index, "#B3");
796 Assert.AreSame (newItem, lvw.Items [1], "#B4");
797 Assert.AreSame (lvw, newItem.ListView, "#B5");
798 Assert.AreEqual (0, item.Index, "#B6");
799 Assert.AreSame (item, lvw.Items [0], "#B7");
801 newItem = lvw.Items.Add ("A title", 4);
802 Assert.AreEqual ("A title", newItem.Text, "#C1");
803 Assert.AreEqual (4, newItem.ImageIndex, "#C2");
804 Assert.AreEqual (2, newItem.Index, "#C3");
805 Assert.AreSame (newItem, lvw.Items [2], "#C4");
806 Assert.AreSame (lvw, newItem.ListView, "#C5");
807 Assert.AreEqual (0, item.Index, "#C6");
808 Assert.AreSame (item, lvw.Items [0], "#C7");
812 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
813 public void ListViewItemCollectionTest_Add_ExistingItem ()
815 ListView lvw = new ListView ();
816 ListViewItem itemA = lvw.Items.Add ("A");
817 lvw.Items.Add (itemA);
821 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
822 public void ListViewItemCollectionTest_Add_OwnedItem ()
824 ListView lv1 = new ListView ();
825 ListView lv2 = new ListView ();
826 ListViewItem item = lv1.Items.Add ("A");
827 lv2.Items.Add (item);
831 public void ListViewItemCollectionTest_Add_Junk ()
833 ListView lv1 = new ListView ();
835 ListViewItem item4 = lv1.Items.Add("Item4", 4);
836 Assert.AreEqual(item4, lv1.Items[0], "#D1");
838 Assert.AreEqual(string.Empty, lv1.Items[0].Name, "#D2");
840 Assert.AreEqual("Item4", lv1.Items[0].Text, "#D3");
841 Assert.AreEqual(4, lv1.Items[0].ImageIndex, "#D4");
844 ListViewItem item5 = lv1.Items.Add(text);
845 Assert.AreEqual(item5, lv1.Items[1], "#E1");
847 Assert.AreEqual(string.Empty, lv1.Items[1].Name, "#E2");
849 Assert.AreEqual(string.Empty, lv1.Items[1].Text, "#E3");
851 ListViewItem item6 = lv1.Items.Add(null, 5);
852 Assert.AreEqual(item6, lv1.Items[2], "#F1");
854 Assert.AreEqual(string.Empty, lv1.Items[2].Name, "#F2");
856 Assert.AreEqual(string.Empty, lv1.Items[2].Text, "#F3");
857 Assert.AreEqual(5, lv1.Items[2].ImageIndex, "#F4");
859 ListViewItem item1 = lv1.Items.Add("ItemKey1", "Item1", 1);
860 Assert.AreEqual(item1, lv1.Items[3], "#A1");
861 Assert.AreEqual("ItemKey1", lv1.Items[3].Name, "#A2");
862 Assert.AreEqual("Item1", lv1.Items[3].Text, "#A3");
863 Assert.AreEqual(1, lv1.Items[3].ImageIndex, "#A4");
865 ListViewItem item2 = lv1.Items.Add("ItemKey2", "Item2", "Image2");
866 Assert.AreEqual(item2, lv1.Items[4], "#B1");
867 Assert.AreEqual("ItemKey2", lv1.Items[4].Name, "#B2");
868 Assert.AreEqual("Item2", lv1.Items[4].Text, "#B3");
869 Assert.AreEqual("Image2", lv1.Items[4].ImageKey, "#B4");
871 ListViewItem item3 = lv1.Items.Add("Item3", "Image3");
872 Assert.AreEqual(item3, lv1.Items[5], "#C1");
873 Assert.AreEqual(string.Empty, lv1.Items[5].Name, "#C2");
874 Assert.AreEqual("Item3", lv1.Items[5].Text, "#C3");
875 Assert.AreEqual("Image3", lv1.Items[5].ImageKey, "#C4");
877 ListViewItem item7 = lv1.Items.Add(null, "Item6", 6);
878 Assert.AreEqual(item7, lv1.Items[6], "#G1");
879 Assert.AreEqual(string.Empty, lv1.Items[6].Name, "#G2");
880 Assert.AreEqual("Item6", lv1.Items[6].Text, "#G3");
881 Assert.AreEqual(6, lv1.Items[6].ImageIndex, "#G4");
883 ListViewItem item8 = lv1.Items.Add("ItemKey7", null, 7);
884 Assert.AreEqual(item8, lv1.Items[7], "#H1");
885 Assert.AreEqual("ItemKey7", lv1.Items[7].Name, "#H2");
886 Assert.AreEqual(string.Empty, lv1.Items[7].Text, "#H3");
887 Assert.AreEqual(7, lv1.Items[7].ImageIndex, "#H4");
889 ListViewItem item9 = lv1.Items.Add("ItemKey8", "Item8", null);
890 Assert.AreEqual(item9, lv1.Items[8], "#I1");
891 Assert.AreEqual("ItemKey8", lv1.Items[8].Name, "#I2");
892 Assert.AreEqual("Item8", lv1.Items[8].Text, "#I3");
893 Assert.AreEqual(string.Empty, lv1.Items[8].ImageKey, "#I4");
898 public void ListViewItemCollectionTest_AddRange ()
900 ListView lv1 = new ListView ();
901 ListViewItem item1 = new ListViewItem ("Item1");
902 ListViewItem item2 = new ListViewItem ("Item2");
903 ListViewItem item3 = new ListViewItem ("Item3");
904 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
906 Assert.AreSame (item1, lv1.Items[0], "#A1");
907 Assert.AreEqual (0, item1.Index, "#A2");
908 Assert.AreSame (lv1, item1.ListView, "#A3");
910 Assert.AreSame (item2, lv1.Items[1], "#B1");
911 Assert.AreEqual (1, item2.Index, "#B2");
912 Assert.AreSame (lv1, item2.ListView, "#B3");
914 Assert.AreSame (item3, lv1.Items[2], "#C1");
915 Assert.AreEqual (2, item3.Index, "#C2");
916 Assert.AreSame (lv1, item3.ListView, "#C3");
920 public void ListViewItemCollectionTest_AddRange_Count ()
922 ListView lv1 = new ListView ();
923 ListViewItem item1 = new ListViewItem ("Item1");
924 ListViewItem item2 = new ListViewItem ("Item2");
925 ListViewItem item3 = new ListViewItem ("Item3");
927 lv1.Items.Add ("Item4");
928 Assert.AreEqual (1, lv1.Items.Count, "#A1");
929 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
930 Assert.AreEqual (4, lv1.Items.Count, "#A1");
934 [ExpectedException(typeof(ArgumentNullException))]
935 public void ListViewItemCollectionTest_AddRange_NullException ()
937 ListView lv1 = new ListView ();
938 ListViewItem[] value = null;
939 lv1.Items.AddRange (value);
943 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
944 public void ListViewItemCollectionTest_AddRange_OwnedItem ()
946 //MSDN told us, we can use this method to reuse items from a different ListView control. That is not true.
947 ListView lv1 = new ListView ();
948 ListView lv2 = new ListView ();
949 ListViewItem a = lv1.Items.Add ("Item1");
950 ListViewItem b = lv1.Items.Add ("Item2");
952 lv2.Items.AddRange (new ListViewItem[] { a, b });
956 [ExpectedException(typeof(ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
957 public void ListViewItemCollectionTest_AddRange_ExistingItem ()
959 ListView lv1 = new ListView ();
960 ListViewItem item1 = lv1.Items.Add ("Item1");
961 lv1.Items.Add (item1);
965 public void ListViewItemCollectionTest_Clear ()
967 ListView lvw = new ListView ();
968 ListViewItem itemA = lvw.Items.Add ("A");
969 ListViewItem itemB = lvw.Items.Add ("B");
971 Assert.AreEqual (2, lvw.Items.Count, "#A1");
972 Assert.AreSame (lvw, itemA.ListView, "#A2");
973 Assert.AreSame (lvw, itemB.ListView, "#A3");
977 Assert.AreEqual (0, lvw.Items.Count, "#B1");
978 Assert.IsNull (itemA.ListView, "#B2");
979 Assert.IsNull (itemB.ListView, "#B3");
983 public void ListViewItemCollectionTest_Insert ()
985 ListView lvw = new ListView ();
986 ListViewItem item = new ListViewItem ("Title");
987 ListViewItem newItem = lvw.Items.Insert (0, item);
988 Assert.AreSame (newItem, item, "#A1");
989 Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
990 Assert.AreSame (newItem, lvw.Items [0], "#A3");
991 Assert.AreSame (lvw, newItem.ListView, "#A4");
993 newItem = lvw.Items.Insert (1, "A title");
994 Assert.AreEqual ("A title", newItem.Text, "#B1");
995 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
996 Assert.AreEqual (1, newItem.Index, "#B3");
997 Assert.AreSame (newItem, lvw.Items [1], "#B4");
998 Assert.AreSame (lvw, newItem.ListView, "#B5");
999 Assert.AreEqual (0, item.Index, "#B6");
1000 Assert.AreSame (item, lvw.Items [0], "#B7");
1002 newItem = lvw.Items.Insert (0, "Other title");
1003 Assert.AreEqual ("Other title", newItem.Text, "#C1");
1004 Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
1005 Assert.AreEqual (0, newItem.Index, "#C3");
1006 Assert.AreSame (newItem, lvw.Items [0], "#C4");
1007 Assert.AreSame (lvw, newItem.ListView, "#C5");
1008 Assert.AreEqual (1, item.Index, "#C6");
1009 Assert.AreSame (item, lvw.Items [1], "#C7");
1011 newItem = lvw.Items.Insert (3, "Some title", 4);
1012 Assert.AreEqual ("Some title", newItem.Text, "#D1");
1013 Assert.AreEqual (4, newItem.ImageIndex, "#D2");
1014 Assert.AreEqual (3, newItem.Index, "#D3");
1015 Assert.AreSame (newItem, lvw.Items [3], "#D4");
1016 Assert.AreSame (lvw, newItem.ListView, "#D5");
1017 Assert.AreEqual (1, item.Index, "#D6");
1018 Assert.AreSame (item, lvw.Items [1], "#D7");
1020 newItem = lvw.Items.Insert (0, "No title", 4);
1021 Assert.AreEqual ("No title", newItem.Text, "#E1");
1022 Assert.AreEqual (4, newItem.ImageIndex, "#E2");
1023 Assert.AreEqual (0, newItem.Index, "#E3");
1024 Assert.AreSame (newItem, lvw.Items [0], "#E4");
1025 Assert.AreSame (lvw, newItem.ListView, "#E5");
1026 Assert.AreEqual (2, item.Index, "#E6");
1027 Assert.AreSame (item, lvw.Items [2], "#E7");
1031 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
1032 public void ListViewItemCollectionTest_Insert_ExistingItem ()
1034 ListView lvw = new ListView ();
1035 ListViewItem itemA = lvw.Items.Add ("A");
1036 lvw.Items.Insert (0, itemA);
1040 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
1041 public void ListViewItemCollectionTest_Insert_OwnedItem ()
1043 ListView lv1 = new ListView ();
1044 ListView lv2 = new ListView ();
1045 ListViewItem item = lv1.Items.Add ("A");
1046 lv2.Items.Insert (0, item);
1050 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
1051 public void ListViewItemCollectionTest_Indexer_OwnedItem ()
1053 ListView lv1 = new ListView ();
1054 ListView lv2 = new ListView ();
1055 ListViewItem item = lv1.Items.Add ("A");
1057 lv2.Items.Add ("Dummy");
1058 lv2.Items[0] = item;
1062 public void ListViewItemCollectionTest_Remove ()
1064 Form form = new Form ();
1065 form.ShowInTaskbar = false;
1066 ListView lvw = new ListView ();
1067 form.Controls.Add (lvw);
1068 lvw.MultiSelect = true;
1069 lvw.CheckBoxes = true;
1073 ListViewItem itemA = lvw.Items.Add ("A");
1074 ListViewItem itemB = lvw.Items.Add ("B");
1075 lvw.Items.Add ("C");
1076 ListViewItem itemD = lvw.Items.Add ("D");
1078 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1079 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1080 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1082 itemB.Checked = true;
1083 itemD.Checked = true;
1085 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1086 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1087 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1088 Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
1089 Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
1091 itemD.Selected = true;
1093 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1094 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1095 Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
1096 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1097 Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
1098 Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
1100 lvw.Items.Remove (itemB);
1102 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1103 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1104 Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
1105 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1106 Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
1108 lvw.Items.Remove (itemA);
1110 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1111 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1112 Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
1113 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1114 Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
1116 Assert.IsNull (itemA.ListView, "#F1");
1117 Assert.IsNull (itemB.ListView, "#F2");
1118 Assert.AreSame (lvw, itemD.ListView, "#F3");
1124 public void ListViewItemCollectionTest_RemoveAt ()
1126 Form form = new Form ();
1127 form.ShowInTaskbar = false;
1128 ListView lvw = new ListView ();
1129 form.Controls.Add (lvw);
1130 lvw.MultiSelect = true;
1131 lvw.CheckBoxes = true;
1133 ListViewItem itemA = lvw.Items.Add ("A");
1134 ListViewItem itemB = lvw.Items.Add ("B");
1135 ListViewItem itemC = lvw.Items.Add ("C");
1136 ListViewItem itemD = lvw.Items.Add ("D");
1140 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1141 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1142 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1144 lvw.Items [1].Checked = true;
1145 lvw.Items [3].Checked = true;
1147 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1148 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1149 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1150 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
1151 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
1153 lvw.Items [3].Selected = true;
1155 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1156 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1157 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
1158 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1159 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
1160 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
1162 lvw.Items.RemoveAt (1);
1164 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1165 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1166 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
1167 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1168 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
1170 lvw.Items.RemoveAt (0);
1172 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1173 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1174 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
1175 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1176 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
1178 Assert.IsNull (itemA.ListView, "#F1");
1179 Assert.IsNull (itemB.ListView, "#F2");
1180 Assert.AreSame (lvw, itemC.ListView, "#F3");
1181 Assert.AreSame (lvw, itemD.ListView, "#F4");
1188 public void ListViewItemCollectionTest_RemoveByKey ()
1190 ListView lvw = new ListView ();
1191 ListViewItem lvi1 = new ListViewItem ("A");
1192 lvi1.Name = "A name";
1193 ListViewItem lvi2 = new ListViewItem ("B");
1194 lvi2.Name = "B name";
1195 ListViewItem lvi3 = new ListViewItem ("C");
1196 lvi3.Name = "Same name";
1197 ListViewItem lvi4 = new ListViewItem ("D");
1198 lvi4.Name = "Same name";
1199 ListViewItem lvi5 = new ListViewItem ("E");
1200 lvi5.Name = String.Empty;
1201 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1203 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1205 lvw.Items.RemoveByKey ("B name");
1206 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1207 Assert.AreSame (lvi1, lvw.Items [0], "#B2");
1208 Assert.AreSame (lvi3, lvw.Items [1], "#B3");
1209 Assert.AreSame (lvi4, lvw.Items [2], "#B4");
1210 Assert.AreSame (lvi5, lvw.Items [3], "#B5");
1212 lvw.Items.RemoveByKey ("Same name");
1213 Assert.AreEqual (3, lvw.Items.Count, "#C1");
1214 Assert.AreSame (lvi1, lvw.Items [0], "#C2");
1215 Assert.AreSame (lvi4, lvw.Items [1], "#C3");
1216 Assert.AreSame (lvi5, lvw.Items [2], "#C4");
1218 lvw.Items.RemoveByKey ("a NAME");
1219 Assert.AreEqual (2, lvw.Items.Count, "#D1");
1220 Assert.AreSame (lvi4, lvw.Items [0], "#D2");
1221 Assert.AreSame (lvi5, lvw.Items [1], "#D3");
1223 lvw.Items.RemoveByKey (String.Empty);
1224 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1225 Assert.AreSame (lvi4, lvw.Items [0], "#E2");
1226 Assert.AreSame (lvi5, lvw.Items [1], "#E3");
1228 Assert.IsNull (lvi1.ListView, "#F1");
1229 Assert.IsNull (lvi2.ListView, "#F2");
1230 Assert.IsNull (lvi3.ListView, "#F3");
1231 Assert.AreSame (lvw, lvi4.ListView, "#F4");
1232 Assert.AreSame (lvw, lvi5.ListView, "#F5");
1236 public void ListViewItemCollectionTest_IndexOfKey ()
1238 ListView lvw = new ListView ();
1239 ListViewItem lvi1 = new ListViewItem ("A");
1240 lvi1.Name = "A name";
1241 ListViewItem lvi2 = new ListViewItem ("B");
1242 lvi2.Name = "Same name";
1243 ListViewItem lvi3 = new ListViewItem ("C");
1244 lvi3.Name = "Same name";
1245 ListViewItem lvi4 = new ListViewItem ("D");
1246 lvi4.Name = String.Empty;
1247 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1249 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1250 Assert.AreEqual (-1, lvw.Items.IndexOfKey (String.Empty), "#A2");
1251 Assert.AreEqual (-1, lvw.Items.IndexOfKey (null), "#A3");
1252 Assert.AreEqual (0, lvw.Items.IndexOfKey ("A name"), "#A4");
1253 Assert.AreEqual (0, lvw.Items.IndexOfKey ("a NAME"), "#A5");
1254 Assert.AreEqual (1, lvw.Items.IndexOfKey ("Same name"), "#A6");
1256 ListViewItem lvi5 = new ListViewItem ("E");
1257 lvw.Items.Add (lvi5);
1258 lvi5.Name = "E name";
1260 Assert.AreEqual (4, lvw.Items.IndexOfKey ("E name"), "#B1");
1264 public void ListViewItemCollectionTest_Indexer ()
1266 ListView lvw = new ListView ();
1267 ListViewItem lvi1 = new ListViewItem ("A");
1268 lvi1.Name = "A name";
1269 ListViewItem lvi2 = new ListViewItem ("B");
1270 lvi2.Name = "Same name";
1271 ListViewItem lvi3 = new ListViewItem ("C");
1272 lvi3.Name = "Same name";
1273 ListViewItem lvi4 = new ListViewItem ("D");
1274 lvi4.Name = String.Empty;
1275 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1277 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1278 Assert.AreEqual (null, lvw.Items [String.Empty], "#A2");
1279 Assert.AreEqual (null, lvw.Items [null], "#A3");
1280 Assert.AreSame (lvi1, lvw.Items ["A name"], "#A4");
1281 Assert.AreSame (lvi1, lvw.Items ["a NAME"], "#A5");
1282 Assert.AreSame (lvi2, lvw.Items ["Same name"], "#A6");
1284 ListViewItem lvi5 = new ListViewItem ("E");
1285 lvw.Items.Add (lvi5);
1286 lvi5.Name = "E name";
1288 Assert.AreSame (lvi5, lvw.Items ["E name"], "#B1");
1292 public void ListViewItemCollectionTest_ContainsKey ()
1294 ListView lvw = new ListView();
1295 ListViewItem lvi1 = new ListViewItem("A");
1296 lvi1.Name = "A name";
1297 ListViewItem lvi2 = new ListViewItem("B");
1298 lvi2.Name = "B name";
1299 ListViewItem lvi3 = new ListViewItem("D");
1300 lvi3.Name = String.Empty;
1301 lvw.Items.AddRange(new ListViewItem[] { lvi1, lvi2, lvi3 });
1303 Assert.AreEqual(3, lvw.Items.Count, "#A1");
1304 Assert.AreEqual(false, lvw.Items.ContainsKey (String.Empty), "#A2");
1305 Assert.AreEqual(false, lvw.Items.ContainsKey (null), "#A3");
1306 Assert.AreEqual(true, lvw.Items.ContainsKey ("A name"), "#A4");
1307 Assert.AreEqual(true, lvw.Items.ContainsKey ("a NAME"), "#A5");
1308 Assert.AreEqual(true, lvw.Items.ContainsKey ("B name"), "#A6");
1310 ListViewItem lvi5 = new ListViewItem("E");
1311 lvw.Items.Add(lvi5);
1312 lvi5.Name = "E name";
1314 Assert.AreEqual(true, lvw.Items.ContainsKey ("E name"), "#B1");
1318 public void ListViewItemCollectionTest_Find ()
1320 ListView lvw = new ListView ();
1321 ListViewItem lvi1 = new ListViewItem ("A");
1322 lvi1.Name = "A name";
1323 ListViewItem lvi2 = new ListViewItem ("B");
1324 lvi2.Name = "a NAME";
1325 ListViewItem lvi3 = new ListViewItem ("C");
1326 lvi3.Name = "a NAME";
1327 ListViewItem lvi4 = new ListViewItem ("D");
1328 lvi4.Name = String.Empty;
1329 ListViewItem lvi5 = new ListViewItem ("F");
1330 lvi5.Name = String.Empty;
1331 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1333 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1335 ListViewItem [] items = lvw.Items.Find ("A name", false);
1336 Assert.AreEqual (3, items.Length, "#B11");
1337 Assert.AreSame (lvi1, items [0], "#B2");
1338 Assert.AreSame (lvi2, items [1], "#B3");
1339 Assert.AreSame (lvi3, items [2], "#B4");
1341 items = lvw.Items.Find (String.Empty, false);
1342 Assert.AreEqual (2, items.Length, "#B1");
1343 Assert.AreSame (lvi4, items [0], "#B2");
1344 Assert.AreSame (lvi5, items [1], "#B3");
1346 Assert.AreEqual (0, lvw.Items.Find (null, false).Length, "#C1");
1350 public void ListViewSubItemCollectionTest_ContainsKey ()
1352 ListViewItem lvi = new ListViewItem ("A");
1353 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1354 si1.Name = "A name";
1355 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1356 si2.Name = "B name";
1357 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1358 si3.Name = String.Empty;
1359 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3 });
1361 Assert.AreEqual (4, lvi.SubItems.Count, "#A1");
1362 Assert.AreEqual (false, lvi.SubItems.ContainsKey (String.Empty), "#A2");
1363 Assert.AreEqual (false, lvi.SubItems.ContainsKey (null), "#A3");
1364 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("A name"), "#A4");
1365 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("a NAME"), "#A5");
1366 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("B name"), "#A6");
1368 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1369 lvi.SubItems.Add (si5);
1370 si5.Name = "E name";
1372 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("E name"), "#B1");
1376 public void ListViewSubItemCollectionTest_IndexOfKey ()
1378 ListViewItem lvi = new ListViewItem ();
1379 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1380 si1.Name = "A name";
1381 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1382 si2.Name = "Same name";
1383 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1384 si3.Name = "Same name";
1385 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1386 si4.Name = String.Empty;
1387 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1389 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1390 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (String.Empty), "#A2");
1391 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (null), "#A3");
1392 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("A name"), "#A4");
1393 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("a NAME"), "#A5");
1394 Assert.AreEqual (2, lvi.SubItems.IndexOfKey ("Same name"), "#A6");
1396 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1397 lvi.SubItems.Add (si5);
1398 si5.Name = "E name";
1400 Assert.AreEqual (5, lvi.SubItems.IndexOfKey ("E name"), "#B1");
1404 public void ListViewSubItemCollectionTest_RemoveByKey ()
1406 ListViewItem lvi = new ListViewItem ();
1407 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1408 si1.Name = "A name";
1409 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1410 si2.Name = "B name";
1411 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1412 si3.Name = "Same name";
1413 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1414 si4.Name = "Same name";
1415 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1416 si5.Name = String.Empty;
1417 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4, si5 });
1419 Assert.AreEqual (6, lvi.SubItems.Count, "#A1");
1421 lvi.SubItems.RemoveByKey ("B name");
1422 Assert.AreEqual (5, lvi.SubItems.Count, "#B1");
1423 Assert.AreSame (si1, lvi.SubItems [1], "#B2");
1424 Assert.AreSame (si3, lvi.SubItems [2], "#B3");
1425 Assert.AreSame (si4, lvi.SubItems [3], "#B4");
1426 Assert.AreSame (si5, lvi.SubItems [4], "#B5");
1428 lvi.SubItems.RemoveByKey ("Same name");
1429 Assert.AreEqual (4, lvi.SubItems.Count, "#C1");
1430 Assert.AreSame (si1, lvi.SubItems [1], "#C2");
1431 Assert.AreSame (si4, lvi.SubItems [2], "#C3");
1432 Assert.AreSame (si5, lvi.SubItems [3], "#C4");
1434 lvi.SubItems.RemoveByKey ("a NAME");
1435 Assert.AreEqual (3, lvi.SubItems.Count, "#D1");
1436 Assert.AreSame (si4, lvi.SubItems [1], "#D2");
1437 Assert.AreSame (si5, lvi.SubItems [2], "#D3");
1439 lvi.SubItems.RemoveByKey (String.Empty);
1440 Assert.AreEqual (3, lvi.SubItems.Count, "#E1");
1441 Assert.AreSame (si4, lvi.SubItems [1], "#E2");
1442 Assert.AreSame (si5, lvi.SubItems [2], "#E3");
1446 public void ListViewSubItemCollectionTest_Indexer ()
1448 ListViewItem lvi = new ListViewItem ();
1449 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1450 si1.Name = "A name";
1451 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1452 si2.Name = "Same name";
1453 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1454 si3.Name = "Same name";
1455 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1456 si4.Name = String.Empty;
1457 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1459 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1460 Assert.AreEqual (null, lvi.SubItems [String.Empty], "#A2");
1461 Assert.AreEqual (null, lvi.SubItems [null], "#A3");
1462 Assert.AreEqual (si1, lvi.SubItems ["A name"], "#A4");
1463 Assert.AreEqual (si1, lvi.SubItems ["a NAME"], "#A5");
1464 Assert.AreEqual (si2, lvi.SubItems ["Same name"], "#A6");
1466 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1467 lvi.SubItems.Add (si5);
1468 si5.Name = "E name";
1470 Assert.AreEqual (si5, lvi.SubItems ["E name"], "#B1");