ListViewCollectionsTest.cs 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476
  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. ColumnHeader colA = new ColumnHeader ();
  56. ColumnHeader colB = new ColumnHeader ();
  57. // Duplicated elements with same text added
  58. listview.Columns.Add (colA);
  59. listview.Columns.Add (colB);
  60. Assert.AreEqual (2, listview.Columns.Count, "#1");
  61. Assert.AreEqual ("ColumnHeader", listview.Columns[0].Text, "#2");
  62. Assert.AreSame (listview, colA.ListView, "#3");
  63. Assert.AreSame (listview, colB.ListView, "#4");
  64. }
  65. [Test]
  66. public void ColumnHeaderCollectionTest_ClearTest ()
  67. {
  68. ListView listview = new ListView ();
  69. ColumnHeader colA = new ColumnHeader ();
  70. ColumnHeader colB = new ColumnHeader ();
  71. listview.Columns.Add (colA);
  72. listview.Columns.Add (colB);
  73. listview.Columns.Clear ();
  74. Assert.AreEqual (0, listview.Columns.Count, "#1");
  75. Assert.IsNull (colA.ListView, "#2");
  76. Assert.IsNull (colB.ListView, "#3");
  77. }
  78. [Test]
  79. public void ColumnHeaderCollectionTest_Remove ()
  80. {
  81. ListView listview = new ListView ();
  82. ColumnHeader colA = new ColumnHeader ();
  83. ColumnHeader colB = new ColumnHeader ();
  84. ColumnHeader colC = new ColumnHeader ();
  85. listview.Columns.Add (colA);
  86. listview.Columns.Add (colB);
  87. listview.Columns.Add (colC);
  88. listview.Columns.Remove (colB);
  89. Assert.AreEqual (2, listview.Columns.Count, "#A1");
  90. Assert.AreSame (colA, listview.Columns [0], "#A2");
  91. Assert.AreSame (colC, listview.Columns [1], "#A3");
  92. Assert.AreSame (listview, colA.ListView, "#A4");
  93. Assert.IsNull (colB.ListView, "#A5");
  94. Assert.AreSame (listview, colC.ListView, "#A6");
  95. listview.Columns.Remove (colC);
  96. Assert.AreEqual (1, listview.Columns.Count, "#B1");
  97. Assert.AreSame (colA, listview.Columns [0], "#B2");
  98. Assert.AreSame (listview, colA.ListView, "#B3");
  99. Assert.IsNull (colB.ListView, "#B4");
  100. Assert.IsNull (colC.ListView, "#B5");
  101. listview.Columns.Remove (colA);
  102. Assert.AreEqual (0, listview.Columns.Count, "#C1");
  103. Assert.IsNull (colA.ListView, "#C2");
  104. Assert.IsNull (colB.ListView, "#C3");
  105. Assert.IsNull (colC.ListView, "#C4");
  106. }
  107. [Test]
  108. public void ColumnHeaderCollectionTest_RemoveAt ()
  109. {
  110. ListView listview = new ListView ();
  111. ColumnHeader colA = new ColumnHeader ();
  112. ColumnHeader colB = new ColumnHeader ();
  113. ColumnHeader colC = new ColumnHeader ();
  114. listview.Columns.Add (colA);
  115. listview.Columns.Add (colB);
  116. listview.Columns.Add (colC);
  117. listview.Columns.RemoveAt (1);
  118. Assert.AreEqual (2, listview.Columns.Count, "#A1");
  119. Assert.AreSame (colA, listview.Columns [0], "#A2");
  120. Assert.AreSame (colC, listview.Columns [1], "#A3");
  121. Assert.AreSame (listview, colA.ListView, "#A4");
  122. Assert.IsNull (colB.ListView, "#A5");
  123. Assert.AreSame (listview, colC.ListView, "#A6");
  124. listview.Columns.RemoveAt (0);
  125. Assert.AreEqual (1, listview.Columns.Count, "#B1");
  126. Assert.AreSame (colC, listview.Columns [0], "#B2");
  127. Assert.IsNull (colA.ListView, "#B3");
  128. Assert.IsNull (colB.ListView, "#B4");
  129. Assert.AreSame (listview, colC.ListView, "#B5");
  130. listview.Columns.RemoveAt (0);
  131. Assert.AreEqual (0, listview.Columns.Count, "#C1");
  132. Assert.IsNull (colA.ListView, "#C2");
  133. Assert.IsNull (colB.ListView, "#C3");
  134. Assert.IsNull (colC.ListView, "#C4");
  135. }
  136. /*
  137. CheckedIndexCollection
  138. */
  139. [Test]
  140. public void CheckedIndexCollectionTest_PropertiesTest ()
  141. {
  142. ListView listview = new ListView ();
  143. // Properties
  144. Assert.AreEqual (true, listview.CheckedIndices.IsReadOnly, "CheckedIndexCollectionTest_PropertiesTest#1");
  145. Assert.AreEqual (false, ((ICollection)listview.CheckedIndices).IsSynchronized, "CheckedIndexCollectionTest_PropertiesTest#2");
  146. Assert.AreEqual (listview.CheckedIndices, ((ICollection)listview.CheckedIndices).SyncRoot, "CheckedIndexCollectionTest_PropertiesTest#3");
  147. Assert.AreEqual (true, ((IList)listview.CheckedIndices).IsFixedSize, "CheckedIndexCollectionTest_PropertiesTest#4");
  148. Assert.AreEqual (0, listview.CheckedIndices.Count, "CheckedIndexCollectionTest_PropertiesTest#5");
  149. }
  150. // Exceptions
  151. [Test, ExpectedException (typeof (NotSupportedException))]
  152. public void CheckedIndexCollectionTest_Add_ExceptionTest ()
  153. {
  154. ListView listview = new ListView ();
  155. ((IList)listview.CheckedIndices).Add (5);
  156. }
  157. [Test, ExpectedException (typeof (NotSupportedException))]
  158. public void CheckedIndexCollectionTest_Remove_ExceptionTest ()
  159. {
  160. ListView listview = new ListView ();
  161. ((IList)listview.CheckedIndices).Remove (5);
  162. }
  163. [Test, ExpectedException (typeof (NotSupportedException))]
  164. public void CheckedIndexCollectionTest_RemoveAt_ExceptionTest ()
  165. {
  166. ListView listview = new ListView ();
  167. ((IList)listview.CheckedIndices).RemoveAt (5);
  168. }
  169. /*
  170. CheckedItemCollection
  171. */
  172. [Test]
  173. public void CheckedItemCollectionTest_PropertiesTest ()
  174. {
  175. ListView listview = new ListView ();
  176. // Properties
  177. Assert.AreEqual (true, listview.CheckedItems.IsReadOnly, "CheckedItemCollectionTest_PropertiesTest#1");
  178. Assert.AreEqual (false, ((ICollection)listview.CheckedItems).IsSynchronized, "CheckedItemCollectionTest_PropertiesTest#2");
  179. Assert.AreEqual (listview.CheckedItems, ((ICollection)listview.CheckedItems).SyncRoot, "CheckedItemCollectionTest_PropertiesTest#3");
  180. Assert.AreEqual (true, ((IList)listview.CheckedItems).IsFixedSize, "CheckedItemCollectionTest_PropertiesTest#4");
  181. Assert.AreEqual (0, listview.CheckedItems.Count, "CheckedItemCollectionTest_PropertiesTest#5");
  182. }
  183. // Exceptions
  184. [Test, ExpectedException (typeof (NotSupportedException))]
  185. public void CheckedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
  186. {
  187. ListView listview = new ListView ();
  188. ((IList)listview.CheckedItems).Add (5);
  189. }
  190. [Test]
  191. public void CheckedItemCollectionTest_Order ()
  192. {
  193. Form form = new Form ();
  194. form.ShowInTaskbar = false;
  195. ListView lvw = new ListView ();
  196. lvw.CheckBoxes = true;
  197. form.Controls.Add (lvw);
  198. ListViewItem itemA = lvw.Items.Add ("A");
  199. itemA.Checked = true;
  200. ListViewItem itemB = lvw.Items.Add ("B");
  201. itemB.Checked = true;
  202. ListViewItem itemC = lvw.Items.Add ("C");
  203. itemC.Checked = true;
  204. Assert.AreEqual (3, lvw.CheckedItems.Count, "#A1");
  205. Assert.AreSame (itemA, lvw.CheckedItems [0], "#A2");
  206. Assert.AreSame (itemB, lvw.CheckedItems [1], "#A3");
  207. Assert.AreSame (itemC, lvw.CheckedItems [2], "#A3");
  208. itemB.Checked = false;
  209. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B1");
  210. Assert.AreSame (itemA, lvw.CheckedItems [0], "#B2");
  211. Assert.AreSame (itemC, lvw.CheckedItems [1], "#B3");
  212. itemB.Checked = true;
  213. Assert.AreEqual (3, lvw.CheckedItems.Count, "#C1");
  214. Assert.AreSame (itemA, lvw.CheckedItems [0], "#C2");
  215. Assert.AreSame (itemB, lvw.CheckedItems [1], "#C3");
  216. Assert.AreSame (itemC, lvw.CheckedItems [2], "#C4");
  217. lvw.Sorting = SortOrder.Descending;
  218. Assert.AreEqual (3, lvw.CheckedItems.Count, "#D1");
  219. Assert.AreSame (itemA, lvw.CheckedItems [0], "#D2");
  220. Assert.AreSame (itemB, lvw.CheckedItems [1], "#D3");
  221. Assert.AreSame (itemC, lvw.CheckedItems [2], "#D4");
  222. // sorting only takes effect when listview is created
  223. form.Show ();
  224. Assert.AreEqual (3, lvw.CheckedItems.Count, "#E1");
  225. Assert.AreSame (itemC, lvw.CheckedItems [0], "#E2");
  226. Assert.AreSame (itemB, lvw.CheckedItems [1], "#E3");
  227. Assert.AreSame (itemA, lvw.CheckedItems [2], "#E4");
  228. form.Dispose ();
  229. }
  230. [Test, ExpectedException (typeof (NotSupportedException))]
  231. public void CheckedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
  232. {
  233. ListView listview = new ListView ();
  234. ((IList)listview.CheckedItems).Remove (5);
  235. }
  236. [Test, ExpectedException (typeof (NotSupportedException))]
  237. public void CheckedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
  238. {
  239. ListView listview = new ListView ();
  240. ((IList)listview.CheckedItems).RemoveAt (5);
  241. }
  242. /*
  243. SelectedIndexCollection
  244. */
  245. [Test]
  246. public void SelectedIndexCollectionTest_PropertiesTest ()
  247. {
  248. ListView listview = new ListView ();
  249. // Properties
  250. #if !NET_2_0
  251. Assert.AreEqual (true, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
  252. Assert.AreEqual (true, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
  253. #else
  254. Assert.AreEqual (false, listview.SelectedIndices.IsReadOnly, "SelectedIndexCollectionTest_PropertiesTest#1");
  255. Assert.AreEqual (false, ((IList)listview.SelectedIndices).IsFixedSize, "SelectedIndexCollectionTest_PropertiesTest#4");
  256. #endif
  257. Assert.AreEqual (false, ((ICollection)listview.SelectedIndices).IsSynchronized, "SelectedIndexCollectionTest_PropertiesTest#2");
  258. Assert.AreEqual (listview.SelectedIndices, ((ICollection)listview.SelectedIndices).SyncRoot, "SelectedIndexCollectionTest_PropertiesTest#3");
  259. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_PropertiesTest#5");
  260. }
  261. #if NET_2_0
  262. [Test]
  263. public void SelectedIndexCollectionTest_AddTest ()
  264. {
  265. ListView listview = new ListView ();
  266. listview.Items.Add ("A");
  267. int n = listview.SelectedIndices.Add (0);
  268. Assert.AreEqual (0, n, "SelectedIndexCollectionTest_AddTest#1");
  269. Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#2");
  270. // Force to create the handle
  271. listview.CreateControl ();
  272. Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#4");
  273. n = listview.SelectedIndices.Add (0);
  274. Assert.AreEqual (1, n, "SelectedIndexCollectionTest_AddTest#5");
  275. Assert.AreEqual (1, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_AddTest#6");
  276. Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_AddTest#7");
  277. }
  278. [Test]
  279. public void SelectedIndexCollectionTest_ClearTest ()
  280. {
  281. ListView listview = new ListView ();
  282. listview.Items.Add ("A");
  283. listview.Items.Add ("B");
  284. listview.Items.Add ("C");
  285. listview.SelectedIndices.Add (0);
  286. listview.SelectedIndices.Add (2);
  287. // Nothing if handle hasn't been created
  288. listview.SelectedIndices.Clear ();
  289. Assert.AreEqual (true, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#2");
  290. Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#3");
  291. Assert.AreEqual (true, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#4");
  292. // Force to create the handle
  293. listview.CreateControl ();
  294. listview.SelectedIndices.Add (0);
  295. listview.SelectedIndices.Add (2);
  296. listview.SelectedIndices.Clear ();
  297. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_ClearTest#5");
  298. Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_ClearTest#6");
  299. Assert.AreEqual (false, listview.Items [1].Selected, "SelectedIndexCollectionTest_ClearTest#7");
  300. Assert.AreEqual (false, listview.Items [2].Selected, "SelectedIndexCollectionTest_ClearTest#8");
  301. }
  302. [Test]
  303. public void SelectedIndexCollectionTest_RemoveTest ()
  304. {
  305. ListView listview = new ListView ();
  306. listview.Items.Add ("A");
  307. listview.SelectedIndices.Add (0);
  308. listview.SelectedIndices.Remove (0);
  309. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#1");
  310. Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#2");
  311. // Force to create the handle
  312. listview.CreateControl ();
  313. listview.SelectedIndices.Add (0);
  314. listview.SelectedIndices.Remove (0);
  315. Assert.AreEqual (0, listview.SelectedIndices.Count, "SelectedIndexCollectionTest_RemoveTest#3");
  316. Assert.AreEqual (false, listview.Items [0].Selected, "SelectedIndexCollectionTest_RemoveTest#4");
  317. }
  318. #endif
  319. // Exceptions
  320. #if !NET_2_0
  321. [Test, ExpectedException (typeof (NotSupportedException))]
  322. public void SelectedIndexCollectionTest_Add_ExceptionTest ()
  323. {
  324. ListView listview = new ListView ();
  325. ((IList)listview.SelectedIndices).Add (5);
  326. }
  327. [Test, ExpectedException (typeof (NotSupportedException))]
  328. public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
  329. {
  330. ListView listview = new ListView ();
  331. ((IList)listview.SelectedIndices).Remove (5);
  332. }
  333. #endif
  334. [Test, ExpectedException (typeof (NotSupportedException))]
  335. public void SelectedIndexCollectionTest_RemoveAt_ExceptionTest ()
  336. {
  337. ListView listview = new ListView ();
  338. ((IList)listview.SelectedIndices).RemoveAt (5);
  339. }
  340. #if NET_2_0
  341. [Test]
  342. public void SelectedIndexCollectionTest_Remove_ExceptionTest ()
  343. {
  344. ListView listview = new ListView ();
  345. try {
  346. listview.SelectedIndices.Remove (-1);
  347. Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#1");
  348. } catch (ArgumentOutOfRangeException) {
  349. }
  350. try {
  351. listview.SelectedIndices.Remove (listview.Items.Count);
  352. Assert.Fail ("SelectedIndexCollectionTest_Remove_ExceptionTest#2");
  353. } catch (ArgumentOutOfRangeException) {
  354. }
  355. }
  356. [Test]
  357. public void SelectedIndexCollectionTest_Add_ExceptionTest ()
  358. {
  359. ListView listview = new ListView ();
  360. try {
  361. listview.SelectedIndices.Add (-1);
  362. Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#1");
  363. } catch (ArgumentOutOfRangeException) {
  364. }
  365. try {
  366. listview.SelectedIndices.Add (listview.Items.Count);
  367. Assert.Fail ("SelectedIndexCollectionTest_Add_ExceptionTest#2");
  368. } catch (ArgumentOutOfRangeException) {
  369. }
  370. }
  371. #endif
  372. /*
  373. SelectedItemCollection
  374. */
  375. [Test]
  376. public void SelectedItemCollectionTest_PropertiesTest ()
  377. {
  378. ListView listview = new ListView ();
  379. // Properties
  380. Assert.AreEqual (true, listview.SelectedItems.IsReadOnly, "SelectedItemCollectionTest_PropertiesTest#1");
  381. Assert.AreEqual (false, ((ICollection)listview.SelectedItems).IsSynchronized, "SelectedItemCollectionTest_PropertiesTest#2");
  382. Assert.AreEqual (listview.SelectedItems, ((ICollection)listview.SelectedItems).SyncRoot, "SelectedItemCollectionTest_PropertiesTest#3");
  383. Assert.AreEqual (true, ((IList)listview.SelectedItems).IsFixedSize, "SelectedItemCollectionTest_PropertiesTest#4");
  384. Assert.AreEqual (0, listview.SelectedItems.Count, "SelectedItemCollectionTest_PropertiesTest#5");
  385. }
  386. // Exceptions
  387. [Test, ExpectedException (typeof (NotSupportedException))]
  388. public void SelectedItemCollectionTest_PropertiesTest_Add_ExceptionTest ()
  389. {
  390. ListView listview = new ListView ();
  391. ((IList)listview.SelectedItems).Add (5);
  392. }
  393. [Test, ExpectedException (typeof (NotSupportedException))]
  394. public void SelectedItemCollectionTest_PropertiesTest_Remove_ExceptionTest ()
  395. {
  396. ListView listview = new ListView ();
  397. ((IList)listview.SelectedItems).Remove (5);
  398. }
  399. [Test, ExpectedException (typeof (NotSupportedException))]
  400. public void SelectedItemCollectionTest_PropertiesTest_RemoveAt_ExceptionTest ()
  401. {
  402. ListView listview = new ListView ();
  403. ((IList)listview.SelectedItems).RemoveAt (5);
  404. }
  405. [Test]
  406. public void SelectedItemCollectionTest_Clear ()
  407. {
  408. Form form = new Form ();
  409. form.ShowInTaskbar = false;
  410. ListView lvw = new ListView ();
  411. form.Controls.Add (lvw);
  412. ListViewItem item = lvw.Items.Add ("Title");
  413. item.Selected = true;
  414. lvw.SelectedItems.Clear ();
  415. Assert.IsTrue (item.Selected, "#A1");
  416. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  417. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A3");
  418. form.Show ();
  419. Assert.IsTrue (item.Selected, "#B1");
  420. Assert.AreEqual (1, lvw.SelectedItems.Count, "#B2");
  421. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B3");
  422. // once listview is created, clear DOES have effect
  423. lvw.SelectedItems.Clear ();
  424. Assert.IsFalse (item.Selected, "#C1");
  425. Assert.AreEqual (0, lvw.SelectedItems.Count, "#C2");
  426. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#C3");
  427. form.Dispose ();
  428. }
  429. [Test]
  430. public void SelectedItemCollectionTest_Contains ()
  431. {
  432. Form form = new Form ();
  433. form.ShowInTaskbar = false;
  434. ListView lvw = new ListView ();
  435. form.Controls.Add (lvw);
  436. ListViewItem item = lvw.Items.Add ("Title");
  437. item.Selected = true;
  438. IList list = (IList) lvw.SelectedItems;
  439. Assert.IsFalse (lvw.SelectedItems.Contains (item), "#A1");
  440. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#A2");
  441. Assert.IsFalse (list.Contains (item), "#A3");
  442. Assert.IsFalse (list.Contains (new ListViewItem ()), "#A4");
  443. form.Show ();
  444. Assert.IsTrue (lvw.SelectedItems.Contains (item), "#B1");
  445. Assert.IsFalse (lvw.SelectedItems.Contains (new ListViewItem ()), "#B2");
  446. Assert.IsTrue (list.Contains (item), "#B3");
  447. Assert.IsFalse (list.Contains (new ListViewItem ()), "#B4");
  448. form.Dispose ();
  449. }
  450. [Test]
  451. public void SelectedItemCollectionTest_CopyTo ()
  452. {
  453. Form form = new Form ();
  454. form.ShowInTaskbar = false;
  455. ListView lvw = new ListView ();
  456. form.Controls.Add (lvw);
  457. ListViewItem item = lvw.Items.Add ("Title");
  458. item.Selected = true;
  459. IList list = (IList) lvw.SelectedItems;
  460. Assert.IsNotNull (list, "#A1");
  461. ListViewItem [] items = new ListViewItem [1];
  462. lvw.SelectedItems.CopyTo (items, 0);
  463. Assert.IsNull (items [0], "#A2");
  464. lvw.SelectedItems.CopyTo (items, 455);
  465. form.Show ();
  466. lvw.SelectedItems.CopyTo (items, 0);
  467. Assert.AreSame (item, items [0], "#B1");
  468. try {
  469. lvw.SelectedItems.CopyTo (items, 455);
  470. Assert.Fail ("#B2");
  471. } catch (ArgumentException) {
  472. }
  473. form.Dispose ();
  474. }
  475. [Test]
  476. public void SelectedItemCollectionTest_Count ()
  477. {
  478. Form form = new Form ();
  479. form.ShowInTaskbar = false;
  480. ListView lvw = new ListView ();
  481. form.Controls.Add (lvw);
  482. ListViewItem item = lvw.Items.Add ("Title");
  483. item.Selected = true;
  484. Assert.AreEqual (0, lvw.SelectedItems.Count, "#1");
  485. form.Show ();
  486. Assert.AreEqual (1, lvw.SelectedItems.Count, "#2");
  487. form.Dispose ();
  488. }
  489. [Test]
  490. public void SelectedItemCollectionTest_GetEnumerator ()
  491. {
  492. Form form = new Form ();
  493. form.ShowInTaskbar = false;
  494. ListView lvw = new ListView ();
  495. form.Controls.Add (lvw);
  496. ListViewItem item = lvw.Items.Add ("Title");
  497. item.Selected = true;
  498. Assert.IsFalse (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#A1");
  499. form.Show ();
  500. Assert.IsTrue (lvw.SelectedItems.GetEnumerator ().MoveNext (), "#B1");
  501. form.Dispose ();
  502. }
  503. [Test]
  504. public void SelectedItemCollectionTest_Indexer ()
  505. {
  506. Form form = new Form ();
  507. form.ShowInTaskbar = false;
  508. ListView lvw = new ListView ();
  509. form.Controls.Add (lvw);
  510. ListViewItem item = lvw.Items.Add ("Title");
  511. item.Selected = true;
  512. IList list = (IList) lvw.SelectedItems;
  513. try {
  514. ListViewItem x = lvw.SelectedItems [0];
  515. Assert.Fail ("#A1: " + x.ToString ());
  516. } catch (ArgumentOutOfRangeException) {
  517. }
  518. try {
  519. ListViewItem x = list [0] as ListViewItem;
  520. Assert.Fail ("#A2: " + x.ToString ());
  521. } catch (ArgumentOutOfRangeException) {
  522. }
  523. form.Show ();
  524. Assert.AreSame (item, lvw.SelectedItems [0], "#B1");
  525. Assert.AreSame (item, list [0], "#B2");
  526. form.Dispose ();
  527. }
  528. [Test]
  529. public void SelectedItemCollectionTest_IndexOf ()
  530. {
  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;
  538. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (item), "#A1");
  539. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#A2");
  540. Assert.AreEqual (-1, list.IndexOf (item), "#A3");
  541. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#A4");
  542. form.Show ();
  543. Assert.AreEqual (0, lvw.SelectedItems.IndexOf (item), "#B1");
  544. Assert.AreEqual (-1, lvw.SelectedItems.IndexOf (new ListViewItem ()), "#B2");
  545. Assert.AreEqual (0, list.IndexOf (item), "#B3");
  546. Assert.AreEqual (-1, list.IndexOf (new ListViewItem ()), "#B4");
  547. form.Dispose ();
  548. }
  549. #if NET_2_0
  550. [Test]
  551. public void SelectedItemCollectionTest_IndexOfKey ()
  552. {
  553. ListView lvw = new ListView ();
  554. ListViewItem lvi1 = new ListViewItem ("A");
  555. lvi1.Name = "A name";
  556. lvi1.Selected = true;
  557. ListViewItem lvi2 = new ListViewItem ("B");
  558. lvi2.Name = "Same name";
  559. lvi2.Selected = false;
  560. ListViewItem lvi3 = new ListViewItem ("C");
  561. lvi3.Name = "Same name";
  562. lvi3.Selected = true;
  563. ListViewItem lvi4 = new ListViewItem ("D");
  564. lvi4.Name = String.Empty;
  565. lvi4.Selected = true;
  566. ListViewItem lvi5 = new ListViewItem ("E");
  567. lvi5.Name = "E name";
  568. lvi5.Selected = false;
  569. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
  570. // Force to create the control
  571. lvw.CreateControl ();
  572. Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
  573. Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (String.Empty), "#A2");
  574. Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey (null), "#A3");
  575. Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("A name"), "#A4");
  576. Assert.AreEqual (0, lvw.SelectedItems.IndexOfKey ("a NAME"), "#A5");
  577. Assert.AreEqual (1, lvw.SelectedItems.IndexOfKey ("Same name"), "#A6");
  578. Assert.AreEqual (-1, lvw.SelectedItems.IndexOfKey ("E name"), "#A7");
  579. ListViewItem lvi6 = new ListViewItem ("F");
  580. lvw.Items.Add (lvi6);
  581. lvi6.Selected = true;
  582. lvi6.Name = "F name";
  583. Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
  584. Assert.AreEqual (3, lvw.SelectedItems.IndexOfKey ("F name"), "#B2");
  585. }
  586. [Test]
  587. public void SelectedItemCollectionTest_Indexer2 ()
  588. {
  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 });
  606. // Force to create the control
  607. lvw.CreateControl ();
  608. Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
  609. Assert.AreEqual (null, lvw.SelectedItems [String.Empty], "#A2");
  610. Assert.AreEqual (null, lvw.SelectedItems [null], "#A3");
  611. Assert.AreEqual (lvi1, lvw.SelectedItems ["A name"], "#A4");
  612. Assert.AreEqual (lvi1, lvw.SelectedItems ["a NAME"], "#A5");
  613. Assert.AreEqual (lvi3, lvw.SelectedItems ["Same name"], "#A6");
  614. Assert.AreEqual (null, lvw.SelectedItems ["E name"], "#A7");
  615. ListViewItem lvi6 = new ListViewItem ("F");
  616. lvw.Items.Add (lvi6);
  617. lvi6.Selected = true;
  618. lvi6.Name = "F name";
  619. Assert.AreEqual (4, lvw.SelectedItems.Count, "#B1");
  620. Assert.AreEqual (lvi6, lvw.SelectedItems ["F name"], "#B2");
  621. }
  622. #endif
  623. [Test]
  624. public void SelectedItemCollectionTest_Order ()
  625. {
  626. Form form = new Form ();
  627. form.ShowInTaskbar = false;
  628. ListView lvw = new ListView ();
  629. lvw.MultiSelect = true;
  630. form.Controls.Add (lvw);
  631. ListViewItem itemA = lvw.Items.Add ("A");
  632. itemA.Selected = true;
  633. ListViewItem itemB = lvw.Items.Add ("B");
  634. itemB.Selected = true;
  635. ListViewItem itemC = lvw.Items.Add ("C");
  636. itemC.Selected = true;
  637. form.Show ();
  638. Assert.AreEqual (3, lvw.SelectedItems.Count, "#A1");
  639. Assert.AreSame (itemA, lvw.SelectedItems [0], "#A2");
  640. Assert.AreSame (itemB, lvw.SelectedItems [1], "#A3");
  641. Assert.AreSame (itemC, lvw.SelectedItems [2], "#A3");
  642. itemB.Selected = false;
  643. Assert.AreEqual (2, lvw.SelectedItems.Count, "#B1");
  644. Assert.AreSame (itemA, lvw.SelectedItems [0], "#B2");
  645. Assert.AreSame (itemC, lvw.SelectedItems [1], "#B3");
  646. itemB.Selected = true;
  647. Assert.AreEqual (3, lvw.SelectedItems.Count, "#C1");
  648. Assert.AreSame (itemA, lvw.SelectedItems [0], "#C2");
  649. Assert.AreSame (itemB, lvw.SelectedItems [1], "#C3");
  650. Assert.AreSame (itemC, lvw.SelectedItems [2], "#C4");
  651. lvw.Sorting = SortOrder.Descending;
  652. Assert.AreEqual (3, lvw.SelectedItems.Count, "#D1");
  653. Assert.AreSame (itemC, lvw.SelectedItems [0], "#D2");
  654. Assert.AreSame (itemB, lvw.SelectedItems [1], "#D3");
  655. Assert.AreSame (itemA, lvw.SelectedItems [2], "#D4");
  656. form.Dispose ();
  657. }
  658. /*
  659. ListViewItemCollection
  660. */
  661. [Test]
  662. public void ListViewItemCollectionTest_Add ()
  663. {
  664. ListView lvw = new ListView ();
  665. ListViewItem item = new ListViewItem ("Title");
  666. ListViewItem newItem = lvw.Items.Add (item);
  667. Assert.AreSame (newItem, item, "#A1");
  668. Assert.AreEqual (0, item.Index, "#A2");
  669. Assert.AreSame (item, lvw.Items [0], "#A3");
  670. Assert.AreSame (lvw, item.ListView, "#A4");
  671. newItem = lvw.Items.Add ("A title");
  672. Assert.AreEqual ("A title", newItem.Text, "#B1");
  673. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  674. Assert.AreEqual (1, newItem.Index, "#B3");
  675. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  676. Assert.AreSame (lvw, newItem.ListView, "#B5");
  677. Assert.AreEqual (0, item.Index, "#B6");
  678. Assert.AreSame (item, lvw.Items [0], "#B7");
  679. newItem = lvw.Items.Add ("A title", 4);
  680. Assert.AreEqual ("A title", newItem.Text, "#C1");
  681. Assert.AreEqual (4, newItem.ImageIndex, "#C2");
  682. Assert.AreEqual (2, newItem.Index, "#C3");
  683. Assert.AreSame (newItem, lvw.Items [2], "#C4");
  684. Assert.AreSame (lvw, newItem.ListView, "#C5");
  685. Assert.AreEqual (0, item.Index, "#C6");
  686. Assert.AreSame (item, lvw.Items [0], "#C7");
  687. }
  688. [Test]
  689. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  690. public void ListViewItemCollectionTest_Add_ExistingItem ()
  691. {
  692. ListView lvw = new ListView ();
  693. ListViewItem itemA = lvw.Items.Add ("A");
  694. lvw.Items.Add (itemA);
  695. }
  696. [Test]
  697. [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  698. public void ListViewItemCollectionTest_Add_OwnedItem ()
  699. {
  700. ListView lv1 = new ListView ();
  701. ListView lv2 = new ListView ();
  702. ListViewItem item = lv1.Items.Add ("A");
  703. lv2.Items.Add (item);
  704. }
  705. [Test]
  706. public void ListViewItemCollectionTest_Add_Junk ()
  707. {
  708. ListView lv1 = new ListView ();
  709. ListViewItem item4 = lv1.Items.Add("Item4", 4);
  710. Assert.AreEqual(item4, lv1.Items[0], "#D1");
  711. #if NET_2_0
  712. Assert.AreEqual(string.Empty, lv1.Items[0].Name, "#D2");
  713. #endif
  714. Assert.AreEqual("Item4", lv1.Items[0].Text, "#D3");
  715. Assert.AreEqual(4, lv1.Items[0].ImageIndex, "#D4");
  716. string text = null;
  717. ListViewItem item5 = lv1.Items.Add(text);
  718. Assert.AreEqual(item5, lv1.Items[1], "#E1");
  719. #if NET_2_0
  720. Assert.AreEqual(string.Empty, lv1.Items[1].Name, "#E2");
  721. #endif
  722. Assert.AreEqual(string.Empty, lv1.Items[1].Text, "#E3");
  723. ListViewItem item6 = lv1.Items.Add(null, 5);
  724. Assert.AreEqual(item6, lv1.Items[2], "#F1");
  725. #if NET_2_0
  726. Assert.AreEqual(string.Empty, lv1.Items[2].Name, "#F2");
  727. #endif
  728. Assert.AreEqual(string.Empty, lv1.Items[2].Text, "#F3");
  729. Assert.AreEqual(5, lv1.Items[2].ImageIndex, "#F4");
  730. #if NET_2_0
  731. ListViewItem item1 = lv1.Items.Add("ItemKey1", "Item1", 1);
  732. Assert.AreEqual(item1, lv1.Items[3], "#A1");
  733. Assert.AreEqual("ItemKey1", lv1.Items[3].Name, "#A2");
  734. Assert.AreEqual("Item1", lv1.Items[3].Text, "#A3");
  735. Assert.AreEqual(1, lv1.Items[3].ImageIndex, "#A4");
  736. ListViewItem item2 = lv1.Items.Add("ItemKey2", "Item2", "Image2");
  737. Assert.AreEqual(item2, lv1.Items[4], "#B1");
  738. Assert.AreEqual("ItemKey2", lv1.Items[4].Name, "#B2");
  739. Assert.AreEqual("Item2", lv1.Items[4].Text, "#B3");
  740. Assert.AreEqual("Image2", lv1.Items[4].ImageKey, "#B4");
  741. ListViewItem item3 = lv1.Items.Add("Item3", "Image3");
  742. Assert.AreEqual(item3, lv1.Items[5], "#C1");
  743. Assert.AreEqual(string.Empty, lv1.Items[5].Name, "#C2");
  744. Assert.AreEqual("Item3", lv1.Items[5].Text, "#C3");
  745. Assert.AreEqual("Image3", lv1.Items[5].ImageKey, "#C4");
  746. ListViewItem item7 = lv1.Items.Add(null, "Item6", 6);
  747. Assert.AreEqual(item7, lv1.Items[6], "#G1");
  748. Assert.AreEqual(string.Empty, lv1.Items[6].Name, "#G2");
  749. Assert.AreEqual("Item6", lv1.Items[6].Text, "#G3");
  750. Assert.AreEqual(6, lv1.Items[6].ImageIndex, "#G4");
  751. ListViewItem item8 = lv1.Items.Add("ItemKey7", null, 7);
  752. Assert.AreEqual(item8, lv1.Items[7], "#H1");
  753. Assert.AreEqual("ItemKey7", lv1.Items[7].Name, "#H2");
  754. Assert.AreEqual(string.Empty, lv1.Items[7].Text, "#H3");
  755. Assert.AreEqual(7, lv1.Items[7].ImageIndex, "#H4");
  756. ListViewItem item9 = lv1.Items.Add("ItemKey8", "Item8", null);
  757. Assert.AreEqual(item9, lv1.Items[8], "#I1");
  758. Assert.AreEqual("ItemKey8", lv1.Items[8].Name, "#I2");
  759. Assert.AreEqual("Item8", lv1.Items[8].Text, "#I3");
  760. Assert.AreEqual(string.Empty, lv1.Items[8].ImageKey, "#I4");
  761. #endif
  762. }
  763. [Test]
  764. public void ListViewItemCollectionTest_AddRange ()
  765. {
  766. ListView lv1 = new ListView ();
  767. ListViewItem item1 = new ListViewItem ("Item1");
  768. ListViewItem item2 = new ListViewItem ("Item2");
  769. ListViewItem item3 = new ListViewItem ("Item3");
  770. lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
  771. Assert.AreSame (item1, lv1.Items[0], "#A1");
  772. Assert.AreEqual (0, item1.Index, "#A2");
  773. Assert.AreSame (lv1, item1.ListView, "#A3");
  774. Assert.AreSame (item2, lv1.Items[1], "#B1");
  775. Assert.AreEqual (1, item2.Index, "#B2");
  776. Assert.AreSame (lv1, item2.ListView, "#B3");
  777. Assert.AreSame (item3, lv1.Items[2], "#C1");
  778. Assert.AreEqual (2, item3.Index, "#C2");
  779. Assert.AreSame (lv1, item3.ListView, "#C3");
  780. }
  781. [Test]
  782. public void ListViewItemCollectionTest_AddRange_Count ()
  783. {
  784. ListView lv1 = new ListView ();
  785. ListViewItem item1 = new ListViewItem ("Item1");
  786. ListViewItem item2 = new ListViewItem ("Item2");
  787. ListViewItem item3 = new ListViewItem ("Item3");
  788. lv1.Items.Add ("Item4");
  789. Assert.AreEqual (1, lv1.Items.Count, "#A1");
  790. lv1.Items.AddRange (new ListViewItem[] { item1, item2, item3 });
  791. Assert.AreEqual (4, lv1.Items.Count, "#A1");
  792. }
  793. [Test]
  794. [ExpectedException(typeof(ArgumentNullException))]
  795. public void ListViewItemCollectionTest_AddRange_NullException ()
  796. {
  797. ListView lv1 = new ListView ();
  798. ListViewItem[] value = null;
  799. lv1.Items.AddRange (value);
  800. }
  801. [Test]
  802. [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  803. public void ListViewItemCollectionTest_AddRange_OwnedItem ()
  804. {
  805. //MSDN told us, we can use this method to reuse items from a different ListView control. That is not true.
  806. ListView lv1 = new ListView ();
  807. ListView lv2 = new ListView ();
  808. ListViewItem a = lv1.Items.Add ("Item1");
  809. ListViewItem b = lv1.Items.Add ("Item2");
  810. lv2.Items.AddRange (new ListViewItem[] { a, b });
  811. }
  812. [Test]
  813. [ExpectedException(typeof(ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  814. public void ListViewItemCollectionTest_AddRange_ExistingItem ()
  815. {
  816. ListView lv1 = new ListView ();
  817. ListViewItem item1 = lv1.Items.Add ("Item1");
  818. lv1.Items.Add (item1);
  819. }
  820. [Test]
  821. public void ListViewItemCollectionTest_Clear ()
  822. {
  823. ListView lvw = new ListView ();
  824. ListViewItem itemA = lvw.Items.Add ("A");
  825. ListViewItem itemB = lvw.Items.Add ("B");
  826. Assert.AreEqual (2, lvw.Items.Count, "#A1");
  827. Assert.AreSame (lvw, itemA.ListView, "#A2");
  828. Assert.AreSame (lvw, itemB.ListView, "#A3");
  829. lvw.Items.Clear ();
  830. Assert.AreEqual (0, lvw.Items.Count, "#B1");
  831. Assert.IsNull (itemA.ListView, "#B2");
  832. Assert.IsNull (itemB.ListView, "#B3");
  833. }
  834. [Test]
  835. public void ListViewItemCollectionTest_Insert ()
  836. {
  837. ListView lvw = new ListView ();
  838. ListViewItem item = new ListViewItem ("Title");
  839. ListViewItem newItem = lvw.Items.Insert (0, item);
  840. Assert.AreSame (newItem, item, "#A1");
  841. Assert.AreEqual (-1, newItem.ImageIndex, "#A2");
  842. Assert.AreSame (newItem, lvw.Items [0], "#A3");
  843. Assert.AreSame (lvw, newItem.ListView, "#A4");
  844. newItem = lvw.Items.Insert (1, "A title");
  845. Assert.AreEqual ("A title", newItem.Text, "#B1");
  846. Assert.AreEqual (-1, newItem.ImageIndex, "#B2");
  847. Assert.AreEqual (1, newItem.Index, "#B3");
  848. Assert.AreSame (newItem, lvw.Items [1], "#B4");
  849. Assert.AreSame (lvw, newItem.ListView, "#B5");
  850. Assert.AreEqual (0, item.Index, "#B6");
  851. Assert.AreSame (item, lvw.Items [0], "#B7");
  852. newItem = lvw.Items.Insert (0, "Other title");
  853. Assert.AreEqual ("Other title", newItem.Text, "#C1");
  854. Assert.AreEqual (-1, newItem.ImageIndex, "#C2");
  855. Assert.AreEqual (0, newItem.Index, "#C3");
  856. Assert.AreSame (newItem, lvw.Items [0], "#C4");
  857. Assert.AreSame (lvw, newItem.ListView, "#C5");
  858. Assert.AreEqual (1, item.Index, "#C6");
  859. Assert.AreSame (item, lvw.Items [1], "#C7");
  860. newItem = lvw.Items.Insert (3, "Some title", 4);
  861. Assert.AreEqual ("Some title", newItem.Text, "#D1");
  862. Assert.AreEqual (4, newItem.ImageIndex, "#D2");
  863. Assert.AreEqual (3, newItem.Index, "#D3");
  864. Assert.AreSame (newItem, lvw.Items [3], "#D4");
  865. Assert.AreSame (lvw, newItem.ListView, "#D5");
  866. Assert.AreEqual (1, item.Index, "#D6");
  867. Assert.AreSame (item, lvw.Items [1], "#D7");
  868. newItem = lvw.Items.Insert (0, "No title", 4);
  869. Assert.AreEqual ("No title", newItem.Text, "#E1");
  870. Assert.AreEqual (4, newItem.ImageIndex, "#E2");
  871. Assert.AreEqual (0, newItem.Index, "#E3");
  872. Assert.AreSame (newItem, lvw.Items [0], "#E4");
  873. Assert.AreSame (lvw, newItem.ListView, "#E5");
  874. Assert.AreEqual (2, item.Index, "#E6");
  875. Assert.AreSame (item, lvw.Items [2], "#E7");
  876. }
  877. [Test]
  878. [ExpectedException (typeof (ArgumentException))] // An item cannot be added more than once. To add an item again, you need to clone it
  879. public void ListViewItemCollectionTest_Insert_ExistingItem ()
  880. {
  881. ListView lvw = new ListView ();
  882. ListViewItem itemA = lvw.Items.Add ("A");
  883. lvw.Items.Insert (0, itemA);
  884. }
  885. [Test]
  886. [ExpectedException (typeof (ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  887. public void ListViewItemCollectionTest_Insert_OwnedItem ()
  888. {
  889. ListView lv1 = new ListView ();
  890. ListView lv2 = new ListView ();
  891. ListViewItem item = lv1.Items.Add ("A");
  892. lv2.Items.Insert (0, item);
  893. }
  894. [Test]
  895. [ExpectedException(typeof(ArgumentException))] // An item cannot be added to more than one ListView. To add an item again, you need to clone it
  896. public void ListViewItemCollectionTest_Indexer_OwnedItem ()
  897. {
  898. ListView lv1 = new ListView ();
  899. ListView lv2 = new ListView ();
  900. ListViewItem item = lv1.Items.Add ("A");
  901. lv2.Items.Add ("Dummy");
  902. lv2.Items[0] = item;
  903. }
  904. [Test]
  905. public void ListViewItemCollectionTest_Remove ()
  906. {
  907. Form form = new Form ();
  908. form.ShowInTaskbar = false;
  909. ListView lvw = new ListView ();
  910. form.Controls.Add (lvw);
  911. lvw.MultiSelect = true;
  912. lvw.CheckBoxes = true;
  913. form.Show ();
  914. ListViewItem itemA = lvw.Items.Add ("A");
  915. ListViewItem itemB = lvw.Items.Add ("B");
  916. lvw.Items.Add ("C");
  917. ListViewItem itemD = lvw.Items.Add ("D");
  918. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  919. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  920. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  921. itemB.Checked = true;
  922. itemD.Checked = true;
  923. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  924. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  925. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  926. Assert.AreSame (itemB, lvw.CheckedItems [0], "#B4");
  927. Assert.AreSame (itemD, lvw.CheckedItems [1], "#B5");
  928. itemD.Selected = true;
  929. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  930. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  931. Assert.AreSame (itemD, lvw.SelectedItems [0], "#C3");
  932. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  933. Assert.AreSame (itemB, lvw.CheckedItems [0], "#C5");
  934. Assert.AreSame (itemD, lvw.CheckedItems [1], "#C6");
  935. lvw.Items.Remove (itemB);
  936. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  937. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  938. Assert.AreSame (itemD, lvw.SelectedItems [0], "#D3");
  939. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  940. Assert.AreSame (itemD, lvw.CheckedItems [0], "#D5");
  941. lvw.Items.Remove (itemA);
  942. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  943. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  944. Assert.AreEqual (itemD, lvw.SelectedItems [0], "#E3");
  945. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  946. Assert.AreEqual (itemD, lvw.CheckedItems [0], "#E5");
  947. Assert.IsNull (itemA.ListView, "#F1");
  948. Assert.IsNull (itemB.ListView, "#F2");
  949. Assert.AreSame (lvw, itemD.ListView, "#F3");
  950. form.Dispose ();
  951. }
  952. [Test]
  953. public void ListViewItemCollectionTest_RemoveAt ()
  954. {
  955. Form form = new Form ();
  956. form.ShowInTaskbar = false;
  957. ListView lvw = new ListView ();
  958. form.Controls.Add (lvw);
  959. lvw.MultiSelect = true;
  960. lvw.CheckBoxes = true;
  961. ListViewItem itemA = lvw.Items.Add ("A");
  962. ListViewItem itemB = lvw.Items.Add ("B");
  963. ListViewItem itemC = lvw.Items.Add ("C");
  964. ListViewItem itemD = lvw.Items.Add ("D");
  965. form.Show ();
  966. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  967. Assert.AreEqual (0, lvw.SelectedItems.Count, "#A2");
  968. Assert.AreEqual (0, lvw.CheckedItems.Count, "#A3");
  969. lvw.Items [1].Checked = true;
  970. lvw.Items [3].Checked = true;
  971. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  972. Assert.AreEqual (0, lvw.SelectedItems.Count, "#B2");
  973. Assert.AreEqual (2, lvw.CheckedItems.Count, "#B3");
  974. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#B4");
  975. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#B5");
  976. lvw.Items [3].Selected = true;
  977. Assert.AreEqual (4, lvw.Items.Count, "#C1");
  978. Assert.AreEqual (1, lvw.SelectedItems.Count, "#C2");
  979. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#C3");
  980. Assert.AreEqual (2, lvw.CheckedItems.Count, "#C4");
  981. Assert.AreEqual ("B", lvw.CheckedItems [0].Text, "#C5");
  982. Assert.AreEqual ("D", lvw.CheckedItems [1].Text, "#C6");
  983. lvw.Items.RemoveAt (1);
  984. Assert.AreEqual (3, lvw.Items.Count, "#D1");
  985. Assert.AreEqual (1, lvw.SelectedItems.Count, "#D2");
  986. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#D3");
  987. Assert.AreEqual (1, lvw.CheckedItems.Count, "#D4");
  988. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#D5");
  989. lvw.Items.RemoveAt (0);
  990. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  991. Assert.AreEqual (1, lvw.SelectedItems.Count, "#E2");
  992. Assert.AreEqual ("D", lvw.SelectedItems [0].Text, "#E3");
  993. Assert.AreEqual (1, lvw.CheckedItems.Count, "#E4");
  994. Assert.AreEqual ("D", lvw.CheckedItems [0].Text, "#E5");
  995. Assert.IsNull (itemA.ListView, "#F1");
  996. Assert.IsNull (itemB.ListView, "#F2");
  997. Assert.AreSame (lvw, itemC.ListView, "#F3");
  998. Assert.AreSame (lvw, itemD.ListView, "#F4");
  999. form.Dispose ();
  1000. }
  1001. #if NET_2_0
  1002. [Test]
  1003. public void ListViewItemCollectionTest_RemoveByKey ()
  1004. {
  1005. ListView lvw = new ListView ();
  1006. ListViewItem lvi1 = new ListViewItem ("A");
  1007. lvi1.Name = "A name";
  1008. ListViewItem lvi2 = new ListViewItem ("B");
  1009. lvi2.Name = "B name";
  1010. ListViewItem lvi3 = new ListViewItem ("C");
  1011. lvi3.Name = "Same name";
  1012. ListViewItem lvi4 = new ListViewItem ("D");
  1013. lvi4.Name = "Same name";
  1014. ListViewItem lvi5 = new ListViewItem ("E");
  1015. lvi5.Name = String.Empty;
  1016. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
  1017. Assert.AreEqual (5, lvw.Items.Count, "#A1");
  1018. lvw.Items.RemoveByKey ("B name");
  1019. Assert.AreEqual (4, lvw.Items.Count, "#B1");
  1020. Assert.AreSame (lvi1, lvw.Items [0], "#B2");
  1021. Assert.AreSame (lvi3, lvw.Items [1], "#B3");
  1022. Assert.AreSame (lvi4, lvw.Items [2], "#B4");
  1023. Assert.AreSame (lvi5, lvw.Items [3], "#B5");
  1024. lvw.Items.RemoveByKey ("Same name");
  1025. Assert.AreEqual (3, lvw.Items.Count, "#C1");
  1026. Assert.AreSame (lvi1, lvw.Items [0], "#C2");
  1027. Assert.AreSame (lvi4, lvw.Items [1], "#C3");
  1028. Assert.AreSame (lvi5, lvw.Items [2], "#C4");
  1029. lvw.Items.RemoveByKey ("a NAME");
  1030. Assert.AreEqual (2, lvw.Items.Count, "#D1");
  1031. Assert.AreSame (lvi4, lvw.Items [0], "#D2");
  1032. Assert.AreSame (lvi5, lvw.Items [1], "#D3");
  1033. lvw.Items.RemoveByKey (String.Empty);
  1034. Assert.AreEqual (2, lvw.Items.Count, "#E1");
  1035. Assert.AreSame (lvi4, lvw.Items [0], "#E2");
  1036. Assert.AreSame (lvi5, lvw.Items [1], "#E3");
  1037. Assert.IsNull (lvi1.ListView, "#F1");
  1038. Assert.IsNull (lvi2.ListView, "#F2");
  1039. Assert.IsNull (lvi3.ListView, "#F3");
  1040. Assert.AreSame (lvw, lvi4.ListView, "#F4");
  1041. Assert.AreSame (lvw, lvi5.ListView, "#F5");
  1042. }
  1043. [Test]
  1044. public void ListViewItemCollectionTest_IndexOfKey ()
  1045. {
  1046. ListView lvw = new ListView ();
  1047. ListViewItem lvi1 = new ListViewItem ("A");
  1048. lvi1.Name = "A name";
  1049. ListViewItem lvi2 = new ListViewItem ("B");
  1050. lvi2.Name = "Same name";
  1051. ListViewItem lvi3 = new ListViewItem ("C");
  1052. lvi3.Name = "Same name";
  1053. ListViewItem lvi4 = new ListViewItem ("D");
  1054. lvi4.Name = String.Empty;
  1055. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
  1056. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  1057. Assert.AreEqual (-1, lvw.Items.IndexOfKey (String.Empty), "#A2");
  1058. Assert.AreEqual (-1, lvw.Items.IndexOfKey (null), "#A3");
  1059. Assert.AreEqual (0, lvw.Items.IndexOfKey ("A name"), "#A4");
  1060. Assert.AreEqual (0, lvw.Items.IndexOfKey ("a NAME"), "#A5");
  1061. Assert.AreEqual (1, lvw.Items.IndexOfKey ("Same name"), "#A6");
  1062. ListViewItem lvi5 = new ListViewItem ("E");
  1063. lvw.Items.Add (lvi5);
  1064. lvi5.Name = "E name";
  1065. Assert.AreEqual (4, lvw.Items.IndexOfKey ("E name"), "#B1");
  1066. }
  1067. [Test]
  1068. public void ListViewItemCollectionTest_Indexer ()
  1069. {
  1070. ListView lvw = new ListView ();
  1071. ListViewItem lvi1 = new ListViewItem ("A");
  1072. lvi1.Name = "A name";
  1073. ListViewItem lvi2 = new ListViewItem ("B");
  1074. lvi2.Name = "Same name";
  1075. ListViewItem lvi3 = new ListViewItem ("C");
  1076. lvi3.Name = "Same name";
  1077. ListViewItem lvi4 = new ListViewItem ("D");
  1078. lvi4.Name = String.Empty;
  1079. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4 });
  1080. Assert.AreEqual (4, lvw.Items.Count, "#A1");
  1081. Assert.AreEqual (null, lvw.Items [String.Empty], "#A2");
  1082. Assert.AreEqual (null, lvw.Items [null], "#A3");
  1083. Assert.AreSame (lvi1, lvw.Items ["A name"], "#A4");
  1084. Assert.AreSame (lvi1, lvw.Items ["a NAME"], "#A5");
  1085. Assert.AreSame (lvi2, lvw.Items ["Same name"], "#A6");
  1086. ListViewItem lvi5 = new ListViewItem ("E");
  1087. lvw.Items.Add (lvi5);
  1088. lvi5.Name = "E name";
  1089. Assert.AreSame (lvi5, lvw.Items ["E name"], "#B1");
  1090. }
  1091. [Test]
  1092. public void ListViewItemCollectionTest_ContainsKey ()
  1093. {
  1094. ListView lvw = new ListView();
  1095. ListViewItem lvi1 = new ListViewItem("A");
  1096. lvi1.Name = "A name";
  1097. ListViewItem lvi2 = new ListViewItem("B");
  1098. lvi2.Name = "B name";
  1099. ListViewItem lvi3 = new ListViewItem("D");
  1100. lvi3.Name = String.Empty;
  1101. lvw.Items.AddRange(new ListViewItem[] { lvi1, lvi2, lvi3 });
  1102. Assert.AreEqual(3, lvw.Items.Count, "#A1");
  1103. Assert.AreEqual(false, lvw.Items.ContainsKey (String.Empty), "#A2");
  1104. Assert.AreEqual(false, lvw.Items.ContainsKey (null), "#A3");
  1105. Assert.AreEqual(true, lvw.Items.ContainsKey ("A name"), "#A4");
  1106. Assert.AreEqual(true, lvw.Items.ContainsKey ("a NAME"), "#A5");
  1107. Assert.AreEqual(true, lvw.Items.ContainsKey ("B name"), "#A6");
  1108. ListViewItem lvi5 = new ListViewItem("E");
  1109. lvw.Items.Add(lvi5);
  1110. lvi5.Name = "E name";
  1111. Assert.AreEqual(true, lvw.Items.ContainsKey ("E name"), "#B1");
  1112. }
  1113. [Test]
  1114. public void ListViewItemCollectionTest_Find ()
  1115. {
  1116. ListView lvw = new ListView ();
  1117. ListViewItem lvi1 = new ListViewItem ("A");
  1118. lvi1.Name = "A name";
  1119. ListViewItem lvi2 = new ListViewItem ("B");
  1120. lvi2.Name = "a NAME";
  1121. ListViewItem lvi3 = new ListViewItem ("C");
  1122. lvi3.Name = "a NAME";
  1123. ListViewItem lvi4 = new ListViewItem ("D");
  1124. lvi4.Name = String.Empty;
  1125. ListViewItem lvi5 = new ListViewItem ("F");
  1126. lvi5.Name = String.Empty;
  1127. lvw.Items.AddRange (new ListViewItem [] { lvi1, lvi2, lvi3, lvi4, lvi5 });
  1128. Assert.AreEqual (5, lvw.Items.Count, "#A1");
  1129. ListViewItem [] items = lvw.Items.Find ("A name", false);
  1130. Assert.AreEqual (3, items.Length, "#B11");
  1131. Assert.AreSame (lvi1, items [0], "#B2");
  1132. Assert.AreSame (lvi2, items [1], "#B3");
  1133. Assert.AreSame (lvi3, items [2], "#B4");
  1134. items = lvw.Items.Find (String.Empty, false);
  1135. Assert.AreEqual (2, items.Length, "#B1");
  1136. Assert.AreSame (lvi4, items [0], "#B2");
  1137. Assert.AreSame (lvi5, items [1], "#B3");
  1138. Assert.AreEqual (0, lvw.Items.Find (null, false).Length, "#C1");
  1139. }
  1140. [Test]
  1141. public void ListViewSubItemCollectionTest_ContainsKey ()
  1142. {
  1143. ListViewItem lvi = new ListViewItem ("A");
  1144. ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
  1145. si1.Name = "A name";
  1146. ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
  1147. si2.Name = "B name";
  1148. ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
  1149. si3.Name = String.Empty;
  1150. lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3 });
  1151. Assert.AreEqual (4, lvi.SubItems.Count, "#A1");
  1152. Assert.AreEqual (false, lvi.SubItems.ContainsKey (String.Empty), "#A2");
  1153. Assert.AreEqual (false, lvi.SubItems.ContainsKey (null), "#A3");
  1154. Assert.AreEqual (true, lvi.SubItems.ContainsKey ("A name"), "#A4");
  1155. Assert.AreEqual (true, lvi.SubItems.ContainsKey ("a NAME"), "#A5");
  1156. Assert.AreEqual (true, lvi.SubItems.ContainsKey ("B name"), "#A6");
  1157. ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
  1158. lvi.SubItems.Add (si5);
  1159. si5.Name = "E name";
  1160. Assert.AreEqual (true, lvi.SubItems.ContainsKey ("E name"), "#B1");
  1161. }
  1162. [Test]
  1163. public void ListViewSubItemCollectionTest_IndexOfKey ()
  1164. {
  1165. ListViewItem lvi = new ListViewItem ();
  1166. ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
  1167. si1.Name = "A name";
  1168. ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
  1169. si2.Name = "Same name";
  1170. ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
  1171. si3.Name = "Same name";
  1172. ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
  1173. si4.Name = String.Empty;
  1174. lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
  1175. Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
  1176. Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (String.Empty), "#A2");
  1177. Assert.AreEqual (-1, lvi.SubItems.IndexOfKey (null), "#A3");
  1178. Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("A name"), "#A4");
  1179. Assert.AreEqual (1, lvi.SubItems.IndexOfKey ("a NAME"), "#A5");
  1180. Assert.AreEqual (2, lvi.SubItems.IndexOfKey ("Same name"), "#A6");
  1181. ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
  1182. lvi.SubItems.Add (si5);
  1183. si5.Name = "E name";
  1184. Assert.AreEqual (5, lvi.SubItems.IndexOfKey ("E name"), "#B1");
  1185. }
  1186. [Test]
  1187. public void ListViewSubItemCollectionTest_RemoveByKey ()
  1188. {
  1189. ListViewItem lvi = new ListViewItem ();
  1190. ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
  1191. si1.Name = "A name";
  1192. ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
  1193. si2.Name = "B name";
  1194. ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
  1195. si3.Name = "Same name";
  1196. ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
  1197. si4.Name = "Same name";
  1198. ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
  1199. si5.Name = String.Empty;
  1200. lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4, si5 });
  1201. Assert.AreEqual (6, lvi.SubItems.Count, "#A1");
  1202. lvi.SubItems.RemoveByKey ("B name");
  1203. Assert.AreEqual (5, lvi.SubItems.Count, "#B1");
  1204. Assert.AreSame (si1, lvi.SubItems [1], "#B2");
  1205. Assert.AreSame (si3, lvi.SubItems [2], "#B3");
  1206. Assert.AreSame (si4, lvi.SubItems [3], "#B4");
  1207. Assert.AreSame (si5, lvi.SubItems [4], "#B5");
  1208. lvi.SubItems.RemoveByKey ("Same name");
  1209. Assert.AreEqual (4, lvi.SubItems.Count, "#C1");
  1210. Assert.AreSame (si1, lvi.SubItems [1], "#C2");
  1211. Assert.AreSame (si4, lvi.SubItems [2], "#C3");
  1212. Assert.AreSame (si5, lvi.SubItems [3], "#C4");
  1213. lvi.SubItems.RemoveByKey ("a NAME");
  1214. Assert.AreEqual (3, lvi.SubItems.Count, "#D1");
  1215. Assert.AreSame (si4, lvi.SubItems [1], "#D2");
  1216. Assert.AreSame (si5, lvi.SubItems [2], "#D3");
  1217. lvi.SubItems.RemoveByKey (String.Empty);
  1218. Assert.AreEqual (3, lvi.SubItems.Count, "#E1");
  1219. Assert.AreSame (si4, lvi.SubItems [1], "#E2");
  1220. Assert.AreSame (si5, lvi.SubItems [2], "#E3");
  1221. }
  1222. [Test]
  1223. public void ListViewSubItemCollectionTest_Indexer ()
  1224. {
  1225. ListViewItem lvi = new ListViewItem ();
  1226. ListViewItem.ListViewSubItem si1 = new ListViewItem.ListViewSubItem ();
  1227. si1.Name = "A name";
  1228. ListViewItem.ListViewSubItem si2 = new ListViewItem.ListViewSubItem ();
  1229. si2.Name = "Same name";
  1230. ListViewItem.ListViewSubItem si3 = new ListViewItem.ListViewSubItem ();
  1231. si3.Name = "Same name";
  1232. ListViewItem.ListViewSubItem si4 = new ListViewItem.ListViewSubItem ();
  1233. si4.Name = String.Empty;
  1234. lvi.SubItems.AddRange (new ListViewItem.ListViewSubItem [] { si1, si2, si3, si4 });
  1235. Assert.AreEqual (5, lvi.SubItems.Count, "#A1");
  1236. Assert.AreEqual (null, lvi.SubItems [String.Empty], "#A2");
  1237. Assert.AreEqual (null, lvi.SubItems [null], "#A3");
  1238. Assert.AreEqual (si1, lvi.SubItems ["A name"], "#A4");
  1239. Assert.AreEqual (si1, lvi.SubItems ["a NAME"], "#A5");
  1240. Assert.AreEqual (si2, lvi.SubItems ["Same name"], "#A6");
  1241. ListViewItem.ListViewSubItem si5 = new ListViewItem.ListViewSubItem ();
  1242. lvi.SubItems.Add (si5);
  1243. si5.Name = "E name";
  1244. Assert.AreEqual (si5, lvi.SubItems ["E name"], "#B1");
  1245. }
  1246. #endif
  1247. }
  1248. }