2007-01-10 Chris Toshok <toshok@ximian.com>
[mono-project.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ListViewCollectionsTest.cs
blobc47184bf6cbfd1543c56f2de6fd329ba23991bf7
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:
8 //
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)
22 // Author:
23 // Jordi Mas i Hernandez <jordi@ximian.com>
27 using System;
28 using System.Windows.Forms;
29 using System.Drawing;
30 using System.Reflection;
31 using System.Collections;
32 using NUnit.Framework;
34 namespace MonoTests.System.Windows.Forms
36 [TestFixture]
37 public class ListViewCollectionsTest
40 ColumnHeaderCollection
42 [Test]
43 public void ColumnHeaderCollectionTest_PropertiesTest ()
45 ListView listview = new ListView ();
47 // Properties
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");
55 [Test]
56 public void ColumnHeaderCollectionTest_AddTest ()
58 ListView listview = new ListView ();
60 // Duplicated elements with same text added
61 listview.Columns.Add (new ColumnHeader ());
62 listview.Columns.Add (new ColumnHeader ());
63 Assert.AreEqual (2, listview.Columns.Count, "ColumnHeaderCollectionTest_AddTest#1");
64 Assert.AreEqual ("ColumnHeader", listview.Columns[0].Text, "ColumnHeaderCollectionTest_AddTest#2");
67 [Test]
68 public void ColumnHeaderCollectionTest_ClearTest ()
70 ListView listview = new ListView ();
72 // Duplicated elements with same text added
73 listview.Columns.Add (new ColumnHeader ());
74 listview.Columns.Clear ();
75 Assert.AreEqual (0, listview.Columns.Count, "ColumnHeaderCollectionTest_ClearTest#1");
78 // Exceptions
79 [Test, ExpectedException (typeof (ArgumentOutOfRangeException))]
80 public void ColumnHeaderCollectionTest_GetItem_ExceptionTest ()
82 // Duplicated elements not added
83 ListView listview = new ListView ();
84 ColumnHeader item = listview.Columns[5];
85 Assert.Fail ("#1: " + item.Text); // avoid CS0219 warning
89 CheckedIndexCollection
91 [Test]
92 public void CheckedIndexCollectionTest_PropertiesTest ()
94 ListView listview = new ListView ();
96 // Properties
97 Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
98 Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
99 Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
100 Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
101 Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
105 // Exceptions
106 [Test, ExpectedException (typeof (NotSupportedException))]
107 public void CheckedIndexCollectionTest_Add_ExceptionTest ()
109 ListView listview = new ListView ();
110 ((IList)listview.CheckedIndices).Add (5);
113 [Test, ExpectedException (typeof (NotSupportedException))]
114 public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
116 ListView listview = new ListView ();
117 ((IList)listview.CheckedIndices).Remove (5);
120 [Test, ExpectedException (typeof (NotSupportedException))]
121 public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
123 ListView listview = new ListView ();
124 ((IList)listview.CheckedIndices).RemoveAt (5);
128 CheckedItemCollection
130 [Test]
131 public void CheckedItemCollectionTest_PropertiesTest ()
133 ListView listview = new ListView ();
135 // Properties
136 Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
137 Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
138 Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
139 Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
140 Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
144 // Exceptions
145 [Test, ExpectedException (typeof (NotSupportedException))]
146 public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
148 ListView listview = new ListView ();
149 ((IList)listview.CheckedItems).Add (5);
152 [Test]
153 public void CheckedItemCollectionTest_Order ()
155 Form form = new Form ();
156 form.ShowInTaskbar = false;
157 ListView lvw = new ListView ();
158 lvw.CheckBoxes = true;
159 form.Controls.Add (lvw);
160 ListViewItem itemA = lvw.Items.Add ("A");
161 itemA.Checked = true;
162 ListViewItem itemB = lvw.Items.Add ("B");
163 itemB.Checked = true;
164 ListViewItem itemC = lvw.Items.Add ("C");
165 itemC.Checked = true;
167 Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
168 Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
169 Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
170 Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
172 itemB.Checked = false;
174 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
175 Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
176 Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
178 itemB.Checked = true;
180 Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
181 Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
182 Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
183 Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
185 lvw.Sorting = SortOrder.Descending;
187 Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
188 Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
189 Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
190 Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
192 // sorting only takes effect when listview is created
193 form.Show ();
195 Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
196 Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
197 Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
198 Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
199 form.Dispose ();
202 [Test, ExpectedException (typeof (NotSupportedException))]
203 public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
205 ListView listview = new ListView ();
206 ((IList)listview.CheckedItems).Remove (5);
209 [Test, ExpectedException (typeof (NotSupportedException))]
210 public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
212 ListView listview = new ListView ();
213 ((IList)listview.CheckedItems).RemoveAt (5);
217 SelectedIndexCollection
219 [Test]
220 public void SelectedIndexCollectionTest_PropertiesTest ()
222 ListView listview = new ListView ();
224 // Properties
225 #if !NET_2_0
226 Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
227 Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
228 #else
229 Assert.AreEqual (false, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
230 Assert.AreEqual (false, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
231 #endif
232 Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
233 Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
234 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
237 #if NET_2_0
238 [Test]
239 public void SelectedIndexCollectionTest_AddTest ()
241 ListView listview = new ListView ();
242 listview.Items.Add ("A");
244 int n = listview.SelectedIndices.Add (0);
245 Assert.AreEqual (0, n, "SelectedIndexCollectionTest_AddTest#1");
246 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#2");
248 // Force to create the handle
249 listview.CreateControl ();
250 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#4");
252 n = listview.SelectedIndices.Add (0);
253 Assert.AreEqual (1, n, "SelectedIndexCollectionTest_AddTest#5");
254 Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#6");
255 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#7");
258 [Test]
259 public void SelectedIndexCollectionTest_ClearTest ()
261 ListView listview = new ListView ();
262 listview.Items.Add ("A");
263 listview.Items.Add ("B");
264 listview.Items.Add ("C");
266 listview.SelectedIndices.Add (0);
267 listview.SelectedIndices.Add (2);
269 // Nothing if handle hasn't been created
270 listview.SelectedIndices.Clear ();
271 Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#2");
272 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#3");
273 Assert.AreEqual (true, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#4");
275 // Force to create the handle
276 listview.CreateControl ();
278 listview.SelectedIndices.Add (0);
279 listview.SelectedIndices.Add (2);
281 listview.SelectedIndices.Clear ();
282 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_ClearTest#5");
283 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#6");
284 Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#7");
285 Assert.AreEqual (false, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#8");
288 [Test]
289 public void SelectedIndexCollectionTest_RemoveTest ()
291 ListView listview = new ListView ();
292 listview.Items.Add ("A");
294 listview.SelectedIndices.Add (0);
295 listview.SelectedIndices.Remove (0);
296 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#1");
297 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#2");
299 // Force to create the handle
300 listview.CreateControl ();
302 listview.SelectedIndices.Add (0);
303 listview.SelectedIndices.Remove (0);
304 Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#3");
305 Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#4");
307 #endif
309 // Exceptions
310 #if !NET_2_0
311 [Test, ExpectedException (typeof (NotSupportedException))]
312 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
314 ListView listview = new ListView ();
315 ((IList)listview.SelectedIndices).Add (5);
318 [Test, ExpectedException (typeof (NotSupportedException))]
319 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
321 ListView listview = new ListView ();
322 ((IList)listview.SelectedIndices).Remove (5);
324 #endif
326 [Test, ExpectedException (typeof (NotSupportedException))]
327 public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
329 ListView listview = new ListView ();
330 ((IList)listview.SelectedIndices).RemoveAt (5);
333 #if NET_2_0
334 [Test]
335 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
337 ListView listview = new ListView ();
338 try {
339 listview.SelectedIndices.Remove (-1);
340 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#1");
341 } catch (ArgumentOutOfRangeException) {
344 try {
345 listview.SelectedIndices.Remove (listview.Items.Count);
346 Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#2");
347 } catch (ArgumentOutOfRangeException) {
351 [Test]
352 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
354 ListView listview = new ListView ();
355 try {
356 listview.SelectedIndices.Add (-1);
357 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#1");
358 } catch (ArgumentOutOfRangeException) {
361 try {
362 listview.SelectedIndices.Add (listview.Items.Count);
363 Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#2");
364 } catch (ArgumentOutOfRangeException) {
367 #endif
370 SelectedItemCollection
372 [Test]
373 public void SelectedItemCollectionTest_PropertiesTest ()
375 ListView listview = new ListView ();
377 // Properties
378 Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
379 Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
380 Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
381 Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
382 Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
386 // Exceptions
387 [Test, ExpectedException (typeof (NotSupportedException))]
388 public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
390 ListView listview = new ListView ();
391 ((IList)listview.SelectedItems).Add (5);
394 [Test, ExpectedException (typeof (NotSupportedException))]
395 public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
397 ListView listview = new ListView ();
398 ((IList)listview.SelectedItems).Remove (5);
401 [Test, ExpectedException (typeof (NotSupportedException))]
402 public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
404 ListView listview = new ListView ();
405 ((IList)listview.SelectedItems).RemoveAt (5);
408 [Test]
409 public void SelectedItemCollectionTest_Clear ()
411 Form form = new Form ();
412 form.ShowInTaskbar = false;
413 ListView lvw = new ListView ();
414 form.Controls.Add (lvw);
415 ListViewItem item = lvw.Items.Add ("Title");
416 item.Selected = true;
418 lvw.SelectedItems.Clear ();
420 Assert.IsTrue (item.Selected, "#A1");
421 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
422 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
424 form.Show ();
426 Assert.IsTrue (item.Selected, "#B1");
427 Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
428 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
430 // once listview is created, clear DOES have effect
431 lvw.SelectedItems.Clear ();
433 Assert.IsFalse (item.Selected, "#C1");
434 Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
435 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
436 form.Dispose ();
439 [Test]
440 public void SelectedItemCollectionTest_Contains ()
442 Form form = new Form ();
443 form.ShowInTaskbar = false;
444 ListView lvw = new ListView ();
445 form.Controls.Add (lvw);
446 ListViewItem item = lvw.Items.Add ("Title");
447 item.Selected = true;
448 IList list = (IList) lvw.SelectedItems;
450 Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
451 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
452 Assert.IsFalse (list.Contains (item), "#A3");
453 Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
455 form.Show ();
457 Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
458 Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
459 Assert.IsTrue (list.Contains (item), "#B3");
460 Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
461 form.Dispose ();
464 [Test]
465 public void SelectedItemCollectionTest_CopyTo ()
467 Form form = new Form ();
468 form.ShowInTaskbar = false;
469 ListView lvw = new ListView ();
470 form.Controls.Add (lvw);
471 ListViewItem item = lvw.Items.Add ("Title");
472 item.Selected = true;
473 IList list = (IList) lvw.SelectedItems;
474 Assert.IsNotNull (list, "#A1");
475 ListViewItem [] items = new ListViewItem [1];
477 lvw.SelectedItems.CopyTo (items, 0);
478 Assert.IsNull (items [0], "#A2");
479 lvw.SelectedItems.CopyTo (items, 455);
481 form.Show ();
483 lvw.SelectedItems.CopyTo (items, 0);
484 Assert.AreSame (item, items [0], "#B1");
485 try {
486 lvw.SelectedItems.CopyTo (items, 455);
487 Assert.Fail ("#B2");
488 } catch (ArgumentException) {
490 form.Dispose ();
493 [Test]
494 public void SelectedItemCollectionTest_Count ()
496 Form form = new Form ();
497 form.ShowInTaskbar = false;
498 ListView lvw = new ListView ();
499 form.Controls.Add (lvw);
500 ListViewItem item = lvw.Items.Add ("Title");
501 item.Selected = true;
503 Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
504 form.Show ();
505 Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
506 form.Dispose ();
509 [Test]
510 public void SelectedItemCollectionTest_GetEnumerator ()
512 Form form = new Form ();
513 form.ShowInTaskbar = false;
514 ListView lvw = new ListView ();
515 form.Controls.Add (lvw);
516 ListViewItem item = lvw.Items.Add ("Title");
517 item.Selected = true;
519 Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
521 form.Show ();
523 Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
525 form.Dispose ();
528 [Test]
529 public void SelectedItemCollectionTest_Indexer ()
531 Form form = new Form ();
532 form.ShowInTaskbar = false;
533 ListView lvw = new ListView ();
534 form.Controls.Add (lvw);
535 ListViewItem item = lvw.Items.Add ("Title");
536 item.Selected = true;
537 IList list = (IList) lvw.SelectedItems;
539 try {
540 ListViewItem x = lvw.SelectedItems [0];
541 Assert.Fail ("#A1: " + x.ToString ());
542 } catch (ArgumentOutOfRangeException) {
545 try {
546 ListViewItem x = list [0] as ListViewItem;
547 Assert.Fail ("#A2: " + x.ToString ());
548 } catch (ArgumentOutOfRangeException) {
551 form.Show ();
553 Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
554 Assert.AreSame (item, list [0], "#B2");
556 form.Dispose ();
559 [Test]
560 public void SelectedItemCollectionTest_IndexOf ()
562 Form form = new Form ();
563 form.ShowInTaskbar = false;
564 ListView lvw = new ListView ();
565 form.Controls.Add (lvw);
566 ListViewItem item = lvw.Items.Add ("Title");
567 item.Selected = true;
568 IList list = (IList) lvw.SelectedItems;
570 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
571 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
572 Assert.AreEqual (-1, list.IndexOf (item), "#A3");
573 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
575 form.Show ();
577 Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
578 Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
579 Assert.AreEqual (0, list.IndexOf (item), "#B3");
580 Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
582 form.Dispose ();
585 #if NET_2_0
586 [Test]
587 public void SelectedItemCollectionTest_IndexOfKey ()
589 ListView lvw = new ListView ();
590 ListViewItem lvi1 = new ListViewItem ("A");
591 lvi1.Name = "A name";
592 lvi1.Selected = true;
593 ListViewItem lvi2 = new ListViewItem ("B");
594 lvi2.Name = "Same name";
595 lvi2.Selected = false;
596 ListViewItem lvi3 = new ListViewItem ("C");
597 lvi3.Name = "Same name";
598 lvi3.Selected = true;
599 ListViewItem lvi4 = new ListViewItem ("D");
600 lvi4.Name = String.Empty;
601 lvi4.Selected = true;
602 ListViewItem lvi5 = new ListViewItem ("E");
603 lvi5.Name = "E name";
604 lvi5.Selected = false;
605 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
607 // Force to create the control
608 lvw.CreateControl ();
610 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
611 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (String.Empty), "#A2");
612 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (null), "#A3");
613 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("A name"), "#A4");
614 Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("a NAME"), "#A5");
615 Assert.AreEqual (1, lvw.SelectedItems.IndexOfKey ("Same name"), "#A6");
616 Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey ("E name"), "#A7");
618 ListViewItem lvi6 = new ListViewItem ("F");
619 lvw.Items.Add (lvi6);
620 lvi6.Selected = true;
621 lvi6.Name = "F name";
623 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
624 Assert.AreEqual (3, lvw.SelectedItems.IndexOfKey ("F name"), "#B2");
627 [Test]
628 public void SelectedItemCollectionTest_Indexer2 ()
630 ListView lvw = new ListView ();
631 ListViewItem lvi1 = new ListViewItem ("A");
632 lvi1.Name = "A name";
633 lvi1.Selected = true;
634 ListViewItem lvi2 = new ListViewItem ("B");
635 lvi2.Name = "Same name";
636 lvi2.Selected = false;
637 ListViewItem lvi3 = new ListViewItem ("C");
638 lvi3.Name = "Same name";
639 lvi3.Selected = true;
640 ListViewItem lvi4 = new ListViewItem ("D");
641 lvi4.Name = String.Empty;
642 lvi4.Selected = true;
643 ListViewItem lvi5 = new ListViewItem ("E");
644 lvi5.Name = "E name";
645 lvi5.Selected = false;
646 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
648 // Force to create the control
649 lvw.CreateControl ();
651 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
652 Assert.AreEqual (null, lvw.SelectedItems [String.Empty], "#A2");
653 Assert.AreEqual (null, lvw.SelectedItems [null], "#A3");
654 Assert.AreEqual (lvi1, lvw.SelectedItems ["A name"], "#A4");
655 Assert.AreEqual (lvi1, lvw.SelectedItems ["a NAME"], "#A5");
656 Assert.AreEqual (lvi3, lvw.SelectedItems ["Same name"], "#A6");
657 Assert.AreEqual (null, lvw.SelectedItems ["E name"], "#A7");
659 ListViewItem lvi6 = new ListViewItem ("F");
660 lvw.Items.Add (lvi6);
661 lvi6.Selected = true;
662 lvi6.Name = "F name";
664 Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
665 Assert.AreEqual (lvi6, lvw.SelectedItems ["F name"], "#B2");
667 #endif
669 [Test]
670 public void SelectedItemCollectionTest_Order ()
672 Form form = new Form ();
673 form.ShowInTaskbar = false;
674 ListView lvw = new ListView ();
675 lvw.MultiSelect = true;
676 form.Controls.Add (lvw);
677 ListViewItem itemA = lvw.Items.Add ("A");
678 itemA.Selected = true;
679 ListViewItem itemB = lvw.Items.Add ("B");
680 itemB.Selected = true;
681 ListViewItem itemC = lvw.Items.Add ("C");
682 itemC.Selected = true;
684 form.Show ();
686 Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
687 Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
688 Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
689 Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
691 itemB.Selected = false;
693 Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
694 Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
695 Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
697 itemB.Selected = true;
699 Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
700 Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
701 Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
702 Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
704 lvw.Sorting = SortOrder.Descending;
706 Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
707 Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
708 Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
709 Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
711 form.Dispose ();
715 ListViewItemCollection
718 [Test]
719 public void ListViewItemCollectionTest_Add ()
721 ListView lvw = new ListView ();
722 ListViewItem item = new ListViewItem ("Title");
723 ListViewItem newItem = lvw.Items.Add (item);
724 Assert.AreSame (newItem, item, "#A1");
725 Assert.AreEqual (0, item.Index, "#A2");
726 Assert.AreSame (item, lvw.Items [0], "#A3");
727 Assert.AreSame (lvw, item.ListView, "#A4");
729 newItem = lvw.Items.Add ("A title");
730 Assert.AreEqual ("A title", newItem.Text, "#B1");
731 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
732 Assert.AreEqual (1, newItem.Index, "#B3");
733 Assert.AreSame (newItem, lvw.Items [1], "#B4");
734 Assert.AreSame (lvw, newItem.ListView, "#B5");
735 Assert.AreEqual (0, item.Index, "#B6");
736 Assert.AreSame (item, lvw.Items [0], "#B7");
738 newItem = lvw.Items.Add ("A title", 4);
739 Assert.AreEqual ("A title", newItem.Text, "#C1");
740 Assert.AreEqual (4, newItem.ImageIndex, "#C2");
741 Assert.AreEqual (2, newItem.Index, "#C3");
742 Assert.AreSame (newItem, lvw.Items [2], "#C4");
743 Assert.AreSame (lvw, newItem.ListView, "#C5");
744 Assert.AreEqual (0, item.Index, "#C6");
745 Assert.AreSame (item, lvw.Items [0], "#C7");
748 [Test]
749 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
750 public void ListViewItemCollectionTest_Add_ExistingItem ()
752 ListView lvw = new ListView ();
753 ListViewItem itemA = lvw.Items.Add ("A");
754 lvw.Items.Add (itemA);
757 [Test]
758 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
759 public void ListViewItemCollectionTest_Add_OwnedItem ()
761 ListView lv1 = new ListView ();
762 ListView lv2 = new ListView ();
763 ListViewItem item = lv1.Items.Add ("A");
764 lv2.Items.Add (item);
767 [Test]
768 public void ListViewItemCollectionTest_Add_Junk ()
770 ListView lv1 = new ListView ();
772 ListViewItem item4 = lv1.Items.Add("Item4", 4);
773 Assert.AreEqual(item4, lv1.Items[0], "#D1");
774 #if NET_2_0
775 Assert.AreEqual(string.Empty, lv1.Items[0].Name, "#D2");
776 #endif
777 Assert.AreEqual("Item4", lv1.Items[0].Text, "#D3");
778 Assert.AreEqual(4, lv1.Items[0].ImageIndex, "#D4");
780 string text = null;
781 ListViewItem item5 = lv1.Items.Add(text);
782 Assert.AreEqual(item5, lv1.Items[1], "#E1");
783 #if NET_2_0
784 Assert.AreEqual(string.Empty, lv1.Items[1].Name, "#E2");
785 #endif
786 Assert.AreEqual(string.Empty, lv1.Items[1].Text, "#E3");
788 ListViewItem item6 = lv1.Items.Add(null, 5);
789 Assert.AreEqual(item6, lv1.Items[2], "#F1");
790 #if NET_2_0
791 Assert.AreEqual(string.Empty, lv1.Items[2].Name, "#F2");
792 #endif
793 Assert.AreEqual(string.Empty, lv1.Items[2].Text, "#F3");
794 Assert.AreEqual(5, lv1.Items[2].ImageIndex, "#F4");
795 #if NET_2_0
796 ListViewItem item1 = lv1.Items.Add("ItemKey1", "Item1", 1);
797 Assert.AreEqual(item1, lv1.Items[3], "#A1");
798 Assert.AreEqual("ItemKey1", lv1.Items[3].Name, "#A2");
799 Assert.AreEqual("Item1", lv1.Items[3].Text, "#A3");
800 Assert.AreEqual(1, lv1.Items[3].ImageIndex, "#A4");
802 ListViewItem item2 = lv1.Items.Add("ItemKey2", "Item2", "Image2");
803 Assert.AreEqual(item2, lv1.Items[4], "#B1");
804 Assert.AreEqual("ItemKey2", lv1.Items[4].Name, "#B2");
805 Assert.AreEqual("Item2", lv1.Items[4].Text, "#B3");
806 Assert.AreEqual("Image2", lv1.Items[4].ImageKey, "#B4");
808 ListViewItem item3 = lv1.Items.Add("Item3", "Image3");
809 Assert.AreEqual(item3, lv1.Items[5], "#C1");
810 Assert.AreEqual(string.Empty, lv1.Items[5].Name, "#C2");
811 Assert.AreEqual("Item3", lv1.Items[5].Text, "#C3");
812 Assert.AreEqual("Image3", lv1.Items[5].ImageKey, "#C4");
814 ListViewItem item7 = lv1.Items.Add(null, "Item6", 6);
815 Assert.AreEqual(item7, lv1.Items[6], "#G1");
816 Assert.AreEqual(string.Empty, lv1.Items[6].Name, "#G2");
817 Assert.AreEqual("Item6", lv1.Items[6].Text, "#G3");
818 Assert.AreEqual(6, lv1.Items[6].ImageIndex, "#G4");
820 ListViewItem item8 = lv1.Items.Add("ItemKey7", null, 7);
821 Assert.AreEqual(item8, lv1.Items[7], "#H1");
822 Assert.AreEqual("ItemKey7", lv1.Items[7].Name, "#H2");
823 Assert.AreEqual(string.Empty, lv1.Items[7].Text, "#H3");
824 Assert.AreEqual(7, lv1.Items[7].ImageIndex, "#H4");
826 ListViewItem item9 = lv1.Items.Add("ItemKey8", "Item8", null);
827 Assert.AreEqual(item9, lv1.Items[8], "#I1");
828 Assert.AreEqual("ItemKey8", lv1.Items[8].Name, "#I2");
829 Assert.AreEqual("Item8", lv1.Items[8].Text, "#I3");
830 Assert.AreEqual(string.Empty, lv1.Items[8].ImageKey, "#I4");
831 #endif
834 [Test]
835 public void ListViewItemCollectionTest_AddRange ()
837 ListView lv1 = new ListView ();
838 ListViewItem item1 = new ListViewItem ("Item1");
839 ListViewItem item2 = new ListViewItem ("Item2");
840 ListViewItem item3 = new ListViewItem ("Item3");
842 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
844 Assert.AreSame (item1, lv1.Items[0], "#A1");
845 Assert.AreEqual (0, item1.Index, "#A2");
846 Assert.AreSame (lv1, item1.ListView, "#A3");
848 Assert.AreSame (item2, lv1.Items[1], "#B1");
849 Assert.AreEqual (1, item2.Index, "#B2");
850 Assert.AreSame (lv1, item2.ListView, "#B3");
852 Assert.AreSame (item3, lv1.Items[2], "#C1");
853 Assert.AreEqual (2, item3.Index, "#C2");
854 Assert.AreSame (lv1, item3.ListView, "#C3");
857 [Test]
858 public void ListViewItemCollectionTest_AddRange_Count ()
860 ListView lv1 = new ListView ();
861 ListViewItem item1 = new ListViewItem ("Item1");
862 ListViewItem item2 = new ListViewItem ("Item2");
863 ListViewItem item3 = new ListViewItem ("Item3");
865 lv1.Items.Add ("Item4");
866 Assert.AreEqual (1, lv1.Items.Count, "#A1");
867 lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
868 Assert.AreEqual (4, lv1.Items.Count, "#A1");
871 [Test]
872 [ExpectedException(typeof(ArgumentNullException))]
873 public void ListViewItemCollectionTest_AddRange_NullException ()
875 ListView lv1 = new ListView ();
876 ListViewItem[] value = null;
877 lv1.Items.AddRange (value);
880 [Test]
881 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
882 public void ListViewItemCollectionTest_AddRange_OwnedItem ()
884 //MSDN told us, we can use this method to reuse items from a different ListView control. That is not true.
885 ListView lv1 = new ListView ();
886 ListView lv2 = new ListView ();
887 ListViewItem a = lv1.Items.Add ("Item1");
888 ListViewItem b = lv1.Items.Add ("Item2");
890 lv2.Items.AddRange (new ListViewItem[] { a, b });
893 [Test]
894 [ExpectedException(typeof(ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
895 public void ListViewItemCollectionTest_AddRange_ExistingItem ()
897 ListView lv1 = new ListView ();
898 ListViewItem item1 = lv1.Items.Add ("Item1");
899 lv1.Items.Add (item1);
902 [Test]
903 public void ListViewItemCollectionTest_Insert ()
905 ListView lvw = new ListView ();
906 ListViewItem item = new ListViewItem ("Title");
907 ListViewItem newItem = lvw.Items.Insert (0, item);
908 Assert.AreSame (newItem, item, "#A1");
909 Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
910 Assert.AreSame (newItem, lvw.Items [0], "#A3");
911 Assert.AreSame (lvw, newItem.ListView, "#A4");
913 newItem = lvw.Items.Insert (1, "A title");
914 Assert.AreEqual ("A title", newItem.Text, "#B1");
915 Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
916 Assert.AreEqual (1, newItem.Index, "#B3");
917 Assert.AreSame (newItem, lvw.Items [1], "#B4");
918 Assert.AreSame (lvw, newItem.ListView, "#B5");
919 Assert.AreEqual (0, item.Index, "#B6");
920 Assert.AreSame (item, lvw.Items [0], "#B7");
922 newItem = lvw.Items.Insert (0, "Other title");
923 Assert.AreEqual ("Other title", newItem.Text, "#C1");
924 Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
925 Assert.AreEqual (0, newItem.Index, "#C3");
926 Assert.AreSame (newItem, lvw.Items [0], "#C4");
927 Assert.AreSame (lvw, newItem.ListView, "#C5");
928 Assert.AreEqual (1, item.Index, "#C6");
929 Assert.AreSame (item, lvw.Items [1], "#C7");
931 newItem = lvw.Items.Insert (3, "Some title", 4);
932 Assert.AreEqual ("Some title", newItem.Text, "#D1");
933 Assert.AreEqual (4, newItem.ImageIndex, "#D2");
934 Assert.AreEqual (3, newItem.Index, "#D3");
935 Assert.AreSame (newItem, lvw.Items [3], "#D4");
936 Assert.AreSame (lvw, newItem.ListView, "#D5");
937 Assert.AreEqual (1, item.Index, "#D6");
938 Assert.AreSame (item, lvw.Items [1], "#D7");
940 newItem = lvw.Items.Insert (0, "No title", 4);
941 Assert.AreEqual ("No title", newItem.Text, "#E1");
942 Assert.AreEqual (4, newItem.ImageIndex, "#E2");
943 Assert.AreEqual (0, newItem.Index, "#E3");
944 Assert.AreSame (newItem, lvw.Items [0], "#E4");
945 Assert.AreSame (lvw, newItem.ListView, "#E5");
946 Assert.AreEqual (2, item.Index, "#E6");
947 Assert.AreSame (item, lvw.Items [2], "#E7");
950 [Test]
951 [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
952 public void ListViewItemCollectionTest_Insert_ExistingItem ()
954 ListView lvw = new ListView ();
955 ListViewItem itemA = lvw.Items.Add ("A");
956 lvw.Items.Insert (0, itemA);
959 [Test]
960 [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
961 public void ListViewItemCollectionTest_Insert_OwnedItem ()
963 ListView lv1 = new ListView ();
964 ListView lv2 = new ListView ();
965 ListViewItem item = lv1.Items.Add ("A");
966 lv2.Items.Insert (0, item);
969 [Test]
970 [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
971 public void ListViewItemCollectionTest_Indexer_OwnedItem ()
973 ListView lv1 = new ListView ();
974 ListView lv2 = new ListView ();
975 ListViewItem item = lv1.Items.Add ("A");
977 lv2.Items.Add ("Dummy");
978 lv2.Items[0] = item;
981 [Test]
982 public void ListViewItemCollectionTest_Remove ()
984 Form form = new Form ();
985 form.ShowInTaskbar = false;
986 ListView lvw = new ListView ();
987 form.Controls.Add (lvw);
988 lvw.MultiSelect = true;
989 lvw.CheckBoxes = true;
991 form.Show ();
993 ListViewItem itemA = lvw.Items.Add ("A");
994 ListViewItem itemB = lvw.Items.Add ("B");
995 lvw.Items.Add ("C");
996 ListViewItem itemD = lvw.Items.Add ("D");
998 Assert.AreEqual (4, lvw.Items.Count, "#A1");
999 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1000 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1002 itemB.Checked = true;
1003 itemD.Checked = true;
1005 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1006 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1007 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1008 Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
1009 Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
1011 itemD.Selected = true;
1013 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1014 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1015 Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
1016 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1017 Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
1018 Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
1020 lvw.Items.Remove (itemB);
1022 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1023 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1024 Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
1025 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1026 Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
1028 lvw.Items.Remove (itemA);
1030 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1031 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1032 Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
1033 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1034 Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
1036 form.Dispose ();
1039 [Test]
1040 public void ListViewItemCollectionTest_RemoveAt ()
1042 Form form = new Form ();
1043 form.ShowInTaskbar = false;
1044 ListView lvw = new ListView ();
1045 form.Controls.Add (lvw);
1046 lvw.MultiSelect = true;
1047 lvw.CheckBoxes = true;
1048 lvw.Items.Add ("A");
1049 lvw.Items.Add ("B");
1050 lvw.Items.Add ("C");
1051 lvw.Items.Add ("D");
1053 form.Show ();
1055 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1056 Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
1057 Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
1059 lvw.Items [1].Checked = true;
1060 lvw.Items [3].Checked = true;
1062 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1063 Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
1064 Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
1065 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
1066 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
1068 lvw.Items [3].Selected = true;
1070 Assert.AreEqual (4, lvw.Items.Count, "#C1");
1071 Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
1072 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
1073 Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
1074 Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
1075 Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
1077 lvw.Items.RemoveAt (1);
1079 Assert.AreEqual (3, lvw.Items.Count, "#D1");
1080 Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
1081 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
1082 Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
1083 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
1085 lvw.Items.RemoveAt (0);
1087 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1088 Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
1089 Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
1090 Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
1091 Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
1093 form.Dispose ();
1096 #if NET_2_0
1097 [Test]
1098 public void ListViewItemCollectionTest_RemoveByKey ()
1100 ListView lvw = new ListView ();
1101 ListViewItem lvi1 = new ListViewItem ("A");
1102 lvi1.Name = "A name";
1103 ListViewItem lvi2 = new ListViewItem ("B");
1104 lvi2.Name = "B name";
1105 ListViewItem lvi3 = new ListViewItem ("C");
1106 lvi3.Name = "Same name";
1107 ListViewItem lvi4 = new ListViewItem ("D");
1108 lvi4.Name = "Same name";
1109 ListViewItem lvi5 = new ListViewItem ("E");
1110 lvi5.Name = String.Empty;
1111 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1113 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1115 lvw.Items.RemoveByKey ("B name");
1116 Assert.AreEqual (4, lvw.Items.Count, "#B1");
1117 Assert.AreSame (lvi1, lvw.Items [0], "#B2");
1118 Assert.AreSame (lvi3, lvw.Items [1], "#B3");
1119 Assert.AreSame (lvi4, lvw.Items [2], "#B4");
1120 Assert.AreSame (lvi5, lvw.Items [3], "#B5");
1122 lvw.Items.RemoveByKey ("Same name");
1123 Assert.AreEqual (3, lvw.Items.Count, "#C1");
1124 Assert.AreSame (lvi1, lvw.Items [0], "#C2");
1125 Assert.AreSame (lvi4, lvw.Items [1], "#C3");
1126 Assert.AreSame (lvi5, lvw.Items [2], "#C4");
1128 lvw.Items.RemoveByKey ("a NAME");
1129 Assert.AreEqual (2, lvw.Items.Count, "#D1");
1130 Assert.AreSame (lvi4, lvw.Items [0], "#D2");
1131 Assert.AreSame (lvi5, lvw.Items [1], "#D3");
1133 lvw.Items.RemoveByKey (String.Empty);
1134 Assert.AreEqual (2, lvw.Items.Count, "#E1");
1135 Assert.AreSame (lvi4, lvw.Items [0], "#E2");
1136 Assert.AreSame (lvi5, lvw.Items [1], "#E3");
1139 [Test]
1140 public void ListViewItemCollectionTest_IndexOfKey ()
1142 ListView lvw = new ListView ();
1143 ListViewItem lvi1 = new ListViewItem ("A");
1144 lvi1.Name = "A name";
1145 ListViewItem lvi2 = new ListViewItem ("B");
1146 lvi2.Name = "Same name";
1147 ListViewItem lvi3 = new ListViewItem ("C");
1148 lvi3.Name = "Same name";
1149 ListViewItem lvi4 = new ListViewItem ("D");
1150 lvi4.Name = String.Empty;
1151 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1153 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1154 Assert.AreEqual (-1, lvw.Items.IndexOfKey (String.Empty), "#A2");
1155 Assert.AreEqual (-1, lvw.Items.IndexOfKey (null), "#A3");
1156 Assert.AreEqual (0, lvw.Items.IndexOfKey ("A name"), "#A4");
1157 Assert.AreEqual (0, lvw.Items.IndexOfKey ("a NAME"), "#A5");
1158 Assert.AreEqual (1, lvw.Items.IndexOfKey ("Same name"), "#A6");
1160 ListViewItem lvi5 = new ListViewItem ("E");
1161 lvw.Items.Add (lvi5);
1162 lvi5.Name = "E name";
1164 Assert.AreEqual (4, lvw.Items.IndexOfKey ("E name"), "#B1");
1167 [Test]
1168 public void ListViewItemCollectionTest_Indexer ()
1170 ListView lvw = new ListView ();
1171 ListViewItem lvi1 = new ListViewItem ("A");
1172 lvi1.Name = "A name";
1173 ListViewItem lvi2 = new ListViewItem ("B");
1174 lvi2.Name = "Same name";
1175 ListViewItem lvi3 = new ListViewItem ("C");
1176 lvi3.Name = "Same name";
1177 ListViewItem lvi4 = new ListViewItem ("D");
1178 lvi4.Name = String.Empty;
1179 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
1181 Assert.AreEqual (4, lvw.Items.Count, "#A1");
1182 Assert.AreEqual (null, lvw.Items [String.Empty], "#A2");
1183 Assert.AreEqual (null, lvw.Items [null], "#A3");
1184 Assert.AreSame (lvi1, lvw.Items ["A name"], "#A4");
1185 Assert.AreSame (lvi1, lvw.Items ["a NAME"], "#A5");
1186 Assert.AreSame (lvi2, lvw.Items ["Same name"], "#A6");
1188 ListViewItem lvi5 = new ListViewItem ("E");
1189 lvw.Items.Add (lvi5);
1190 lvi5.Name = "E name";
1192 Assert.AreSame (lvi5, lvw.Items ["E name"], "#B1");
1195 [Test]
1196 public void ListViewItemCollectionTest_ContainsKey ()
1198 ListView lvw = new ListView();
1199 ListViewItem lvi1 = new ListViewItem("A");
1200 lvi1.Name = "A name";
1201 ListViewItem lvi2 = new ListViewItem("B");
1202 lvi2.Name = "B name";
1203 ListViewItem lvi3 = new ListViewItem("D");
1204 lvi3.Name = String.Empty;
1205 lvw.Items.AddRange(new ListViewItem[] { lvi1, lvi2, lvi3 });
1207 Assert.AreEqual(3, lvw.Items.Count, "#A1");
1208 Assert.AreEqual(false, lvw.Items.ContainsKey (String.Empty), "#A2");
1209 Assert.AreEqual(false, lvw.Items.ContainsKey (null), "#A3");
1210 Assert.AreEqual(true, lvw.Items.ContainsKey ("A name"), "#A4");
1211 Assert.AreEqual(true, lvw.Items.ContainsKey ("a NAME"), "#A5");
1212 Assert.AreEqual(true, lvw.Items.ContainsKey ("B name"), "#A6");
1214 ListViewItem lvi5 = new ListViewItem("E");
1215 lvw.Items.Add(lvi5);
1216 lvi5.Name = "E name";
1218 Assert.AreEqual(true, lvw.Items.ContainsKey ("E name"), "#B1");
1221 [Test]
1222 public void ListViewItemCollectionTest_Find ()
1224 ListView lvw = new ListView ();
1225 ListViewItem lvi1 = new ListViewItem ("A");
1226 lvi1.Name = "A name";
1227 ListViewItem lvi2 = new ListViewItem ("B");
1228 lvi2.Name = "a NAME";
1229 ListViewItem lvi3 = new ListViewItem ("C");
1230 lvi3.Name = "a NAME";
1231 ListViewItem lvi4 = new ListViewItem ("D");
1232 lvi4.Name = String.Empty;
1233 ListViewItem lvi5 = new ListViewItem ("F");
1234 lvi5.Name = String.Empty;
1235 lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
1237 Assert.AreEqual (5, lvw.Items.Count, "#A1");
1239 ListViewItem [] items = lvw.Items.Find ("A name", false);
1240 Assert.AreEqual (3, items.Length, "#B11");
1241 Assert.AreSame (lvi1, items [0], "#B2");
1242 Assert.AreSame (lvi2, items [1], "#B3");
1243 Assert.AreSame (lvi3, items [2], "#B4");
1245 items = lvw.Items.Find (String.Empty, false);
1246 Assert.AreEqual (2, items.Length, "#B1");
1247 Assert.AreSame (lvi4, items [0], "#B2");
1248 Assert.AreSame (lvi5, items [1], "#B3");
1250 Assert.AreEqual (0, lvw.Items.Find (null, false).Length, "#C1");
1253 [Test]
1254 public void ListViewSubItemCollectionTest_ContainsKey ()
1256 ListViewItem lvi = new ListViewItem ("A");
1257 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1258 si1.Name = "A name";
1259 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1260 si2.Name = "B name";
1261 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1262 si3.Name = String.Empty;
1263 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3 });
1265 Assert.AreEqual (4, lvi.SubItems.Count, "#A1");
1266 Assert.AreEqual (false, lvi.SubItems.ContainsKey (String.Empty), "#A2");
1267 Assert.AreEqual (false, lvi.SubItems.ContainsKey (null), "#A3");
1268 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("A name"), "#A4");
1269 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("a NAME"), "#A5");
1270 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("B name"), "#A6");
1272 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1273 lvi.SubItems.Add (si5);
1274 si5.Name = "E name";
1276 Assert.AreEqual (true, lvi.SubItems.ContainsKey ("E name"), "#B1");
1279 [Test]
1280 public void ListViewSubItemCollectionTest_IndexOfKey ()
1282 ListViewItem lvi = new ListViewItem ();
1283 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1284 si1.Name = "A name";
1285 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1286 si2.Name = "Same name";
1287 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1288 si3.Name = "Same name";
1289 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1290 si4.Name = String.Empty;
1291 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1293 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1294 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (String.Empty), "#A2");
1295 Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (null), "#A3");
1296 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("A name"), "#A4");
1297 Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("a NAME"), "#A5");
1298 Assert.AreEqual (2, lvi.SubItems.IndexOfKey ("Same name"), "#A6");
1300 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1301 lvi.SubItems.Add (si5);
1302 si5.Name = "E name";
1304 Assert.AreEqual (5, lvi.SubItems.IndexOfKey ("E name"), "#B1");
1307 [Test]
1308 public void ListViewSubItemCollectionTest_RemoveByKey ()
1310 ListViewItem lvi = new ListViewItem ();
1311 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1312 si1.Name = "A name";
1313 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1314 si2.Name = "B name";
1315 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1316 si3.Name = "Same name";
1317 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1318 si4.Name = "Same name";
1319 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1320 si5.Name = String.Empty;
1321 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4, si5 });
1323 Assert.AreEqual (6, lvi.SubItems.Count, "#A1");
1325 lvi.SubItems.RemoveByKey ("B name");
1326 Assert.AreEqual (5, lvi.SubItems.Count, "#B1");
1327 Assert.AreSame (si1, lvi.SubItems [1], "#B2");
1328 Assert.AreSame (si3, lvi.SubItems [2], "#B3");
1329 Assert.AreSame (si4, lvi.SubItems [3], "#B4");
1330 Assert.AreSame (si5, lvi.SubItems [4], "#B5");
1332 lvi.SubItems.RemoveByKey ("Same name");
1333 Assert.AreEqual (4, lvi.SubItems.Count, "#C1");
1334 Assert.AreSame (si1, lvi.SubItems [1], "#C2");
1335 Assert.AreSame (si4, lvi.SubItems [2], "#C3");
1336 Assert.AreSame (si5, lvi.SubItems [3], "#C4");
1338 lvi.SubItems.RemoveByKey ("a NAME");
1339 Assert.AreEqual (3, lvi.SubItems.Count, "#D1");
1340 Assert.AreSame (si4, lvi.SubItems [1], "#D2");
1341 Assert.AreSame (si5, lvi.SubItems [2], "#D3");
1343 lvi.SubItems.RemoveByKey (String.Empty);
1344 Assert.AreEqual (3, lvi.SubItems.Count, "#E1");
1345 Assert.AreSame (si4, lvi.SubItems [1], "#E2");
1346 Assert.AreSame (si5, lvi.SubItems [2], "#E3");
1349 [Test]
1350 public void ListViewSubItemCollectionTest_Indexer ()
1352 ListViewItem lvi = new ListViewItem ();
1353 ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
1354 si1.Name = "A name";
1355 ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
1356 si2.Name = "Same name";
1357 ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
1358 si3.Name = "Same name";
1359 ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
1360 si4.Name = String.Empty;
1361 lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
1363 Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
1364 Assert.AreEqual (null, lvi.SubItems [String.Empty], "#A2");
1365 Assert.AreEqual (null, lvi.SubItems [null], "#A3");
1366 Assert.AreEqual (si1, lvi.SubItems ["A name"], "#A4");
1367 Assert.AreEqual (si1, lvi.SubItems ["a NAME"], "#A5");
1368 Assert.AreEqual (si2, lvi.SubItems ["Same name"], "#A6");
1370 ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
1371 lvi.SubItems.Add (si5);
1372 si5.Name = "E name";
1374 Assert.AreEqual (si5, lvi.SubItems ["E name"], "#B1");
1377 #endif