ListViewCollectionsTest.cs 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  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. #if !NET_2_0
  194. Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
  195. Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
  196. #else
  197. Assert.AreEqual (false, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
  198. Assert.AreEqual (false, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
  199. #endif
  200. Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
  201. Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
  202. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
  203. }
  204. // Exceptions
  205. #if !NET_2_0
  206. [Test, ExpectedException (typeof (NotSupportedException))]
  207. public void SelectedIndexCollectionTest_Add_ExceptionTest ()
  208. {
  209. ListView listview = new ListView ();
  210. ((IList)listview.SelectedIndices).Add (5);
  211. }
  212. [Test, ExpectedException (typeof (NotSupportedException))]
  213. public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
  214. {
  215. ListView listview = new ListView ();
  216. ((IList)listview.SelectedIndices).Remove (5);
  217. }
  218. #endif
  219. [Test, ExpectedException (typeof (NotSupportedException))]
  220. public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
  221. {
  222. ListView listview = new ListView ();
  223. ((IList)listview.SelectedIndices).RemoveAt (5);
  224. }
  225. /*
  226. SelectedItemCollection
  227. */
  228. [Test]
  229. public void SelectedItemCollectionTest_PropertiesTest ()
  230. {
  231. ListView listview = new ListView ();
  232. // Properties
  233. Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
  234. Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
  235. Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
  236. Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
  237. Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
  238. }
  239. // Exceptions
  240. [Test, ExpectedException (typeof (NotSupportedException))]
  241. public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
  242. {
  243. ListView listview = new ListView ();
  244. ((IList)listview.SelectedItems).Add (5);
  245. }
  246. [Test, ExpectedException (typeof (NotSupportedException))]
  247. public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
  248. {
  249. ListView listview = new ListView ();
  250. ((IList)listview.SelectedItems).Remove (5);
  251. }
  252. [Test, ExpectedException (typeof (NotSupportedException))]
  253. public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
  254. {
  255. ListView listview = new ListView ();
  256. ((IList)listview.SelectedItems).RemoveAt (5);
  257. }
  258. [Test]
  259. public void SelectedItemCollectionTest_Clear ()
  260. {
  261. Form form = new Form ();
  262. form.ShowInTaskbar = false;
  263. ListView lvw = new ListView ();
  264. form.Controls.Add (lvw);
  265. ListViewItem item = lvw.Items.Add ("Title");
  266. item.Selected = true;
  267. lvw.SelectedItems.Clear ();
  268. Assert.IsTrue (item.Selected, "#A1");
  269. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  270. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
  271. form.Show ();
  272. Assert.IsTrue (item.Selected, "#B1");
  273. Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
  274. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
  275. // once listview is created, clear DOES have effect
  276. lvw.SelectedItems.Clear ();
  277. Assert.IsFalse (item.Selected, "#C1");
  278. Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
  279. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
  280. form.Dispose ();
  281. }
  282. [Test]
  283. public void SelectedItemCollectionTest_Contains ()
  284. {
  285. Form form = new Form ();
  286. form.ShowInTaskbar = false;
  287. ListView lvw = new ListView ();
  288. form.Controls.Add (lvw);
  289. ListViewItem item = lvw.Items.Add ("Title");
  290. item.Selected = true;
  291. IList list = (IList) lvw.SelectedItems;
  292. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
  293. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
  294. Assert.IsFalse (list.Contains (item), "#A3");
  295. Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
  296. form.Show ();
  297. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
  298. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
  299. Assert.IsTrue (list.Contains (item), "#B3");
  300. Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
  301. form.Dispose ();
  302. }
  303. [Test]
  304. public void SelectedItemCollectionTest_CopyTo ()
  305. {
  306. Form form = new Form ();
  307. form.ShowInTaskbar = false;
  308. ListView lvw = new ListView ();
  309. form.Controls.Add (lvw);
  310. ListViewItem item = lvw.Items.Add ("Title");
  311. item.Selected = true;
  312. IList list = (IList) lvw.SelectedItems;
  313. Assert.IsNotNull (list, "#A1");
  314. ListViewItem [] items = new ListViewItem [1];
  315. lvw.SelectedItems.CopyTo (items, 0);
  316. Assert.IsNull (items [0], "#A2");
  317. lvw.SelectedItems.CopyTo (items, 455);
  318. form.Show ();
  319. lvw.SelectedItems.CopyTo (items, 0);
  320. Assert.AreSame (item, items [0], "#B1");
  321. try {
  322. lvw.SelectedItems.CopyTo (items, 455);
  323. Assert.Fail ("#B2");
  324. } catch (ArgumentException) {
  325. }
  326. form.Dispose ();
  327. }
  328. [Test]
  329. public void SelectedItemCollectionTest_Count ()
  330. {
  331. Form form = new Form ();
  332. form.ShowInTaskbar = false;
  333. ListView lvw = new ListView ();
  334. form.Controls.Add (lvw);
  335. ListViewItem item = lvw.Items.Add ("Title");
  336. item.Selected = true;
  337. Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
  338. form.Show ();
  339. Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
  340. form.Dispose ();
  341. }
  342. [Test]
  343. public void SelectedItemCollectionTest_GetEnumerator ()
  344. {
  345. Form form = new Form ();
  346. form.ShowInTaskbar = false;
  347. ListView lvw = new ListView ();
  348. form.Controls.Add (lvw);
  349. ListViewItem item = lvw.Items.Add ("Title");
  350. item.Selected = true;
  351. Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
  352. form.Show ();
  353. Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
  354. form.Dispose ();
  355. }
  356. [Test]
  357. public void SelectedItemCollectionTest_Indexer ()
  358. {
  359. Form form = new Form ();
  360. form.ShowInTaskbar = false;
  361. ListView lvw = new ListView ();
  362. form.Controls.Add (lvw);
  363. ListViewItem item = lvw.Items.Add ("Title");
  364. item.Selected = true;
  365. IList list = (IList) lvw.SelectedItems;
  366. try {
  367. ListViewItem x = lvw.SelectedItems [0];
  368. Assert.Fail ("#A1: " + x.ToString ());
  369. } catch (ArgumentOutOfRangeException) {
  370. }
  371. try {
  372. ListViewItem x = list [0] as ListViewItem;
  373. Assert.Fail ("#A2: " + x.ToString ());
  374. } catch (ArgumentOutOfRangeException) {
  375. }
  376. form.Show ();
  377. Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
  378. Assert.AreSame (item, list [0], "#B2");
  379. form.Dispose ();
  380. }
  381. [Test]
  382. public void SelectedItemCollectionTest_IndexOf ()
  383. {
  384. Form form = new Form ();
  385. form.ShowInTaskbar = false;
  386. ListView lvw = new ListView ();
  387. form.Controls.Add (lvw);
  388. ListViewItem item = lvw.Items.Add ("Title");
  389. item.Selected = true;
  390. IList list = (IList) lvw.SelectedItems;
  391. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
  392. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
  393. Assert.AreEqual (-1, list.IndexOf (item), "#A3");
  394. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
  395. form.Show ();
  396. Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
  397. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
  398. Assert.AreEqual (0, list.IndexOf (item), "#B3");
  399. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
  400. form.Dispose ();
  401. }
  402. [Test]
  403. public void SelectedItemCollectionTest_Order ()
  404. {
  405. Form form = new Form ();
  406. form.ShowInTaskbar = false;
  407. ListView lvw = new ListView ();
  408. lvw.MultiSelect = true;
  409. form.Controls.Add (lvw);
  410. ListViewItem itemA = lvw.Items.Add ("A");
  411. itemA.Selected = true;
  412. ListViewItem itemB = lvw.Items.Add ("B");
  413. itemB.Selected = true;
  414. ListViewItem itemC = lvw.Items.Add ("C");
  415. itemC.Selected = true;
  416. form.Show ();
  417. Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
  418. Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
  419. Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
  420. Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
  421. itemB.Selected = false;
  422. Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
  423. Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
  424. Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
  425. itemB.Selected = true;
  426. Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
  427. Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
  428. Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
  429. Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
  430. lvw.Sorting = SortOrder.Descending;
  431. Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
  432. Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
  433. Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
  434. Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
  435. form.Dispose ();
  436. }
  437. /*
  438. ListViewItemCollection
  439. */
  440. [Test]
  441. public void ListViewItemCollectionTest_Add ()
  442. {
  443. ListView lvw = new ListView ();
  444. ListViewItem item = new ListViewItem ("Title");
  445. ListViewItem newItem = lvw.Items.Add (item);
  446. Assert.AreSame (newItem, item, "#A1");
  447. Assert.AreEqual (0, item.Index, "#A2");
  448. Assert.AreSame (item, lvw.Items [0], "#A3");
  449. Assert.AreSame (lvw, item.ListView, "#A4");
  450. newItem = lvw.Items.Add ("A title");
  451. Assert.AreEqual ("A title", newItem.Text, "#B1");
  452. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  453. Assert.AreEqual (1, newItem.Index, "#B3");
  454. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  455. Assert.AreSame (lvw, newItem.ListView, "#B5");
  456. Assert.AreEqual (0, item.Index, "#B6");
  457. Assert.AreSame (item, lvw.Items [0], "#B7");
  458. newItem = lvw.Items.Add ("A title", 4);
  459. Assert.AreEqual ("A title", newItem.Text, "#C1");
  460. Assert.AreEqual (4, newItem.ImageIndex, "#C2");
  461. Assert.AreEqual (2, newItem.Index, "#C3");
  462. Assert.AreSame (newItem, lvw.Items [2], "#C4");
  463. Assert.AreSame (lvw, newItem.ListView, "#C5");
  464. Assert.AreEqual (0, item.Index, "#C6");
  465. Assert.AreSame (item, lvw.Items [0], "#C7");
  466. }
  467. [Test]
  468. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  469. public void ListViewItemCollectionTest_Add_ExistingItem ()
  470. {
  471. ListView lvw = new ListView ();
  472. ListViewItem itemA = lvw.Items.Add ("A");
  473. lvw.Items.Add (itemA);
  474. }
  475. [Test]
  476. [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  477. public void ListViewItemCollectionTest_Add_OwnedItem ()
  478. {
  479. ListView lv1 = new ListView ();
  480. ListView lv2 = new ListView ();
  481. ListViewItem item = lv1.Items.Add ("A");
  482. lv2.Items.Add (item);
  483. }
  484. [Test]
  485. [Category ("NotWorking")]
  486. public void ListViewItemCollectionTest_Add_Junk ()
  487. {
  488. ListView lv1 = new ListView ();
  489. ListViewItem item4 = lv1.Items.Add("Item4", 4);
  490. Assert.AreEqual(item4, lv1.Items[0], "#D1");
  491. #if NET_2_0
  492. Assert.AreEqual(string.Empty, lv1.Items[0].Name, "#D2");
  493. #endif
  494. Assert.AreEqual("Item4", lv1.Items[0].Text, "#D3");
  495. Assert.AreEqual(4, lv1.Items[0].ImageIndex, "#D4");
  496. string text = null;
  497. ListViewItem item5 = lv1.Items.Add(text);
  498. Assert.AreEqual(item5, lv1.Items[1], "#E1");
  499. #if NET_2_0
  500. Assert.AreEqual(string.Empty, lv1.Items[1].Name, "#E2");
  501. #endif
  502. Assert.AreEqual(string.Empty, lv1.Items[1].Text, "#E3");
  503. ListViewItem item6 = lv1.Items.Add(null, 5);
  504. Assert.AreEqual(item6, lv1.Items[2], "#F1");
  505. #if NET_2_0
  506. Assert.AreEqual(string.Empty, lv1.Items[2].Name, "#F2");
  507. #endif
  508. Assert.AreEqual(string.Empty, lv1.Items[2].Text, "#F3");
  509. Assert.AreEqual(5, lv1.Items[2].ImageIndex, "#F4");
  510. #if NET_2_0
  511. ListViewItem item1 = lv1.Items.Add("ItemKey1", "Item1", 1);
  512. Assert.AreEqual(item1, lv1.Items[3], "#A1");
  513. Assert.AreEqual("ItemKey1", lv1.Items[3].Name, "#A2");
  514. Assert.AreEqual("Item1", lv1.Items[3].Text, "#A3");
  515. Assert.AreEqual(1, lv1.Items[3].ImageIndex, "#A4");
  516. ListViewItem item2 = lv1.Items.Add("ItemKey2", "Item2", "Image2");
  517. Assert.AreEqual(item2, lv1.Items[4], "#B1");
  518. Assert.AreEqual("ItemKey2", lv1.Items[4].Name, "#B2");
  519. Assert.AreEqual("Item2", lv1.Items[4].Text, "#B3");
  520. Assert.AreEqual("Image2", lv1.Items[4].ImageKey, "#B4");
  521. ListViewItem item3 = lv1.Items.Add("Item3", "Image3");
  522. Assert.AreEqual(item3, lv1.Items[5], "#C1");
  523. Assert.AreEqual(string.Empty, lv1.Items[5].Name, "#C2");
  524. Assert.AreEqual("Item3", lv1.Items[5].Text, "#C3");
  525. Assert.AreEqual("Image3", lv1.Items[5].ImageKey, "#C4");
  526. ListViewItem item7 = lv1.Items.Add(null, "Item6", 6);
  527. Assert.AreEqual(item7, lv1.Items[6], "#G1");
  528. Assert.AreEqual(string.Empty, lv1.Items[6].Name, "#G2");
  529. Assert.AreEqual("Item6", lv1.Items[6].Text, "#G3");
  530. Assert.AreEqual(6, lv1.Items[6].ImageIndex, "#G4");
  531. ListViewItem item8 = lv1.Items.Add("ItemKey7", null, 7);
  532. Assert.AreEqual(item8, lv1.Items[7], "#H1");
  533. Assert.AreEqual("ItemKey7", lv1.Items[7].Name, "#H2");
  534. Assert.AreEqual(string.Empty, lv1.Items[7].Text, "#H3");
  535. Assert.AreEqual(7, lv1.Items[7].ImageIndex, "#H4");
  536. ListViewItem item9 = lv1.Items.Add("ItemKey8", "Item8", null);
  537. Assert.AreEqual(item9, lv1.Items[8], "#I1");
  538. Assert.AreEqual("ItemKey8", lv1.Items[8].Name, "#I2");
  539. Assert.AreEqual("Item8", lv1.Items[8].Text, "#I3");
  540. Assert.AreEqual(string.Empty, lv1.Items[8].ImageKey, "#I4");
  541. #endif
  542. }
  543. [Test]
  544. public void ListViewItemCollectionTest_AddRange ()
  545. {
  546. ListView lv1 = new ListView ();
  547. ListViewItem item1 = new ListViewItem ("Item1");
  548. ListViewItem item2 = new ListViewItem ("Item2");
  549. ListViewItem item3 = new ListViewItem ("Item3");
  550. lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
  551. Assert.AreSame (item1, lv1.Items[0], "#A1");
  552. Assert.AreEqual (0, item1.Index, "#A2");
  553. Assert.AreSame (lv1, item1.ListView, "#A3");
  554. Assert.AreSame (item2, lv1.Items[1], "#B1");
  555. Assert.AreEqual (1, item2.Index, "#B2");
  556. Assert.AreSame (lv1, item2.ListView, "#B3");
  557. Assert.AreSame (item3, lv1.Items[2], "#C1");
  558. Assert.AreEqual (2, item3.Index, "#C2");
  559. Assert.AreSame (lv1, item3.ListView, "#C3");
  560. }
  561. [Test]
  562. public void ListViewItemCollectionTest_AddRange_Count ()
  563. {
  564. ListView lv1 = new ListView ();
  565. ListViewItem item1 = new ListViewItem ("Item1");
  566. ListViewItem item2 = new ListViewItem ("Item2");
  567. ListViewItem item3 = new ListViewItem ("Item3");
  568. lv1.Items.Add ("Item4");
  569. Assert.AreEqual (1, lv1.Items.Count, "#A1");
  570. lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
  571. Assert.AreEqual (4, lv1.Items.Count, "#A1");
  572. }
  573. [Test]
  574. [ExpectedException(typeof(ArgumentNullException))]
  575. public void ListViewItemCollectionTest_AddRange_NullException ()
  576. {
  577. ListView lv1 = new ListView ();
  578. ListViewItem[] value = null;
  579. lv1.Items.AddRange (value);
  580. }
  581. [Test]
  582. [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  583. public void ListViewItemCollectionTest_AddRange_OwnedItem ()
  584. {
  585. //MSDN told us, we can use this method to reuse items from a different ListView control. That is not true.
  586. ListView lv1 = new ListView ();
  587. ListView lv2 = new ListView ();
  588. ListViewItem a = lv1.Items.Add ("Item1");
  589. ListViewItem b = lv1.Items.Add ("Item2");
  590. lv2.Items.AddRange (new ListViewItem[] { a, b });
  591. }
  592. [Test]
  593. [ExpectedException(typeof(ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  594. public void ListViewItemCollectionTest_AddRange_ExistingItem ()
  595. {
  596. ListView lv1 = new ListView ();
  597. ListViewItem item1 = lv1.Items.Add ("Item1");
  598. lv1.Items.Add (item1);
  599. }
  600. [Test]
  601. public void ListViewItemCollectionTest_Insert ()
  602. {
  603. ListView lvw = new ListView ();
  604. ListViewItem item = new ListViewItem ("Title");
  605. ListViewItem newItem = lvw.Items.Insert (0, item);
  606. Assert.AreSame (newItem, item, "#A1");
  607. Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
  608. Assert.AreSame (newItem, lvw.Items [0], "#A3");
  609. Assert.AreSame (lvw, newItem.ListView, "#A4");
  610. newItem = lvw.Items.Insert (1, "A title");
  611. Assert.AreEqual ("A title", newItem.Text, "#B1");
  612. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  613. Assert.AreEqual (1, newItem.Index, "#B3");
  614. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  615. Assert.AreSame (lvw, newItem.ListView, "#B5");
  616. Assert.AreEqual (0, item.Index, "#B6");
  617. Assert.AreSame (item, lvw.Items [0], "#B7");
  618. newItem = lvw.Items.Insert (0, "Other title");
  619. Assert.AreEqual ("Other title", newItem.Text, "#C1");
  620. Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
  621. Assert.AreEqual (0, newItem.Index, "#C3");
  622. Assert.AreSame (newItem, lvw.Items [0], "#C4");
  623. Assert.AreSame (lvw, newItem.ListView, "#C5");
  624. Assert.AreEqual (1, item.Index, "#C6");
  625. Assert.AreSame (item, lvw.Items [1], "#C7");
  626. newItem = lvw.Items.Insert (3, "Some title", 4);
  627. Assert.AreEqual ("Some title", newItem.Text, "#D1");
  628. Assert.AreEqual (4, newItem.ImageIndex, "#D2");
  629. Assert.AreEqual (3, newItem.Index, "#D3");
  630. Assert.AreSame (newItem, lvw.Items [3], "#D4");
  631. Assert.AreSame (lvw, newItem.ListView, "#D5");
  632. Assert.AreEqual (1, item.Index, "#D6");
  633. Assert.AreSame (item, lvw.Items [1], "#D7");
  634. newItem = lvw.Items.Insert (0, "No title", 4);
  635. Assert.AreEqual ("No title", newItem.Text, "#E1");
  636. Assert.AreEqual (4, newItem.ImageIndex, "#E2");
  637. Assert.AreEqual (0, newItem.Index, "#E3");
  638. Assert.AreSame (newItem, lvw.Items [0], "#E4");
  639. Assert.AreSame (lvw, newItem.ListView, "#E5");
  640. Assert.AreEqual (2, item.Index, "#E6");
  641. Assert.AreSame (item, lvw.Items [2], "#E7");
  642. }
  643. [Test]
  644. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  645. public void ListViewItemCollectionTest_Insert_ExistingItem ()
  646. {
  647. ListView lvw = new ListView ();
  648. ListViewItem itemA = lvw.Items.Add ("A");
  649. lvw.Items.Insert (0, itemA);
  650. }
  651. [Test]
  652. [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  653. public void ListViewItemCollectionTest_Insert_OwnedItem ()
  654. {
  655. ListView lv1 = new ListView ();
  656. ListView lv2 = new ListView ();
  657. ListViewItem item = lv1.Items.Add ("A");
  658. lv2.Items.Insert (0, item);
  659. }
  660. [Test]
  661. [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  662. public void ListViewItemCollectionTest_Indexer_OwnedItem ()
  663. {
  664. ListView lv1 = new ListView ();
  665. ListView lv2 = new ListView ();
  666. ListViewItem item = lv1.Items.Add ("A");
  667. lv2.Items.Add ("Dummy");
  668. lv2.Items[0] = item;
  669. }
  670. [Test]
  671. public void ListViewItemCollectionTest_Remove ()
  672. {
  673. Form form = new Form ();
  674. form.ShowInTaskbar = false;
  675. ListView lvw = new ListView ();
  676. form.Controls.Add (lvw);
  677. lvw.MultiSelect = true;
  678. lvw.CheckBoxes = true;
  679. form.Show ();
  680. ListViewItem itemA = lvw.Items.Add ("A");
  681. ListViewItem itemB = lvw.Items.Add ("B");
  682. lvw.Items.Add ("C");
  683. ListViewItem itemD = lvw.Items.Add ("D");
  684. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  685. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  686. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  687. itemB.Checked = true;
  688. itemD.Checked = true;
  689. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  690. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  691. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  692. Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
  693. Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
  694. itemD.Selected = true;
  695. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  696. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  697. Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
  698. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  699. Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
  700. Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
  701. lvw.Items.Remove (itemB);
  702. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  703. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  704. Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
  705. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  706. Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
  707. lvw.Items.Remove (itemA);
  708. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  709. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  710. Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
  711. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  712. Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
  713. form.Dispose ();
  714. }
  715. [Test]
  716. public void ListViewItemCollectionTest_RemoveAt ()
  717. {
  718. Form form = new Form ();
  719. form.ShowInTaskbar = false;
  720. ListView lvw = new ListView ();
  721. form.Controls.Add (lvw);
  722. lvw.MultiSelect = true;
  723. lvw.CheckBoxes = true;
  724. lvw.Items.Add ("A");
  725. lvw.Items.Add ("B");
  726. lvw.Items.Add ("C");
  727. lvw.Items.Add ("D");
  728. form.Show ();
  729. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  730. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  731. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  732. lvw.Items [1].Checked = true;
  733. lvw.Items [3].Checked = true;
  734. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  735. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  736. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  737. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
  738. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
  739. lvw.Items [3].Selected = true;
  740. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  741. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  742. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
  743. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  744. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
  745. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
  746. lvw.Items.RemoveAt (1);
  747. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  748. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  749. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
  750. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  751. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
  752. lvw.Items.RemoveAt (0);
  753. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  754. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  755. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
  756. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  757. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
  758. form.Dispose ();
  759. }
  760. #if NET_2_0
  761. [Test]
  762. public void ListViewItemCollectionTest_RemoveByKey ()
  763. {
  764. ListView lvw = new ListView ();
  765. ListViewItem lvi1 = new ListViewItem ("A");
  766. lvi1.Name = "A name";
  767. ListViewItem lvi2 = new ListViewItem ("B");
  768. lvi2.Name = "B name";
  769. ListViewItem lvi3 = new ListViewItem ("C");
  770. lvi3.Name = "Same name";
  771. ListViewItem lvi4 = new ListViewItem ("D");
  772. lvi4.Name = "Same name";
  773. ListViewItem lvi5 = new ListViewItem ("E");
  774. lvi5.Name = String.Empty;
  775. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
  776. Assert.AreEqual (5, lvw.Items.Count, "#A1");
  777. lvw.Items.RemoveByKey ("B name");
  778. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  779. Assert.AreSame (lvi1, lvw.Items [0], "#B2");
  780. Assert.AreSame (lvi3, lvw.Items [1], "#B3");
  781. Assert.AreSame (lvi4, lvw.Items [2], "#B4");
  782. Assert.AreSame (lvi5, lvw.Items [3], "#B5");
  783. lvw.Items.RemoveByKey ("Same name");
  784. Assert.AreEqual (3, lvw.Items.Count, "#C1");
  785. Assert.AreSame (lvi1, lvw.Items [0], "#C2");
  786. Assert.AreSame (lvi4, lvw.Items [1], "#C3");
  787. Assert.AreSame (lvi5, lvw.Items [2], "#C4");
  788. lvw.Items.RemoveByKey ("a NAME");
  789. Assert.AreEqual (2, lvw.Items.Count, "#D1");
  790. Assert.AreSame (lvi4, lvw.Items [0], "#D2");
  791. Assert.AreSame (lvi5, lvw.Items [1], "#D3");
  792. lvw.Items.RemoveByKey (String.Empty);
  793. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  794. Assert.AreSame (lvi4, lvw.Items [0], "#E2");
  795. Assert.AreSame (lvi5, lvw.Items [1], "#E3");
  796. }
  797. [Test]
  798. public void ListViewItemCollectionTest_IndexOfKey ()
  799. {
  800. ListView lvw = new ListView ();
  801. ListViewItem lvi1 = new ListViewItem ("A");
  802. lvi1.Name = "A name";
  803. ListViewItem lvi2 = new ListViewItem ("B");
  804. lvi2.Name = "Same name";
  805. ListViewItem lvi3 = new ListViewItem ("C");
  806. lvi3.Name = "Same name";
  807. ListViewItem lvi4 = new ListViewItem ("D");
  808. lvi4.Name = String.Empty;
  809. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
  810. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  811. Assert.AreEqual (-1, lvw.Items.IndexOfKey (String.Empty), "#A2");
  812. Assert.AreEqual (-1, lvw.Items.IndexOfKey (null), "#A3");
  813. Assert.AreEqual (0, lvw.Items.IndexOfKey ("A name"), "#A4");
  814. Assert.AreEqual (0, lvw.Items.IndexOfKey ("a NAME"), "#A5");
  815. Assert.AreEqual (1, lvw.Items.IndexOfKey ("Same name"), "#A6");
  816. ListViewItem lvi5 = new ListViewItem ("E");
  817. lvw.Items.Add (lvi5);
  818. lvi5.Name = "E name";
  819. Assert.AreEqual (4, lvw.Items.IndexOfKey ("E name"), "#B1");
  820. }
  821. [Test]
  822. public void ListViewItemCollectionTest_Indexer ()
  823. {
  824. ListView lvw = new ListView ();
  825. ListViewItem lvi1 = new ListViewItem ("A");
  826. lvi1.Name = "A name";
  827. ListViewItem lvi2 = new ListViewItem ("B");
  828. lvi2.Name = "Same name";
  829. ListViewItem lvi3 = new ListViewItem ("C");
  830. lvi3.Name = "Same name";
  831. ListViewItem lvi4 = new ListViewItem ("D");
  832. lvi4.Name = String.Empty;
  833. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
  834. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  835. Assert.AreEqual (null, lvw.Items [String.Empty], "#A2");
  836. Assert.AreEqual (null, lvw.Items [null], "#A3");
  837. Assert.AreSame (lvi1, lvw.Items ["A name"], "#A4");
  838. Assert.AreSame (lvi1, lvw.Items ["a NAME"], "#A5");
  839. Assert.AreSame (lvi2, lvw.Items ["Same name"], "#A6");
  840. ListViewItem lvi5 = new ListViewItem ("E");
  841. lvw.Items.Add (lvi5);
  842. lvi5.Name = "E name";
  843. Assert.AreSame (lvi5, lvw.Items ["E name"], "#B1");
  844. }
  845. [Test]
  846. public void ListViewItemCollectionTest_ContainsKey ()
  847. {
  848. ListView lvw = new ListView();
  849. ListViewItem lvi1 = new ListViewItem("A");
  850. lvi1.Name = "A name";
  851. ListViewItem lvi2 = new ListViewItem("B");
  852. lvi2.Name = "B name";
  853. ListViewItem lvi3 = new ListViewItem("D");
  854. lvi3.Name = String.Empty;
  855. lvw.Items.AddRange(new ListViewItem[] { lvi1, lvi2, lvi3 });
  856. Assert.AreEqual(3, lvw.Items.Count, "#A1");
  857. Assert.AreEqual(false, lvw.Items.ContainsKey (String.Empty), "#A2");
  858. Assert.AreEqual(false, lvw.Items.ContainsKey (null), "#A3");
  859. Assert.AreEqual(true, lvw.Items.ContainsKey ("A name"), "#A4");
  860. Assert.AreEqual(true, lvw.Items.ContainsKey ("a NAME"), "#A5");
  861. Assert.AreEqual(true, lvw.Items.ContainsKey ("B name"), "#A6");
  862. ListViewItem lvi5 = new ListViewItem("E");
  863. lvw.Items.Add(lvi5);
  864. lvi5.Name = "E name";
  865. Assert.AreEqual(true, lvw.Items.ContainsKey ("E name"), "#B1");
  866. }
  867. [Test]
  868. public void ListViewItemCollectionTest_Find ()
  869. {
  870. ListView lvw = new ListView ();
  871. ListViewItem lvi1 = new ListViewItem ("A");
  872. lvi1.Name = "A name";
  873. ListViewItem lvi2 = new ListViewItem ("B");
  874. lvi2.Name = "a NAME";
  875. ListViewItem lvi3 = new ListViewItem ("C");
  876. lvi3.Name = "a NAME";
  877. ListViewItem lvi4 = new ListViewItem ("D");
  878. lvi4.Name = String.Empty;
  879. ListViewItem lvi5 = new ListViewItem ("F");
  880. lvi5.Name = String.Empty;
  881. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
  882. Assert.AreEqual (5, lvw.Items.Count, "#A1");
  883. ListViewItem [] items = lvw.Items.Find ("A name", false);
  884. Assert.AreEqual (3, items.Length, "#B11");
  885. Assert.AreSame (lvi1, items [0], "#B2");
  886. Assert.AreSame (lvi2, items [1], "#B3");
  887. Assert.AreSame (lvi3, items [2], "#B4");
  888. items = lvw.Items.Find (String.Empty, false);
  889. Assert.AreEqual (2, items.Length, "#B1");
  890. Assert.AreSame (lvi4, items [0], "#B2");
  891. Assert.AreSame (lvi5, items [1], "#B3");
  892. Assert.AreEqual (0, lvw.Items.Find (null, false).Length, "#C1");
  893. }
  894. #endif
  895. }
  896. }