1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
23 // Jordi Mas i Hernandez <jordi@ximian.com>
28 using System
.Windows
.Forms
;
30 using System
.Reflection
;
31 using System
.Collections
;
32 using NUnit
.Framework
;
34 namespace MonoTests
.System
.Windows
.Forms
37 public class ListViewCollectionsTest
40 ColumnHeaderCollection
43 public void ColumnHeaderCollectionTest_PropertiesTest ()
45 ListView listview
= new ListView ();
48 Assert
.AreEqual (false, listview
.Columns
.IsReadOnly
, "ColumnHeaderCollectionTest_PropertiesTest#1");
49 Assert
.AreEqual (true, ((ICollection
)listview
.Columns
).IsSynchronized
, "ColumnHeaderCollectionTest_PropertiesTest#2");
50 Assert
.AreEqual (listview
.Columns
, ((ICollection
)listview
.Columns
).SyncRoot
, "ColumnHeaderCollectionTest_PropertiesTest#3");
51 Assert
.AreEqual (false, ((IList
)listview
.Columns
).IsFixedSize
, "ColumnHeaderCollectionTest_PropertiesTest#4");
52 Assert
.AreEqual (0, listview
.Columns
.Count
, "ColumnHeaderCollectionTest_PropertiesTest#5");
56 public void ColumnHeaderCollectionTest_AddTest ()
58 ListView listview
= new ListView ();
60 // Duplicated elements with same text added
61 listview
.Columns
.Add (new ColumnHeader ());
62 listview
.Columns
.Add (new ColumnHeader ());
63 Assert
.AreEqual (2, listview
.Columns
.Count
, "ColumnHeaderCollectionTest_AddTest#1");
64 Assert
.AreEqual ("ColumnHeader", listview
.Columns
[0].Text
, "ColumnHeaderCollectionTest_AddTest#2");
68 public void ColumnHeaderCollectionTest_ClearTest ()
70 ListView listview
= new ListView ();
72 // Duplicated elements with same text added
73 listview
.Columns
.Add (new ColumnHeader ());
74 listview
.Columns
.Clear ();
75 Assert
.AreEqual (0, listview
.Columns
.Count
, "ColumnHeaderCollectionTest_ClearTest#1");
79 [Test
, ExpectedException (typeof (ArgumentOutOfRangeException
))]
80 public void ColumnHeaderCollectionTest_GetItem_ExceptionTest ()
82 // Duplicated elements not added
83 ListView listview
= new ListView ();
84 ColumnHeader item
= listview
.Columns
[5];
85 Assert
.Fail ("#1: " + item
.Text
); // avoid CS0219 warning
89 CheckedIndexCollection
92 public void CheckedIndexCollectionTest_PropertiesTest ()
94 ListView listview
= new ListView ();
97 Assert
.AreEqual (true, listview
.CheckedIndices
.IsReadOnly
, "CheckedIndexCollectionTest_PropertiesTest#1");
98 Assert
.AreEqual (false, ((ICollection
)listview
.CheckedIndices
).IsSynchronized
, "CheckedIndexCollectionTest_PropertiesTest#2");
99 Assert
.AreEqual (listview
.CheckedIndices
, ((ICollection
)listview
.CheckedIndices
).SyncRoot
, "CheckedIndexCollectionTest_PropertiesTest#3");
100 Assert
.AreEqual (true, ((IList
)listview
.CheckedIndices
).IsFixedSize
, "CheckedIndexCollectionTest_PropertiesTest#4");
101 Assert
.AreEqual (0, listview
.CheckedIndices
.Count
, "CheckedIndexCollectionTest_PropertiesTest#5");
106 [Test
, ExpectedException (typeof (NotSupportedException
))]
107 public void CheckedIndexCollectionTest_Add_ExceptionTest ()
109 ListView listview
= new ListView ();
110 ((IList
)listview
.CheckedIndices
).Add (5);
113 [Test
, ExpectedException (typeof (NotSupportedException
))]
114 public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
116 ListView listview
= new ListView ();
117 ((IList
)listview
.CheckedIndices
).Remove (5);
120 [Test
, ExpectedException (typeof (NotSupportedException
))]
121 public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
123 ListView listview
= new ListView ();
124 ((IList
)listview
.CheckedIndices
).RemoveAt (5);
128 CheckedItemCollection
131 public void CheckedItemCollectionTest_PropertiesTest ()
133 ListView listview
= new ListView ();
136 Assert
.AreEqual (true, listview
.CheckedItems
.IsReadOnly
, "CheckedItemCollectionTest_PropertiesTest#1");
137 Assert
.AreEqual (false, ((ICollection
)listview
.CheckedItems
).IsSynchronized
, "CheckedItemCollectionTest_PropertiesTest#2");
138 Assert
.AreEqual (listview
.CheckedItems
, ((ICollection
)listview
.CheckedItems
).SyncRoot
, "CheckedItemCollectionTest_PropertiesTest#3");
139 Assert
.AreEqual (true, ((IList
)listview
.CheckedItems
).IsFixedSize
, "CheckedItemCollectionTest_PropertiesTest#4");
140 Assert
.AreEqual (0, listview
.CheckedItems
.Count
, "CheckedItemCollectionTest_PropertiesTest#5");
145 [Test
, ExpectedException (typeof (NotSupportedException
))]
146 public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
148 ListView listview
= new ListView ();
149 ((IList
)listview
.CheckedItems
).Add (5);
153 public void CheckedItemCollectionTest_Order ()
155 Form form
= new Form ();
156 form
.ShowInTaskbar
= false;
157 ListView lvw
= new ListView ();
158 lvw
.CheckBoxes
= true;
159 form
.Controls
.Add (lvw
);
160 ListViewItem itemA
= lvw
.Items
.Add ("A");
161 itemA
.Checked
= true;
162 ListViewItem itemB
= lvw
.Items
.Add ("B");
163 itemB
.Checked
= true;
164 ListViewItem itemC
= lvw
.Items
.Add ("C");
165 itemC
.Checked
= true;
167 Assert
.AreEqual (3, lvw
.CheckedItems
.Count
, "#A1");
168 Assert
.AreSame (itemA
, lvw
.CheckedItems
[0], "#A2");
169 Assert
.AreSame (itemB
, lvw
.CheckedItems
[1], "#A3");
170 Assert
.AreSame (itemC
, lvw
.CheckedItems
[2], "#A3");
172 itemB
.Checked
= false;
174 Assert
.AreEqual (2, lvw
.CheckedItems
.Count
, "#B1");
175 Assert
.AreSame (itemA
, lvw
.CheckedItems
[0], "#B2");
176 Assert
.AreSame (itemC
, lvw
.CheckedItems
[1], "#B3");
178 itemB
.Checked
= true;
180 Assert
.AreEqual (3, lvw
.CheckedItems
.Count
, "#C1");
181 Assert
.AreSame (itemA
, lvw
.CheckedItems
[0], "#C2");
182 Assert
.AreSame (itemB
, lvw
.CheckedItems
[1], "#C3");
183 Assert
.AreSame (itemC
, lvw
.CheckedItems
[2], "#C4");
185 lvw
.Sorting
= SortOrder
.Descending
;
187 Assert
.AreEqual (3, lvw
.CheckedItems
.Count
, "#D1");
188 Assert
.AreSame (itemA
, lvw
.CheckedItems
[0], "#D2");
189 Assert
.AreSame (itemB
, lvw
.CheckedItems
[1], "#D3");
190 Assert
.AreSame (itemC
, lvw
.CheckedItems
[2], "#D4");
192 // sorting only takes effect when listview is created
195 Assert
.AreEqual (3, lvw
.CheckedItems
.Count
, "#E1");
196 Assert
.AreSame (itemC
, lvw
.CheckedItems
[0], "#E2");
197 Assert
.AreSame (itemB
, lvw
.CheckedItems
[1], "#E3");
198 Assert
.AreSame (itemA
, lvw
.CheckedItems
[2], "#E4");
202 [Test
, ExpectedException (typeof (NotSupportedException
))]
203 public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
205 ListView listview
= new ListView ();
206 ((IList
)listview
.CheckedItems
).Remove (5);
209 [Test
, ExpectedException (typeof (NotSupportedException
))]
210 public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
212 ListView listview
= new ListView ();
213 ((IList
)listview
.CheckedItems
).RemoveAt (5);
217 SelectedIndexCollection
220 public void SelectedIndexCollectionTest_PropertiesTest ()
222 ListView listview
= new ListView ();
226 Assert
.AreEqual (true, listview
.SelectedIndices
.IsReadOnly
, "SelectedIndexCollectionTest_PropertiesTest#1");
227 Assert
.AreEqual (true, ((IList
)listview
.SelectedIndices
).IsFixedSize
, "SelectedIndexCollectionTest_PropertiesTest#4");
229 Assert
.AreEqual (false, listview
.SelectedIndices
.IsReadOnly
, "SelectedIndexCollectionTest_PropertiesTest#1");
230 Assert
.AreEqual (false, ((IList
)listview
.SelectedIndices
).IsFixedSize
, "SelectedIndexCollectionTest_PropertiesTest#4");
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");
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");
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");
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");
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);
326 [Test
, ExpectedException (typeof (NotSupportedException
))]
327 public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
329 ListView listview
= new ListView ();
330 ((IList
)listview
.SelectedIndices
).RemoveAt (5);
335 public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
337 ListView listview
= new ListView ();
339 listview
.SelectedIndices
.Remove (-1);
340 Assert
.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#1");
341 } catch (ArgumentOutOfRangeException
) {
345 listview
.SelectedIndices
.Remove (listview
.Items
.Count
);
346 Assert
.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#2");
347 } catch (ArgumentOutOfRangeException
) {
352 public void SelectedIndexCollectionTest_Add_ExceptionTest ()
354 ListView listview
= new ListView ();
356 listview
.SelectedIndices
.Add (-1);
357 Assert
.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#1");
358 } catch (ArgumentOutOfRangeException
) {
362 listview
.SelectedIndices
.Add (listview
.Items
.Count
);
363 Assert
.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#2");
364 } catch (ArgumentOutOfRangeException
) {
370 SelectedItemCollection
373 public void SelectedItemCollectionTest_PropertiesTest ()
375 ListView listview
= new ListView ();
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");
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);
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");
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");
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");
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");
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);
483 lvw
.SelectedItems
.CopyTo (items
, 0);
484 Assert
.AreSame (item
, items
[0], "#B1");
486 lvw
.SelectedItems
.CopyTo (items
, 455);
488 } catch (ArgumentException
) {
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");
505 Assert
.AreEqual (1, lvw
.SelectedItems
.Count
, "#2");
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");
523 Assert
.IsTrue (lvw
.SelectedItems
.GetEnumerator ().MoveNext (), "#B1");
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
;
540 ListViewItem x
= lvw
.SelectedItems
[0];
541 Assert
.Fail ("#A1: " + x
.ToString ());
542 } catch (ArgumentOutOfRangeException
) {
546 ListViewItem x
= list
[0] as ListViewItem
;
547 Assert
.Fail ("#A2: " + x
.ToString ());
548 } catch (ArgumentOutOfRangeException
) {
553 Assert
.AreSame (item
, lvw
.SelectedItems
[0], "#B1");
554 Assert
.AreSame (item
, list
[0], "#B2");
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");
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");
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");
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");
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;
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");
715 ListViewItemCollection
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");
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
);
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
);
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");
775 Assert
.AreEqual(string.Empty
, lv1
.Items
[0].Name
, "#D2");
777 Assert
.AreEqual("Item4", lv1
.Items
[0].Text
, "#D3");
778 Assert
.AreEqual(4, lv1
.Items
[0].ImageIndex
, "#D4");
781 ListViewItem item5
= lv1
.Items
.Add(text
);
782 Assert
.AreEqual(item5
, lv1
.Items
[1], "#E1");
784 Assert
.AreEqual(string.Empty
, lv1
.Items
[1].Name
, "#E2");
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");
791 Assert
.AreEqual(string.Empty
, lv1
.Items
[2].Name
, "#F2");
793 Assert
.AreEqual(string.Empty
, lv1
.Items
[2].Text
, "#F3");
794 Assert
.AreEqual(5, lv1
.Items
[2].ImageIndex
, "#F4");
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");
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");
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");
872 [ExpectedException(typeof(ArgumentNullException
))]
873 public void ListViewItemCollectionTest_AddRange_NullException ()
875 ListView lv1
= new ListView ();
876 ListViewItem
[] value = null;
877 lv1
.Items
.AddRange (value);
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 }
);
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
);
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");
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
);
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
);
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");
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;
993 ListViewItem itemA
= lvw
.Items
.Add ("A");
994 ListViewItem itemB
= lvw
.Items
.Add ("B");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");