CheckedListBoxTest.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. //
  2. // Copyright (c) 2005 Novell, Inc.
  3. //
  4. // Authors:
  5. // Ritvik Mayank ([email protected])
  6. // Gert Driesen ([email protected])
  7. //
  8. using System;
  9. using System.Collections;
  10. using System.ComponentModel;
  11. using System.Drawing;
  12. using System.Reflection;
  13. using System.Windows.Forms;
  14. using NUnit.Framework;
  15. namespace MonoTests.System.Windows.Forms
  16. {
  17. [TestFixture]
  18. public class CheckedListBoxTest
  19. {
  20. [Test]
  21. public void CheckedListBoxPropertyTest ()
  22. {
  23. Form myform = new Form ();
  24. myform.ShowInTaskbar = false;
  25. myform.Visible = true;
  26. CheckedListBox mychklistbox = new CheckedListBox ();
  27. ArrayList checked_items = new ArrayList (2);
  28. ArrayList checked_pos = new ArrayList (2);
  29. mychklistbox.Items.Add ("test1", true);
  30. checked_items.Add ("test1"); checked_pos.Add (0);
  31. mychklistbox.Items.Add ("test2");
  32. mychklistbox.Items.Add ("test3", true);
  33. checked_items.Add ("test3"); checked_pos.Add (2);
  34. mychklistbox.Visible = true;
  35. myform.Controls.Add (mychklistbox);
  36. Assert.AreEqual (checked_items.Count, mychklistbox.CheckedIndices.Count, "#1");
  37. Assert.AreEqual (checked_items.Count, mychklistbox.CheckedItems.Count, "#2");
  38. foreach (object o in mychklistbox.CheckedItems)
  39. {
  40. Assert.IsTrue (checked_items.Contains (o),"#3");
  41. checked_items.Remove (o);
  42. }
  43. Assert.AreEqual (0, checked_items.Count);
  44. for (int i = 0; i < mychklistbox.Items.Count; ++i)
  45. {
  46. if (checked_pos.Contains (i))
  47. Assert.AreEqual (CheckState.Checked, mychklistbox.GetItemCheckState (i),"#4");
  48. else
  49. Assert.IsFalse (CheckState.Checked == mychklistbox.GetItemCheckState (i),"#5");
  50. }
  51. Assert.AreEqual (false, mychklistbox.CheckOnClick, "#6");
  52. Assert.AreEqual (3, mychklistbox.Items.Count, "#7");
  53. Assert.AreEqual (SelectionMode.One, mychklistbox.SelectionMode, "#8");
  54. Assert.AreEqual (false , mychklistbox.ThreeDCheckBoxes, "#9");
  55. myform.Dispose ();
  56. }
  57. [Test]
  58. [NUnit.Framework.Category ("NotWorking")]
  59. public void DisplayMember_HandleCreated ()
  60. {
  61. MockItem itemA = new MockItem ("A1", 1);
  62. MockItem itemB = new MockItem ("B2", 2);
  63. MockItem itemC = new MockItem ("C3", 3);
  64. MockItem itemD = new MockItem ("D4", 4);
  65. MockItem itemE = new MockItem ("E5", 5);
  66. MockItem itemF = new MockItem ("F6", 6);
  67. CheckedListBox clb = new CheckedListBox ();
  68. clb.Items.Add (itemA, true);
  69. clb.Items.Add (itemC, false);
  70. clb.Items.Add (itemB, true);
  71. Form form = new Form ();
  72. form.ShowInTaskbar = false;
  73. form.Controls.Add (clb);
  74. form.Show ();
  75. Assert.AreEqual (string.Empty, clb.Text, "#A1");
  76. clb.SelectedIndex = 1;
  77. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
  78. clb.DisplayMember = "Text";
  79. Assert.AreEqual ("C3", clb.Text, "#A3");
  80. clb.SelectedIndex = 2;
  81. Assert.AreEqual ("B2", clb.Text, "#A4");
  82. clb.Text = "C3";
  83. Assert.AreEqual (1, clb.SelectedIndex, "#B1");
  84. Assert.AreEqual ("C3", clb.Text, "#B2");
  85. clb.Text = "B";
  86. Assert.AreEqual (1, clb.SelectedIndex, "#B3");
  87. Assert.AreEqual ("C3", clb.Text, "#B4");
  88. ArrayList itemList = new ArrayList ();
  89. itemList.Add (itemD);
  90. itemList.Add (itemE);
  91. itemList.Add (itemF);
  92. clb.DataSource = itemList;
  93. clb.DisplayMember = string.Empty;
  94. clb.SelectedIndex = 1;
  95. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#C1");
  96. clb.DisplayMember = "Text";
  97. Assert.AreEqual ("E5", clb.Text, "#C2");
  98. clb.SelectedIndex = 2;
  99. Assert.AreEqual ("F6", clb.Text, "#C3");
  100. clb.Text = "E5";
  101. Assert.AreEqual (1, clb.SelectedIndex, "#D1");
  102. Assert.AreEqual ("E5", clb.Text, "#D2");
  103. clb.Text = "D";
  104. Assert.AreEqual (1, clb.SelectedIndex, "#D3");
  105. Assert.AreEqual ("E5", clb.Text, "#D4");
  106. form.Dispose ();
  107. }
  108. [Test]
  109. [NUnit.Framework.Category ("NotWorking")]
  110. public void DisplayMember_HandleNotCreated ()
  111. {
  112. MockItem itemA = new MockItem ("A1", 1);
  113. MockItem itemB = new MockItem ("B2", 2);
  114. MockItem itemC = new MockItem ("C3", 3);
  115. MockItem itemD = new MockItem ("D4", 4);
  116. MockItem itemE = new MockItem ("E5", 5);
  117. MockItem itemF = new MockItem ("F6", 6);
  118. CheckedListBox clb = new CheckedListBox ();
  119. clb.Items.Add (itemA, true);
  120. clb.Items.Add (itemC, false);
  121. clb.Items.Add (itemB, true);
  122. Assert.AreEqual (string.Empty, clb.Text, "#A1");
  123. clb.SelectedIndex = 1;
  124. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
  125. clb.DisplayMember = "Text";
  126. Assert.AreEqual ("C3", clb.Text, "#A3");
  127. clb.SelectedIndex = 2;
  128. Assert.AreEqual ("B2", clb.Text, "#A4");
  129. clb.Text = "C3";
  130. Assert.AreEqual (1, clb.SelectedIndex, "#B1");
  131. Assert.AreEqual ("C3", clb.Text, "#B2");
  132. clb.Text = "C";
  133. Assert.AreEqual (1, clb.SelectedIndex, "#B3");
  134. Assert.AreEqual ("C3", clb.Text, "#B4");
  135. ArrayList itemList = new ArrayList ();
  136. itemList.Add (itemD);
  137. itemList.Add (itemE);
  138. itemList.Add (itemF);
  139. clb.DataSource = itemList;
  140. clb.DisplayMember = string.Empty;
  141. clb.SelectedIndex = 1;
  142. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#C1");
  143. clb.DisplayMember = "Text";
  144. Assert.AreEqual ("C3", clb.Text, "#C2");
  145. clb.SelectedIndex = 2;
  146. Assert.AreEqual ("B2", clb.Text, "#C3");
  147. }
  148. [Test]
  149. public void GetItemCheckedTest ()
  150. {
  151. Form f = new Form ();
  152. f.ShowInTaskbar = false;
  153. f.Visible = true;
  154. CheckedListBox mychklistbox = new CheckedListBox ();
  155. mychklistbox.Items.Add ("test1",true);
  156. mychklistbox.Items.Add ("test2",CheckState.Indeterminate);
  157. mychklistbox.Items.Add ("test3");
  158. mychklistbox.Visible = true;
  159. f.Controls.Add (mychklistbox);
  160. Assert.AreEqual (true, mychklistbox.GetItemChecked (0), "#10");
  161. Assert.AreEqual (true, mychklistbox.GetItemChecked (1), "#11");
  162. Assert.AreEqual (false, mychklistbox.GetItemChecked (2), "#12");
  163. f.Dispose ();
  164. }
  165. [Test]
  166. [ExpectedException (typeof (ArgumentOutOfRangeException) )]
  167. public void GetItemCheckedExceptionTest ()
  168. {
  169. CheckedListBox mychklistbox = new CheckedListBox ();
  170. mychklistbox.Items.Add ("test1",true);
  171. Assert.AreEqual (true, mychklistbox.GetItemChecked (1), "#13");
  172. }
  173. [Test]
  174. public void GetItemCheckStateTest ()
  175. {
  176. Form f = new Form ();
  177. f.ShowInTaskbar = false;
  178. f.Visible = true;
  179. CheckedListBox mychklistbox = new CheckedListBox ();
  180. mychklistbox.Items.Add ("test1",true);
  181. mychklistbox.Items.Add ("test2",CheckState.Indeterminate);
  182. mychklistbox.Items.Add ("test3");
  183. mychklistbox.Visible = true;
  184. f.Controls.Add (mychklistbox);
  185. Assert.AreEqual (CheckState.Checked, mychklistbox.GetItemCheckState (0), "#14");
  186. Assert.AreEqual (CheckState.Indeterminate, mychklistbox.GetItemCheckState (1), "#15");
  187. Assert.AreEqual (CheckState.Unchecked, mychklistbox.GetItemCheckState (2), "#16");
  188. f.Dispose ();
  189. }
  190. [Test]
  191. [NUnit.Framework.Category ("NotWorking")]
  192. public void GetItemText ()
  193. {
  194. MockItem itemA = new MockItem ("A", 1);
  195. MockItem itemB = new MockItem ("B", 2);
  196. CheckedListBox clb = new CheckedListBox ();
  197. clb.DisplayMember = "Text";
  198. clb.Items.Add (itemA, true);
  199. Assert.AreEqual ("A", clb.GetItemText (itemA), "#A1");
  200. Assert.AreEqual ("B", clb.GetItemText (itemB), "#A2");
  201. clb.DisplayMember = string.Empty;
  202. Assert.AreEqual (itemA.GetType ().FullName, clb.GetItemText (itemA), "#B1");
  203. Assert.AreEqual (itemB.GetType ().FullName, clb.GetItemText (itemB), "#B2");
  204. }
  205. [Test]
  206. public void SelectionMode_Invalid ()
  207. {
  208. CheckedListBox clb = new CheckedListBox ();
  209. try {
  210. clb.SelectionMode = SelectionMode.MultiSimple;
  211. Assert.Fail ("#A1");
  212. } catch (ArgumentException ex) {
  213. // Multi selection not supported on CheckedListBox
  214. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  215. Assert.IsNotNull (ex.Message, "#A3");
  216. Assert.IsNull (ex.ParamName, "#A4");
  217. Assert.IsNull (ex.InnerException, "#A5");
  218. }
  219. try {
  220. clb.SelectionMode = SelectionMode.MultiExtended;
  221. Assert.Fail ("#B1");
  222. } catch (ArgumentException ex) {
  223. // Multi selection not supported on CheckedListBox
  224. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  225. Assert.IsNotNull (ex.Message, "#B3");
  226. Assert.IsNull (ex.ParamName, "#B4");
  227. Assert.IsNull (ex.InnerException, "#B5");
  228. }
  229. try {
  230. clb.SelectionMode = (SelectionMode) 666;
  231. Assert.Fail ("#C1");
  232. } catch (InvalidEnumArgumentException ex) {
  233. Assert.AreEqual (typeof (InvalidEnumArgumentException), ex.GetType (), "#C2");
  234. Assert.IsNotNull (ex.Message, "#C3");
  235. Assert.IsNotNull (ex.ParamName, "#C4");
  236. Assert.AreEqual ("value", ex.ParamName, "#C5");
  237. Assert.IsNull (ex.InnerException, "#C6");
  238. }
  239. }
  240. [Test]
  241. public void SetItemCheckedTest ()
  242. {
  243. Form myform = new Form ();
  244. myform.ShowInTaskbar = false;
  245. myform.Visible = true;
  246. CheckedListBox mychklistbox = new CheckedListBox ();
  247. mychklistbox.Items.Add ("test1");
  248. mychklistbox.Items.Add ("test2");
  249. mychklistbox.Visible = true;
  250. myform.Controls.Add (mychklistbox);
  251. mychklistbox.SetItemChecked (0,true);
  252. mychklistbox.SetItemChecked (1,false);
  253. Assert.AreEqual (CheckState.Checked, mychklistbox.GetItemCheckState (0), "#17");
  254. Assert.AreEqual (CheckState.Unchecked, mychklistbox.GetItemCheckState (1), "#18");
  255. myform.Dispose ();
  256. }
  257. [Test]
  258. public void SetItemCheckStateTest ()
  259. {
  260. Form myform = new Form ();
  261. myform.ShowInTaskbar = false;
  262. myform.Visible = true;
  263. CheckedListBox mychklistbox = new CheckedListBox ();
  264. mychklistbox.Items.Add ("test1");
  265. mychklistbox.Items.Add ("test2");
  266. mychklistbox.Items.Add ("test3");
  267. mychklistbox.Visible = true;
  268. myform.Controls.Add (mychklistbox);
  269. mychklistbox.SetItemCheckState (0,CheckState.Checked);
  270. mychklistbox.SetItemCheckState (1,CheckState.Indeterminate);
  271. mychklistbox.SetItemCheckState (2,CheckState.Unchecked);
  272. Assert.AreEqual (CheckState.Checked, mychklistbox.GetItemCheckState (0), "#19");
  273. Assert.AreEqual (CheckState.Indeterminate, mychklistbox.GetItemCheckState (1), "#20");
  274. Assert.AreEqual (CheckState.Unchecked, mychklistbox.GetItemCheckState (2), "#21");
  275. myform.Dispose ();
  276. }
  277. #if NET_2_0
  278. // Fails on 1.1 (both MS and Mono) because SelectedIndex is set
  279. [Test]
  280. public void Text_SelectionMode_None ()
  281. {
  282. MockItem itemA = new MockItem ("A1", 1);
  283. MockItem itemB = new MockItem ("B2", 2);
  284. MockItem itemC = new MockItem ("C3", 3);
  285. MockItem itemD = new MockItem ("C3", 4);
  286. MockItem itemE = new MockItem ("", 5);
  287. MockItem itemF = new MockItem (null, 6);
  288. ArrayList itemList = new ArrayList ();
  289. itemList.Add (itemA);
  290. itemList.Add (itemC);
  291. itemList.Add (itemB);
  292. itemList.Add (itemD);
  293. itemList.Add (itemE);
  294. itemList.Add (itemF);
  295. CheckedListBox clb = new CheckedListBox ();
  296. clb.DisplayMember = "Text";
  297. clb.DataSource = itemList;
  298. clb.SelectionMode = SelectionMode.None;
  299. Form form = new Form ();
  300. form.ShowInTaskbar = false;
  301. form.Controls.Add (clb);
  302. form.Show ();
  303. Assert.AreEqual (string.Empty, clb.Text, "#A1");
  304. Assert.AreEqual (-1, clb.SelectedIndex, "#A2");
  305. clb.Text = "B2";
  306. Assert.AreEqual ("B2", clb.Text, "#B1");
  307. Assert.AreEqual (-1, clb.SelectedIndex, "#B2");
  308. clb.Text = "D";
  309. Assert.AreEqual ("D", clb.Text, "#C1");
  310. Assert.AreEqual (-1, clb.SelectedIndex, "#C2");
  311. clb.Text = "Doesnotexist";
  312. Assert.AreEqual ("Doesnotexist", clb.Text, "#D1");
  313. Assert.AreEqual (-1, clb.SelectedIndex, "#D2");
  314. clb.Text = string.Empty;
  315. Assert.AreEqual (string.Empty, clb.Text, "#E1");
  316. Assert.AreEqual (-1, clb.SelectedIndex, "#E2");
  317. clb.Text = null;
  318. Assert.AreEqual (string.Empty, clb.Text, "#F1");
  319. Assert.AreEqual (-1, clb.SelectedIndex, "#F2");
  320. form.Dispose ();
  321. }
  322. [Test]
  323. public void AllowSelection ()
  324. {
  325. MockCheckedListBox clb = new MockCheckedListBox ();
  326. clb.SelectionMode = SelectionMode.None;
  327. Assert.IsFalse (clb.allow_selection, "#1");
  328. clb.SelectionMode = SelectionMode.One;
  329. Assert.IsTrue (clb.allow_selection, "#2");
  330. }
  331. #endif
  332. [Test]
  333. [NUnit.Framework.Category ("NotWorking")]
  334. public void Text_SelectionMode_One ()
  335. {
  336. MockItem itemA = new MockItem ("A1", 1);
  337. MockItem itemB = new MockItem ("B2", 2);
  338. MockItem itemC = new MockItem ("C3", 3);
  339. MockItem itemD = new MockItem ("C3", 4);
  340. MockItem itemE = new MockItem ("", 5);
  341. MockItem itemF = new MockItem (null, 6);
  342. ArrayList itemList = new ArrayList ();
  343. itemList.Add (itemA);
  344. itemList.Add (itemC);
  345. itemList.Add (itemB);
  346. itemList.Add (itemD);
  347. itemList.Add (itemE);
  348. itemList.Add (itemF);
  349. CheckedListBox clb = new CheckedListBox ();
  350. clb.DisplayMember = "Text";
  351. clb.DataSource = itemList;
  352. clb.SelectionMode = SelectionMode.One;
  353. Form form = new Form ();
  354. form.ShowInTaskbar = false;
  355. form.Controls.Add (clb);
  356. form.Show ();
  357. Assert.AreEqual ("A1", clb.Text, "#A1");
  358. Assert.AreEqual (0, clb.SelectedIndex, "#A2");
  359. clb.Text = "B2";
  360. Assert.AreEqual ("B2", clb.Text, "#B1");
  361. Assert.AreEqual (2, clb.SelectedIndex, "#B2");
  362. Assert.AreEqual (1, clb.SelectedItems.Count, "#B3");
  363. Assert.AreSame (itemB, clb.SelectedItems [0], "#B4");
  364. clb.Text = "D";
  365. Assert.AreEqual ("B2", clb.Text, "#C1");
  366. Assert.AreEqual (2, clb.SelectedIndex, "#C2");
  367. Assert.AreEqual (1, clb.SelectedItems.Count, "#C3");
  368. Assert.AreSame (itemB, clb.SelectedItems [0], "#C4");
  369. clb.Text = "Doesnotexist";
  370. Assert.AreEqual ("B2", clb.Text, "#D1");
  371. Assert.AreEqual (2, clb.SelectedIndex, "#D2");
  372. Assert.AreEqual (1, clb.SelectedItems.Count, "#D3");
  373. Assert.AreSame (itemB, clb.SelectedItems [0], "#D4");
  374. clb.Text = "C3";
  375. Assert.AreEqual ("C3", clb.Text, "#E1");
  376. Assert.AreEqual (1, clb.SelectedIndex, "#E2");
  377. Assert.AreEqual (1, clb.SelectedItems.Count, "#E3");
  378. Assert.AreSame (itemC, clb.SelectedItems [0], "#E4");
  379. clb.Text = string.Empty;
  380. Assert.AreEqual (string.Empty, clb.Text, "#F1");
  381. Assert.AreEqual (4, clb.SelectedIndex, "#F2");
  382. Assert.AreEqual (1, clb.SelectedItems.Count, "#F3");
  383. Assert.AreSame (itemE, clb.SelectedItems [0], "#F4");
  384. clb.Text = null;
  385. Assert.AreEqual (string.Empty, clb.Text, "#G1");
  386. Assert.AreEqual (4, clb.SelectedIndex, "#G2");
  387. Assert.AreEqual (1, clb.SelectedItems.Count, "#G3");
  388. Assert.AreSame (itemE, clb.SelectedItems [0], "#G4");
  389. clb.SelectedIndex = -1;
  390. Assert.AreEqual ("A1", clb.Text, "#H1");
  391. Assert.AreEqual (0, clb.SelectedIndex, "#H2");
  392. Assert.AreEqual (1, clb.SelectedItems.Count, "#H3");
  393. Assert.AreSame (itemA, clb.SelectedItems [0], "#H4");
  394. form.Dispose ();
  395. }
  396. [Test]
  397. [NUnit.Framework.Category ("NotWorking")]
  398. public void ValueMember_HandleCreated ()
  399. {
  400. MockItem itemA = new MockItem ("A", 1);
  401. MockItem itemB = new MockItem ("B", 2);
  402. MockItem itemC = new MockItem ("C", 3);
  403. MockItem itemD = new MockItem ("D", 4);
  404. MockItem itemE = new MockItem ("E", 5);
  405. CheckedListBox clb = new CheckedListBox ();
  406. clb.Items.Add (itemA, true);
  407. clb.Items.Add (itemC, false);
  408. clb.Items.Add (itemB, true);
  409. clb.SelectedIndex = 1;
  410. Form form = new Form ();
  411. form.ShowInTaskbar = false;
  412. form.Controls.Add (clb);
  413. form.Show ();
  414. Assert.AreEqual (string.Empty, clb.ValueMember, "#A1");
  415. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
  416. Assert.IsNull (clb.SelectedValue, "#A3");
  417. clb.ValueMember = "Value";
  418. Assert.AreEqual ("Value", clb.ValueMember, "#B1");
  419. Assert.AreEqual ("3", clb.Text, "#B2");
  420. Assert.IsNull (clb.SelectedValue, "#B3");
  421. clb.DisplayMember = "Text";
  422. Assert.AreEqual ("Value", clb.ValueMember, "#C1");
  423. Assert.AreEqual ("C", clb.Text, "#C2");
  424. Assert.IsNull (clb.SelectedValue, "#C3");
  425. ArrayList itemList = new ArrayList ();
  426. itemList.Add (itemD);
  427. itemList.Add (itemE);
  428. clb.DataSource = itemList;
  429. clb.ValueMember = string.Empty;
  430. clb.DisplayMember = string.Empty;
  431. clb.SelectedIndex = 1;
  432. Assert.AreEqual (string.Empty, clb.ValueMember, "#D1");
  433. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#D2");
  434. Assert.IsNotNull (clb.SelectedValue, "#D3");
  435. Assert.AreSame (itemE, clb.SelectedValue, "#D4");
  436. clb.ValueMember = "Value";
  437. Assert.AreEqual ("Value", clb.ValueMember, "#E1");
  438. Assert.AreEqual ("5", clb.Text, "#E2");
  439. Assert.IsNotNull (clb.SelectedValue, "#E3");
  440. Assert.AreEqual (5, clb.SelectedValue, "#E4");
  441. clb.DisplayMember = "Text";
  442. Assert.AreEqual ("Value", clb.ValueMember, "#F1");
  443. Assert.AreEqual ("E", clb.Text, "#F2");
  444. Assert.IsNotNull (clb.SelectedValue, "#F3");
  445. Assert.AreEqual (5, clb.SelectedValue, "#F4");
  446. form.Dispose ();
  447. }
  448. [Test]
  449. [NUnit.Framework.Category ("NotWorking")]
  450. public void ValueMember_HandleNotCreated ()
  451. {
  452. MockItem itemA = new MockItem ("A", 1);
  453. MockItem itemB = new MockItem ("B", 2);
  454. MockItem itemC = new MockItem ("C", 3);
  455. MockItem itemD = new MockItem ("D", 4);
  456. MockItem itemE = new MockItem ("E", 5);
  457. CheckedListBox clb = new CheckedListBox ();
  458. clb.Items.Add (itemA, true);
  459. clb.Items.Add (itemC, false);
  460. clb.Items.Add (itemB, true);
  461. clb.SelectedIndex = 1;
  462. Assert.AreEqual (string.Empty, clb.ValueMember, "#A1");
  463. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#A2");
  464. Assert.IsNull (clb.SelectedValue, "#A3");
  465. clb.ValueMember = "Value";
  466. Assert.AreEqual ("Value", clb.ValueMember, "#B1");
  467. Assert.AreEqual ("3", clb.Text, "#B2");
  468. Assert.IsNull (clb.SelectedValue, "#B3");
  469. clb.DisplayMember = "Text";
  470. Assert.AreEqual ("Value", clb.ValueMember, "#C1");
  471. Assert.AreEqual ("C", clb.Text, "#C2");
  472. Assert.IsNull (clb.SelectedValue, "#C3");
  473. ArrayList itemList = new ArrayList ();
  474. itemList.Add (itemD);
  475. itemList.Add (itemE);
  476. clb.DataSource = itemList;
  477. clb.ValueMember = string.Empty;
  478. clb.DisplayMember = string.Empty;
  479. clb.SelectedIndex = 1;
  480. Assert.AreEqual (string.Empty, clb.ValueMember, "#D1");
  481. Assert.AreEqual (itemC.GetType ().FullName, clb.Text, "#D2");
  482. Assert.IsNull (clb.SelectedValue, "#D3");
  483. clb.ValueMember = "Value";
  484. Assert.AreEqual ("Value", clb.ValueMember, "#E1");
  485. Assert.AreEqual ("3", clb.Text, "#E2");
  486. Assert.IsNull (clb.SelectedValue, "#E3");
  487. clb.DisplayMember = "Text";
  488. Assert.AreEqual ("Value", clb.ValueMember, "#F1");
  489. Assert.AreEqual ("C", clb.Text, "#F2");
  490. Assert.IsNull (clb.SelectedValue, "#F3");
  491. }
  492. public class MockCheckedListBox : CheckedListBox
  493. {
  494. #if NET_2_0
  495. public bool allow_selection {
  496. get { return base.AllowSelection; }
  497. }
  498. #endif
  499. }
  500. public class MockItem
  501. {
  502. public MockItem (string text, int value)
  503. {
  504. _text = text;
  505. _value = value;
  506. }
  507. public string Text {
  508. get { return _text; }
  509. }
  510. public int Value {
  511. get { return _value; }
  512. }
  513. private readonly string _text;
  514. private readonly int _value;
  515. }
  516. }
  517. }