ListViewCollectionsTest.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  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.
  11. //
  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.
  19. //
  20. // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
  21. //
  22. // Author:
  23. // Jordi Mas i Hernandez <[email protected]>
  24. //
  25. //
  26. using System;
  27. using System.Windows.Forms;
  28. using System.Drawing;
  29. using System.Reflection;
  30. using System.Collections;
  31. using NUnit.Framework;
  32. namespace MonoTests.System.Windows.Forms
  33. {
  34. [TestFixture]
  35. public class ListViewCollectionsTest
  36. {
  37. /*
  38. ColumnHeaderCollection
  39. */
  40. [Test]
  41. public void ColumnHeaderCollectionTest_PropertiesTest ()
  42. {
  43. ListView listview = new ListView ();
  44. // Properties
  45. Assert.AreEqual (false, listview.Columns.IsReadOnly, "ColumnHeaderCollectionTest_PropertiesTest#1");
  46. Assert.AreEqual (true, ((ICollection)listview.Columns).IsSynchronized, "ColumnHeaderCollectionTest_PropertiesTest#2");
  47. Assert.AreEqual (listview.Columns, ((ICollection)listview.Columns).SyncRoot, "ColumnHeaderCollectionTest_PropertiesTest#3");
  48. Assert.AreEqual (false, ((IList)listview.Columns).IsFixedSize, "ColumnHeaderCollectionTest_PropertiesTest#4");
  49. Assert.AreEqual (0, listview.Columns.Count, "ColumnHeaderCollectionTest_PropertiesTest#5");
  50. }
  51. [Test]
  52. public void ColumnHeaderCollectionTest_AddTest ()
  53. {
  54. ListView listview = new ListView ();
  55. // Duplicated elements with same text added
  56. listview.Columns.Add (new ColumnHeader ());
  57. listview.Columns.Add (new ColumnHeader ());
  58. Assert.AreEqual (2, listview.Columns.Count, "ColumnHeaderCollectionTest_AddTest#1");
  59. Assert.AreEqual ("ColumnHeader", listview.Columns[0].Text, "ColumnHeaderCollectionTest_AddTest#2");
  60. }
  61. [Test]
  62. public void ColumnHeaderCollectionTest_ClearTest ()
  63. {
  64. ListView listview = new ListView ();
  65. // Duplicated elements with same text added
  66. listview.Columns.Add (new ColumnHeader ());
  67. listview.Columns.Clear ();
  68. Assert.AreEqual (0, listview.Columns.Count, "ColumnHeaderCollectionTest_ClearTest#1");
  69. }
  70. // Exceptions
  71. [Test, ExpectedException (typeof (ArgumentOutOfRangeException))]
  72. public void ColumnHeaderCollectionTest_GetItem_ExceptionTest ()
  73. {
  74. // Duplicated elements not added
  75. ListView listview = new ListView ();
  76. ColumnHeader item = listview.Columns[5];
  77. Assert.Fail ("#1: " + item.Text); // avoid CS0219 warning
  78. }
  79. /*
  80. CheckedIndexCollection
  81. */
  82. [Test]
  83. public void CheckedIndexCollectionTest_PropertiesTest ()
  84. {
  85. ListView listview = new ListView ();
  86. // Properties
  87. Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
  88. Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
  89. Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
  90. Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
  91. Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
  92. }
  93. // Exceptions
  94. [Test, ExpectedException (typeof (NotSupportedException))]
  95. public void CheckedIndexCollectionTest_Add_ExceptionTest ()
  96. {
  97. ListView listview = new ListView ();
  98. ((IList)listview.CheckedIndices).Add (5);
  99. }
  100. [Test, ExpectedException (typeof (NotSupportedException))]
  101. public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
  102. {
  103. ListView listview = new ListView ();
  104. ((IList)listview.CheckedIndices).Remove (5);
  105. }
  106. [Test, ExpectedException (typeof (NotSupportedException))]
  107. public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
  108. {
  109. ListView listview = new ListView ();
  110. ((IList)listview.CheckedIndices).RemoveAt (5);
  111. }
  112. /*
  113. CheckedItemCollection
  114. */
  115. [Test]
  116. public void CheckedItemCollectionTest_PropertiesTest ()
  117. {
  118. ListView listview = new ListView ();
  119. // Properties
  120. Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
  121. Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
  122. Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
  123. Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
  124. Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
  125. }
  126. // Exceptions
  127. [Test, ExpectedException (typeof (NotSupportedException))]
  128. public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
  129. {
  130. ListView listview = new ListView ();
  131. ((IList)listview.CheckedItems).Add (5);
  132. }
  133. [Test]
  134. public void CheckedItemCollectionTest_Order ()
  135. {
  136. Form form = new Form ();
  137. form.ShowInTaskbar = false;
  138. ListView lvw = new ListView ();
  139. lvw.CheckBoxes = true;
  140. form.Controls.Add (lvw);
  141. ListViewItem itemA = lvw.Items.Add ("A");
  142. itemA.Checked = true;
  143. ListViewItem itemB = lvw.Items.Add ("B");
  144. itemB.Checked = true;
  145. ListViewItem itemC = lvw.Items.Add ("C");
  146. itemC.Checked = true;
  147. Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
  148. Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
  149. Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
  150. Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
  151. itemB.Checked = false;
  152. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
  153. Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
  154. Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
  155. itemB.Checked = true;
  156. Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
  157. Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
  158. Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
  159. Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
  160. lvw.Sorting = SortOrder.Descending;
  161. Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
  162. Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
  163. Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
  164. Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
  165. // sorting only takes effect when listview is created
  166. form.Show ();
  167. Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
  168. Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
  169. Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
  170. Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
  171. form.Dispose ();
  172. }
  173. [Test, ExpectedException (typeof (NotSupportedException))]
  174. public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
  175. {
  176. ListView listview = new ListView ();
  177. ((IList)listview.CheckedItems).Remove (5);
  178. }
  179. [Test, ExpectedException (typeof (NotSupportedException))]
  180. public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
  181. {
  182. ListView listview = new ListView ();
  183. ((IList)listview.CheckedItems).RemoveAt (5);
  184. }
  185. /*
  186. SelectedIndexCollection
  187. */
  188. [Test]
  189. public void SelectedIndexCollectionTest_PropertiesTest ()
  190. {
  191. ListView listview = new ListView ();
  192. // Properties
  193. Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
  194. Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
  195. Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
  196. Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
  197. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
  198. }
  199. // Exceptions
  200. [Test, ExpectedException (typeof (NotSupportedException))]
  201. public void SelectedIndexCollectionTest_Add_ExceptionTest ()
  202. {
  203. ListView listview = new ListView ();
  204. ((IList)listview.SelectedIndices).Add (5);
  205. }
  206. [Test, ExpectedException (typeof (NotSupportedException))]
  207. public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
  208. {
  209. ListView listview = new ListView ();
  210. ((IList)listview.SelectedIndices).Remove (5);
  211. }
  212. [Test, ExpectedException (typeof (NotSupportedException))]
  213. public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
  214. {
  215. ListView listview = new ListView ();
  216. ((IList)listview.SelectedIndices).RemoveAt (5);
  217. }
  218. /*
  219. SelectedItemCollection
  220. */
  221. [Test]
  222. public void SelectedItemCollectionTest_PropertiesTest ()
  223. {
  224. ListView listview = new ListView ();
  225. // Properties
  226. Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
  227. Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
  228. Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
  229. Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
  230. Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
  231. }
  232. // Exceptions
  233. [Test, ExpectedException (typeof (NotSupportedException))]
  234. public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
  235. {
  236. ListView listview = new ListView ();
  237. ((IList)listview.SelectedItems).Add (5);
  238. }
  239. [Test, ExpectedException (typeof (NotSupportedException))]
  240. public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
  241. {
  242. ListView listview = new ListView ();
  243. ((IList)listview.SelectedItems).Remove (5);
  244. }
  245. [Test, ExpectedException (typeof (NotSupportedException))]
  246. public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
  247. {
  248. ListView listview = new ListView ();
  249. ((IList)listview.SelectedItems).RemoveAt (5);
  250. }
  251. [Test]
  252. public void SelectedItemCollectionTest_Clear ()
  253. {
  254. Form form = new Form ();
  255. form.ShowInTaskbar = false;
  256. ListView lvw = new ListView ();
  257. form.Controls.Add (lvw);
  258. ListViewItem item = lvw.Items.Add ("Title");
  259. item.Selected = true;
  260. lvw.SelectedItems.Clear ();
  261. Assert.IsTrue (item.Selected, "#A1");
  262. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  263. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
  264. form.Show ();
  265. Assert.IsTrue (item.Selected, "#B1");
  266. Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
  267. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
  268. // once listview is created, clear DOES have effect
  269. lvw.SelectedItems.Clear ();
  270. Assert.IsFalse (item.Selected, "#C1");
  271. Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
  272. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
  273. form.Dispose ();
  274. }
  275. [Test]
  276. public void SelectedItemCollectionTest_Contains ()
  277. {
  278. Form form = new Form ();
  279. form.ShowInTaskbar = false;
  280. ListView lvw = new ListView ();
  281. form.Controls.Add (lvw);
  282. ListViewItem item = lvw.Items.Add ("Title");
  283. item.Selected = true;
  284. IList list = (IList) lvw.SelectedItems;
  285. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
  286. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
  287. Assert.IsFalse (list.Contains (item), "#A3");
  288. Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
  289. form.Show ();
  290. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
  291. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
  292. Assert.IsTrue (list.Contains (item), "#B3");
  293. Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
  294. form.Dispose ();
  295. }
  296. [Test]
  297. public void SelectedItemCollectionTest_CopyTo ()
  298. {
  299. Form form = new Form ();
  300. form.ShowInTaskbar = false;
  301. ListView lvw = new ListView ();
  302. form.Controls.Add (lvw);
  303. ListViewItem item = lvw.Items.Add ("Title");
  304. item.Selected = true;
  305. IList list = (IList) lvw.SelectedItems;
  306. Assert.IsNotNull (list, "#A1");
  307. ListViewItem [] items = new ListViewItem [1];
  308. lvw.SelectedItems.CopyTo (items, 0);
  309. Assert.IsNull (items [0], "#A2");
  310. lvw.SelectedItems.CopyTo (items, 455);
  311. form.Show ();
  312. lvw.SelectedItems.CopyTo (items, 0);
  313. Assert.AreSame (item, items [0], "#B1");
  314. try {
  315. lvw.SelectedItems.CopyTo (items, 455);
  316. Assert.Fail ("#B2");
  317. } catch (ArgumentException) {
  318. }
  319. form.Dispose ();
  320. }
  321. [Test]
  322. public void SelectedItemCollectionTest_Count ()
  323. {
  324. Form form = new Form ();
  325. form.ShowInTaskbar = false;
  326. ListView lvw = new ListView ();
  327. form.Controls.Add (lvw);
  328. ListViewItem item = lvw.Items.Add ("Title");
  329. item.Selected = true;
  330. Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
  331. form.Show ();
  332. Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
  333. form.Dispose ();
  334. }
  335. [Test]
  336. public void SelectedItemCollectionTest_GetEnumerator ()
  337. {
  338. Form form = new Form ();
  339. form.ShowInTaskbar = false;
  340. ListView lvw = new ListView ();
  341. form.Controls.Add (lvw);
  342. ListViewItem item = lvw.Items.Add ("Title");
  343. item.Selected = true;
  344. Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
  345. form.Show ();
  346. Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
  347. form.Dispose ();
  348. }
  349. [Test]
  350. public void SelectedItemCollectionTest_Indexer ()
  351. {
  352. Form form = new Form ();
  353. form.ShowInTaskbar = false;
  354. ListView lvw = new ListView ();
  355. form.Controls.Add (lvw);
  356. ListViewItem item = lvw.Items.Add ("Title");
  357. item.Selected = true;
  358. IList list = (IList) lvw.SelectedItems;
  359. try {
  360. ListViewItem x = lvw.SelectedItems [0];
  361. Assert.Fail ("#A1: " + x.ToString ());
  362. } catch (ArgumentOutOfRangeException) {
  363. }
  364. try {
  365. ListViewItem x = list [0] as ListViewItem;
  366. Assert.Fail ("#A2: " + x.ToString ());
  367. } catch (ArgumentOutOfRangeException) {
  368. }
  369. form.Show ();
  370. Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
  371. Assert.AreSame (item, list [0], "#B2");
  372. form.Dispose ();
  373. }
  374. [Test]
  375. public void SelectedItemCollectionTest_IndexOf ()
  376. {
  377. Form form = new Form ();
  378. form.ShowInTaskbar = false;
  379. ListView lvw = new ListView ();
  380. form.Controls.Add (lvw);
  381. ListViewItem item = lvw.Items.Add ("Title");
  382. item.Selected = true;
  383. IList list = (IList) lvw.SelectedItems;
  384. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
  385. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
  386. Assert.AreEqual (-1, list.IndexOf (item), "#A3");
  387. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
  388. form.Show ();
  389. Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
  390. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
  391. Assert.AreEqual (0, list.IndexOf (item), "#B3");
  392. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
  393. form.Dispose ();
  394. }
  395. [Test]
  396. public void SelectedItemCollectionTest_Order ()
  397. {
  398. Form form = new Form ();
  399. form.ShowInTaskbar = false;
  400. ListView lvw = new ListView ();
  401. lvw.MultiSelect = true;
  402. form.Controls.Add (lvw);
  403. ListViewItem itemA = lvw.Items.Add ("A");
  404. itemA.Selected = true;
  405. ListViewItem itemB = lvw.Items.Add ("B");
  406. itemB.Selected = true;
  407. ListViewItem itemC = lvw.Items.Add ("C");
  408. itemC.Selected = true;
  409. form.Show ();
  410. Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
  411. Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
  412. Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
  413. Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
  414. itemB.Selected = false;
  415. Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
  416. Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
  417. Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
  418. itemB.Selected = true;
  419. Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
  420. Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
  421. Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
  422. Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
  423. lvw.Sorting = SortOrder.Descending;
  424. Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
  425. Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
  426. Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
  427. Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
  428. form.Dispose ();
  429. }
  430. /*
  431. ListViewItemCollection
  432. */
  433. [Test]
  434. public void ListViewItemCollectionTest_Add ()
  435. {
  436. ListView lvw = new ListView ();
  437. ListViewItem item = new ListViewItem ("Title");
  438. ListViewItem newItem = lvw.Items.Add (item);
  439. Assert.AreSame (newItem, item, "#A1");
  440. Assert.AreEqual (0, item.Index, "#A2");
  441. Assert.AreSame (item, lvw.Items [0], "#A3");
  442. Assert.AreSame (lvw, item.ListView, "#A4");
  443. newItem = lvw.Items.Add ("A title");
  444. Assert.AreEqual ("A title", newItem.Text, "#B1");
  445. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  446. Assert.AreEqual (1, newItem.Index, "#B3");
  447. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  448. Assert.AreSame (lvw, newItem.ListView, "#B5");
  449. Assert.AreEqual (0, item.Index, "#B6");
  450. Assert.AreSame (item, lvw.Items [0], "#B7");
  451. newItem = lvw.Items.Add ("A title", 4);
  452. Assert.AreEqual ("A title", newItem.Text, "#C1");
  453. Assert.AreEqual (4, newItem.ImageIndex, "#C2");
  454. Assert.AreEqual (2, newItem.Index, "#C3");
  455. Assert.AreSame (newItem, lvw.Items [2], "#C4");
  456. Assert.AreSame (lvw, newItem.ListView, "#C5");
  457. Assert.AreEqual (0, item.Index, "#C6");
  458. Assert.AreSame (item, lvw.Items [0], "#C7");
  459. }
  460. [Test]
  461. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  462. public void ListViewItemCollectionTest_Add_ExistingItem ()
  463. {
  464. ListView lvw = new ListView ();
  465. ListViewItem itemA = lvw.Items.Add ("A");
  466. lvw.Items.Add (itemA);
  467. }
  468. [Test]
  469. public void ListViewItemCollectionTest_Insert ()
  470. {
  471. ListView lvw = new ListView ();
  472. ListViewItem item = new ListViewItem ("Title");
  473. ListViewItem newItem = lvw.Items.Insert (0, item);
  474. Assert.AreSame (newItem, item, "#A1");
  475. Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
  476. Assert.AreSame (newItem, lvw.Items [0], "#A3");
  477. Assert.AreSame (lvw, newItem.ListView, "#A4");
  478. newItem = lvw.Items.Insert (1, "A title");
  479. Assert.AreEqual ("A title", newItem.Text, "#B1");
  480. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  481. Assert.AreEqual (1, newItem.Index, "#B3");
  482. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  483. Assert.AreSame (lvw, newItem.ListView, "#B5");
  484. Assert.AreEqual (0, item.Index, "#B6");
  485. Assert.AreSame (item, lvw.Items [0], "#B7");
  486. newItem = lvw.Items.Insert (0, "Other title");
  487. Assert.AreEqual ("Other title", newItem.Text, "#C1");
  488. Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
  489. Assert.AreEqual (0, newItem.Index, "#C3");
  490. Assert.AreSame (newItem, lvw.Items [0], "#C4");
  491. Assert.AreSame (lvw, newItem.ListView, "#C5");
  492. Assert.AreEqual (1, item.Index, "#C6");
  493. Assert.AreSame (item, lvw.Items [1], "#C7");
  494. newItem = lvw.Items.Insert (3, "Some title", 4);
  495. Assert.AreEqual ("Some title", newItem.Text, "#D1");
  496. Assert.AreEqual (4, newItem.ImageIndex, "#D2");
  497. Assert.AreEqual (3, newItem.Index, "#D3");
  498. Assert.AreSame (newItem, lvw.Items [3], "#D4");
  499. Assert.AreSame (lvw, newItem.ListView, "#D5");
  500. Assert.AreEqual (1, item.Index, "#D6");
  501. Assert.AreSame (item, lvw.Items [1], "#D7");
  502. newItem = lvw.Items.Insert (0, "No title", 4);
  503. Assert.AreEqual ("No title", newItem.Text, "#E1");
  504. Assert.AreEqual (4, newItem.ImageIndex, "#E2");
  505. Assert.AreEqual (0, newItem.Index, "#E3");
  506. Assert.AreSame (newItem, lvw.Items [0], "#E4");
  507. Assert.AreSame (lvw, newItem.ListView, "#E5");
  508. Assert.AreEqual (2, item.Index, "#E6");
  509. Assert.AreSame (item, lvw.Items [2], "#E7");
  510. }
  511. [Test]
  512. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  513. public void ListViewItemCollectionTest_Insert_ExistingItem ()
  514. {
  515. ListView lvw = new ListView ();
  516. ListViewItem itemA = lvw.Items.Add ("A");
  517. lvw.Items.Insert (0, itemA);
  518. }
  519. [Test]
  520. public void ListViewItemCollectionTest_Remove ()
  521. {
  522. Form form = new Form ();
  523. form.ShowInTaskbar = false;
  524. ListView lvw = new ListView ();
  525. form.Controls.Add (lvw);
  526. lvw.MultiSelect = true;
  527. lvw.CheckBoxes = true;
  528. form.Show ();
  529. ListViewItem itemA = lvw.Items.Add ("A");
  530. ListViewItem itemB = lvw.Items.Add ("B");
  531. lvw.Items.Add ("C");
  532. ListViewItem itemD = lvw.Items.Add ("D");
  533. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  534. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  535. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  536. itemB.Checked = true;
  537. itemD.Checked = true;
  538. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  539. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  540. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  541. Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
  542. Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
  543. itemD.Selected = true;
  544. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  545. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  546. Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
  547. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  548. Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
  549. Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
  550. lvw.Items.Remove (itemB);
  551. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  552. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  553. Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
  554. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  555. Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
  556. lvw.Items.Remove (itemA);
  557. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  558. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  559. Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
  560. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  561. Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
  562. form.Dispose ();
  563. }
  564. [Test]
  565. public void ListViewItemCollectionTest_RemoveAt ()
  566. {
  567. Form form = new Form ();
  568. form.ShowInTaskbar = false;
  569. ListView lvw = new ListView ();
  570. form.Controls.Add (lvw);
  571. lvw.MultiSelect = true;
  572. lvw.CheckBoxes = true;
  573. lvw.Items.Add ("A");
  574. lvw.Items.Add ("B");
  575. lvw.Items.Add ("C");
  576. lvw.Items.Add ("D");
  577. form.Show ();
  578. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  579. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  580. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  581. lvw.Items [1].Checked = true;
  582. lvw.Items [3].Checked = true;
  583. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  584. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  585. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  586. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
  587. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
  588. lvw.Items [3].Selected = true;
  589. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  590. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  591. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
  592. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  593. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
  594. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
  595. lvw.Items.RemoveAt (1);
  596. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  597. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  598. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
  599. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  600. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
  601. lvw.Items.RemoveAt (0);
  602. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  603. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  604. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
  605. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  606. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
  607. form.Dispose ();
  608. }
  609. }
  610. }