ColumnHeaderTest.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  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) 2007 Novell, Inc. (http://www.novell.com)
  21. //
  22. // Author:
  23. // Carlos Alberto Cortez <[email protected]>
  24. //
  25. using System;
  26. using System.Drawing;
  27. using System.Windows.Forms;
  28. using NUnit.Framework;
  29. namespace MonoTests.System.Windows.Forms
  30. {
  31. [TestFixture]
  32. public class ColumnHeaderTest
  33. {
  34. #if NET_2_0
  35. [SetUp]
  36. public void SetUp ()
  37. {
  38. columnReordered = 0;
  39. }
  40. #endif
  41. [Test]
  42. public void DefaultValuesTest ()
  43. {
  44. ColumnHeader col = new ColumnHeader ();
  45. Assert.IsNull (col.ListView, "1");
  46. Assert.AreEqual (-1, col.Index, "2");
  47. Assert.AreEqual ("ColumnHeader", col.Text, "3");
  48. Assert.AreEqual (HorizontalAlignment.Left, col.TextAlign, "4");
  49. #if NET_2_0
  50. Assert.AreEqual (-1, col.DisplayIndex, "5");
  51. Assert.AreEqual (-1, col.ImageIndex, "6");
  52. Assert.AreEqual (String.Empty, col.ImageKey, "7");
  53. Assert.IsNull (col.ImageList, "8");
  54. Assert.AreEqual (String.Empty, col.Name, "9");
  55. Assert.IsNull (col.Tag, "10");
  56. #endif
  57. }
  58. #if NET_2_0
  59. [Test]
  60. public void DisplayIndex_ListView_Created ()
  61. {
  62. ColumnHeader colA = new ColumnHeader ();
  63. ColumnHeader colB = new ColumnHeader ();
  64. ColumnHeader colC = new ColumnHeader ();
  65. ColumnHeader colD = new ColumnHeader ();
  66. colA.DisplayIndex = 2;
  67. colD.DisplayIndex = 0;
  68. colB.DisplayIndex = 3;
  69. colC.DisplayIndex = 1;
  70. Form form = new Form ();
  71. form.ShowInTaskbar = false;
  72. ListView lv = new ListView ();
  73. lv.ColumnReordered += new ColumnReorderedEventHandler (ColumnReordered);
  74. lv.View = View.Details;
  75. lv.Columns.Add (colA);
  76. lv.Columns.Add (colB);
  77. lv.Columns.Add (colC);
  78. form.Controls.Add (lv);
  79. form.Show ();
  80. Assert.AreEqual (0, colA.DisplayIndex, "#A1");
  81. Assert.AreEqual (1, colB.DisplayIndex, "#A2");
  82. Assert.AreEqual (2, colC.DisplayIndex, "#A3");
  83. Assert.AreEqual (0, colD.DisplayIndex, "#A4");
  84. Assert.AreEqual (0, columnReordered, "#A5");
  85. colC.DisplayIndex = 0;
  86. Assert.AreEqual (1, colA.DisplayIndex, "#B1");
  87. Assert.AreEqual (2, colB.DisplayIndex, "#B2");
  88. Assert.AreEqual (0, colC.DisplayIndex, "#B3");
  89. Assert.AreEqual (0, colD.DisplayIndex, "#B4");
  90. Assert.AreEqual (0, columnReordered, "#B5");
  91. colC.DisplayIndex = 2;
  92. Assert.AreEqual (0, colA.DisplayIndex, "#C1");
  93. Assert.AreEqual (1, colB.DisplayIndex, "#C2");
  94. Assert.AreEqual (2, colC.DisplayIndex, "#C3");
  95. Assert.AreEqual (0, colD.DisplayIndex, "#C4");
  96. Assert.AreEqual (0, columnReordered, "#C5");
  97. colB.DisplayIndex = 2;
  98. Assert.AreEqual (0, colA.DisplayIndex, "#D1");
  99. Assert.AreEqual (2, colB.DisplayIndex, "#D2");
  100. Assert.AreEqual (1, colC.DisplayIndex, "#D3");
  101. Assert.AreEqual (0, colD.DisplayIndex, "#D4");
  102. Assert.AreEqual (0, columnReordered, "#D5");
  103. colD.DisplayIndex = 1;
  104. lv.Columns.Add (colD);
  105. Assert.AreEqual (0, colA.DisplayIndex, "#E1");
  106. Assert.AreEqual (2, colB.DisplayIndex, "#E2");
  107. Assert.AreEqual (1, colC.DisplayIndex, "#E3");
  108. Assert.AreEqual (3, colD.DisplayIndex, "#E4");
  109. Assert.AreEqual (0, columnReordered, "#E5");
  110. form.Close ();
  111. }
  112. [Test]
  113. public void DisplayIndex_ListView_Disposed ()
  114. {
  115. ListView lv = new ListView ();
  116. lv.View = View.Details;
  117. ColumnHeader colA = new ColumnHeader ();
  118. lv.Columns.Add (colA);
  119. ColumnHeader colB = new ColumnHeader ();
  120. lv.Columns.Add (colB);
  121. ColumnHeader colC = new ColumnHeader ();
  122. lv.Columns.Add (colC);
  123. Assert.AreEqual (0, colA.DisplayIndex, "#A1");
  124. Assert.AreEqual (1, colB.DisplayIndex, "#A2");
  125. Assert.AreEqual (2, colC.DisplayIndex, "#A3");
  126. colA.DisplayIndex = 2;
  127. lv.Columns.Remove (colB);
  128. lv.Dispose ();
  129. Assert.AreEqual (1, colA.DisplayIndex, "#B1");
  130. Assert.AreEqual (-1, colB.DisplayIndex, "#B2");
  131. Assert.AreEqual (0, colC.DisplayIndex, "#B3");
  132. colA.DisplayIndex = 255;
  133. Assert.AreEqual (255, colA.DisplayIndex, "#C1");
  134. Assert.AreEqual (-1, colB.DisplayIndex, "#C2");
  135. Assert.AreEqual (0, colC.DisplayIndex, "#C3");
  136. }
  137. [Test]
  138. public void DisplayIndex_ListView_NotCreated ()
  139. {
  140. ColumnHeader colA = new ColumnHeader ();
  141. colA.DisplayIndex = -66;
  142. Assert.AreEqual (-66, colA.DisplayIndex, "#A1");
  143. colA.DisplayIndex = 66;
  144. Assert.AreEqual (66, colA.DisplayIndex, "#A2");
  145. ColumnHeader colB = new ColumnHeader ();
  146. colB.DisplayIndex = 0;
  147. Assert.AreEqual (0, colB.DisplayIndex, "#A3");
  148. ColumnHeader colC = new ColumnHeader ();
  149. colC.DisplayIndex = 1;
  150. Assert.AreEqual (1, colC.DisplayIndex, "#A4");
  151. ListView lv = new ListView ();
  152. lv.ColumnReordered += new ColumnReorderedEventHandler (ColumnReordered);
  153. lv.View = View.Details;
  154. lv.Columns.Add (colA);
  155. lv.Columns.Add (colB);
  156. lv.Columns.Add (colC);
  157. try {
  158. colA.DisplayIndex = -1;
  159. Assert.Fail ("#B1");
  160. } catch (ArgumentOutOfRangeException ex) {
  161. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  162. Assert.IsNull (ex.InnerException, "#B3");
  163. Assert.IsNotNull (ex.Message, "#B4");
  164. Assert.IsNotNull (ex.ParamName, "#B5");
  165. Assert.AreEqual ("DisplayIndex", ex.ParamName, "#B6");
  166. }
  167. try {
  168. colA.DisplayIndex = lv.Columns.Count;
  169. Assert.Fail ("#C1");
  170. } catch (ArgumentOutOfRangeException ex) {
  171. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  172. Assert.IsNull (ex.InnerException, "#C3");
  173. Assert.IsNotNull (ex.Message, "#C4");
  174. Assert.IsNotNull (ex.ParamName, "#C5");
  175. Assert.AreEqual ("DisplayIndex", ex.ParamName, "#C6");
  176. }
  177. Assert.AreEqual (0, colA.DisplayIndex, "#D1");
  178. Assert.AreEqual (1, colB.DisplayIndex, "#D2");
  179. Assert.AreEqual (2, colC.DisplayIndex, "#D3");
  180. Assert.AreEqual (0, columnReordered, "#D4");
  181. }
  182. [Test]
  183. public void ImageIndex_Invalid ()
  184. {
  185. ColumnHeader col = new ColumnHeader ();
  186. col.ImageIndex = 2;
  187. try {
  188. col.ImageIndex = -2;
  189. Assert.Fail ("#1");
  190. } catch (ArgumentOutOfRangeException ex) {
  191. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
  192. Assert.IsNotNull (ex.Message, "#3");
  193. Assert.IsNotNull (ex.ParamName, "#4");
  194. Assert.AreEqual ("ImageIndex", ex.ParamName, "#5");
  195. Assert.IsNull (ex.InnerException, "#6");
  196. }
  197. Assert.AreEqual (2, col.ImageIndex, "#7");
  198. }
  199. [Test]
  200. public void ImageKey ()
  201. {
  202. ColumnHeader col = new ColumnHeader ();
  203. Assert.AreEqual (string.Empty, col.ImageKey, "#1");
  204. col.ImageKey = "test";
  205. Assert.AreEqual ("test", col.ImageKey, "#2");
  206. col.ImageKey = null;
  207. Assert.AreEqual (string.Empty, col.ImageKey, "#3");
  208. }
  209. [Test]
  210. public void ImageKeyAndImageIndexInteraction ()
  211. {
  212. ColumnHeader col = new ColumnHeader ();
  213. col.ImageIndex = 1;
  214. Assert.AreEqual (1, col.ImageIndex, "#A1");
  215. Assert.AreEqual (string.Empty, col.ImageKey, "#A2");
  216. col.ImageKey = "test";
  217. Assert.AreEqual (-1, col.ImageIndex, "#B1");
  218. Assert.AreEqual ("test", col.ImageKey, "#B2");
  219. col.ImageIndex = 2;
  220. Assert.AreEqual (2, col.ImageIndex, "#C1");
  221. Assert.AreEqual (string.Empty, col.ImageKey, "#C2");
  222. col.ImageKey = null;
  223. Assert.AreEqual (-1, col.ImageIndex, "#D1");
  224. Assert.AreEqual (string.Empty, col.ImageKey, "#D2");
  225. }
  226. [Test]
  227. public void ImageList ()
  228. {
  229. ColumnHeader col = new ColumnHeader ();
  230. Assert.IsNull (col.ImageList, "#1");
  231. ListView lv = new ListView ();
  232. lv.View = View.Details;
  233. ImageList small = new ImageList ();
  234. lv.SmallImageList = small;
  235. ImageList large = new ImageList ();
  236. lv.LargeImageList = large;
  237. lv.Columns.Add (col);
  238. Assert.IsNotNull (col.ImageList, "#2");
  239. Assert.AreSame (small, col.ImageList, "#3");
  240. }
  241. [Test]
  242. public void ImageList_ListView_Disposed ()
  243. {
  244. ListView lv = new ListView ();
  245. lv.View = View.Details;
  246. ImageList small = new ImageList ();
  247. lv.SmallImageList = small;
  248. ImageList large = new ImageList ();
  249. lv.LargeImageList = large;
  250. ColumnHeader col = new ColumnHeader ();
  251. lv.Columns.Add (col);
  252. lv.Dispose ();
  253. Assert.IsNull (col.ImageList);
  254. }
  255. #endif
  256. [Test]
  257. public void Index_ListView_Disposed ()
  258. {
  259. ListView lv = new ListView ();
  260. lv.View = View.Details;
  261. ColumnHeader colA = new ColumnHeader ();
  262. lv.Columns.Add (colA);
  263. ColumnHeader colB = new ColumnHeader ();
  264. lv.Columns.Add (colB);
  265. lv.Dispose ();
  266. Assert.AreEqual (-1, colA.Index, "#1");
  267. Assert.AreEqual (-1, colB.Index, "#2");
  268. }
  269. #if NET_2_0
  270. [Test]
  271. public void Name ()
  272. {
  273. ColumnHeader col = new ColumnHeader ();
  274. Assert.AreEqual (string.Empty, col.Name, "#1");
  275. col.Name = "Address";
  276. Assert.AreEqual ("Address", col.Name, "#2");
  277. col.Name = null;
  278. Assert.AreEqual (string.Empty, col.Name, "#3");
  279. }
  280. [Test]
  281. public void Tag ()
  282. {
  283. ColumnHeader col = new ColumnHeader ();
  284. Assert.IsNull (col.Tag, "#1");
  285. col.Tag = "whatever";
  286. Assert.AreEqual ("whatever", col.Tag, "#2");
  287. col.Tag = null;
  288. Assert.IsNull (col.Tag, "#3");
  289. }
  290. #endif
  291. [Test]
  292. public void Text_ListView_Disposed ()
  293. {
  294. ListView lv = new ListView ();
  295. lv.View = View.Details;
  296. ColumnHeader col = new ColumnHeader ();
  297. lv.Columns.Add (col);
  298. lv.Dispose ();
  299. col.Text = "whatever";
  300. Assert.AreEqual ("whatever", col.Text);
  301. }
  302. [Test]
  303. public void TextAlign_ListView_Disposed ()
  304. {
  305. ListView lv = new ListView ();
  306. lv.View = View.Details;
  307. ColumnHeader col = new ColumnHeader ();
  308. lv.Columns.Add (col);
  309. lv.Dispose ();
  310. col.TextAlign = HorizontalAlignment.Right;
  311. Assert.AreEqual (HorizontalAlignment.Right, col.TextAlign);
  312. }
  313. [Test]
  314. public void ToStringTest ()
  315. {
  316. ListView lv = new ListView ();
  317. lv.SmallImageList = new ImageList ();
  318. ColumnHeader col = new ColumnHeader ();
  319. #if NET_2_0
  320. col.DisplayIndex = 3;
  321. col.ImageIndex = 2;
  322. col.Name = "address_col";
  323. col.Tag = DateTime.Now;
  324. #endif
  325. col.Text = "Address";
  326. col.TextAlign = HorizontalAlignment.Right;
  327. col.Width = 30;
  328. lv.Columns.Add (col);
  329. Assert.AreEqual ("ColumnHeader: Text: Address", col.ToString ());
  330. }
  331. [Test]
  332. [Category ("NotWorking")]
  333. public void WidthDefault ()
  334. {
  335. ColumnHeader col = new ColumnHeader ();
  336. Assert.AreEqual (60, col.Width);
  337. }
  338. [Test]
  339. public void WidthTest ()
  340. {
  341. ColumnHeader col = new ColumnHeader ();
  342. col.Text = "Column text";
  343. ListView lv = new ListView ();
  344. lv.Items.Add ("Item text");
  345. lv.View = View.Details;
  346. lv.Columns.Add (col);
  347. lv.CreateControl ();
  348. col.Width = -1;
  349. Assert.IsTrue (col.Width > 0, "#1");
  350. col.Width = -2;
  351. Assert.IsTrue (col.Width > 0, "#2");
  352. }
  353. [Test]
  354. public void Width_ListView_Disposed ()
  355. {
  356. ListView lv = new ListView ();
  357. lv.View = View.Details;
  358. ColumnHeader col = new ColumnHeader ();
  359. lv.Columns.Add (col);
  360. lv.Dispose ();
  361. col.Width = 10;
  362. Assert.AreEqual (10, col.Width);
  363. }
  364. #if NET_2_0
  365. public void ColumnReordered (object sender, ColumnReorderedEventArgs e)
  366. {
  367. columnReordered++;
  368. }
  369. private int columnReordered;
  370. #endif
  371. }
  372. }