TabControlTest.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. //
  2. // TabControlTest.cs: Test cases for TabControl.
  3. //
  4. // Author:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. // (C) 2005 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.Drawing;
  11. using System.Windows.Forms;
  12. using NUnit.Framework;
  13. namespace MonoTests.System.Windows.Forms
  14. {
  15. [TestFixture]
  16. public class TabControlTest
  17. {
  18. private int _selected_index_changed = 0;
  19. private class TabControlPoker : TabControl {
  20. public bool CheckIsInputKey (Keys key)
  21. {
  22. return IsInputKey (key);
  23. }
  24. protected override void WndProc (ref Message m)
  25. {
  26. base.WndProc (ref m);
  27. }
  28. }
  29. [SetUp]
  30. public void SetUp ()
  31. {
  32. _selected_index_changed = 0;
  33. }
  34. [Test]
  35. public void TabControlPropertyTest ()
  36. {
  37. Form myForm = new Form ();
  38. myForm.ShowInTaskbar = false;
  39. TabControl myTabControl = new TabControl ();
  40. myTabControl.Visible = true;
  41. myTabControl.Name = "Mono TabControl";
  42. // A
  43. Assert.AreEqual (TabAlignment.Top, myTabControl.Alignment, "A1");
  44. Assert.AreEqual (TabAppearance.Normal, myTabControl.Appearance, "#A2");
  45. // D
  46. Assert.AreEqual (TabDrawMode.Normal, myTabControl.DrawMode, "#D5");
  47. // H
  48. Assert.AreEqual (false, myTabControl.HotTrack, "#H1");
  49. // I
  50. Assert.AreEqual (null, myTabControl.ImageList, "#I1");
  51. // M
  52. Assert.AreEqual (false, myTabControl.Multiline, "#M1");
  53. // P
  54. Assert.AreEqual (6, myTabControl.Padding.X, "#P1");
  55. Assert.AreEqual (3, myTabControl.Padding.Y, "#P1");
  56. // R
  57. Assert.AreEqual (0, myTabControl.RowCount, "#R1");
  58. // S
  59. Assert.AreEqual (-1, myTabControl.SelectedIndex, "#S1");
  60. Assert.AreEqual (null, myTabControl.SelectedTab, "#S2");
  61. Assert.AreEqual (false, myTabControl.ShowToolTips, "#S3");
  62. Assert.AreEqual (TabSizeMode.Normal, myTabControl.SizeMode, "#S4");
  63. // T
  64. Assert.AreEqual (0, myTabControl.TabCount, "#T1");
  65. Assert.AreEqual (0, myTabControl.TabPages.Count, "#T2");
  66. myForm.Dispose ();
  67. }
  68. [Test]
  69. [Category ("NotWorking")]
  70. public void GetTabRectTest ()
  71. {
  72. TabControl myTabControl = new TabControl ();
  73. TabPage myTabPage = new TabPage();
  74. myTabControl.Controls.Add(myTabPage);
  75. myTabPage.TabIndex = 0;
  76. Rectangle myTabRect = myTabControl.GetTabRect (0);
  77. Assert.AreEqual (2, myTabRect.X, "#GetT1");
  78. Assert.AreEqual (2, myTabRect.Y, "#GetT2");
  79. Assert.AreEqual (42, myTabRect.Width, "#GetT3");
  80. // It is environment dependent
  81. //Assert.AreEqual (18, myTabRect.Height, "#GetT4");
  82. }
  83. [Test]
  84. public void ToStringTest ()
  85. {
  86. TabControl myTabControl = new TabControl ();
  87. Assert.AreEqual ("System.Windows.Forms.TabControl, TabPages.Count: 0", myTabControl.ToString(), "#1");
  88. }
  89. [Test]
  90. public void ClearTabPagesTest ()
  91. {
  92. // no tab pages
  93. TabControl tab = new TabControl ();
  94. tab.TabPages.Clear ();
  95. Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
  96. Assert.AreEqual (0, tab.TabPages.Count, "#A2");
  97. // single tab page
  98. tab.Controls.Add (new TabPage ());
  99. Assert.AreEqual (0, tab.SelectedIndex, "#B1");
  100. Assert.AreEqual (1, tab.TabPages.Count, "#B2");
  101. tab.TabPages.Clear();
  102. Assert.AreEqual (-1, tab.SelectedIndex, "#B3");
  103. Assert.AreEqual (0, tab.TabPages.Count, "#B4");
  104. // multiple tab pages
  105. tab.Controls.Add (new TabPage ());
  106. tab.Controls.Add (new TabPage ());
  107. tab.Controls.Add (new TabPage ());
  108. Assert.AreEqual (0, tab.SelectedIndex, "#C1");
  109. Assert.AreEqual (3, tab.TabPages.Count, "#C2");
  110. tab.SelectedIndex = 1;
  111. tab.TabPages.Clear ();
  112. Assert.AreEqual (-1, tab.SelectedIndex, "#C3");
  113. Assert.AreEqual (0, tab.TabPages.Count, "#C4");
  114. }
  115. [Test]
  116. [Category ("NotWorking")]
  117. public void Controls_Remove_HandleCreated ()
  118. {
  119. TabControl tab = new TabControl ();
  120. tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
  121. Form form = new Form ();
  122. form.ShowInTaskbar = false;
  123. form.Controls.Add (tab);
  124. form.Show ();
  125. tab.Controls.Add (new TabPage ());
  126. tab.Controls.Add (new TabPage ());
  127. tab.Controls.Add (new TabPage ());
  128. tab.Controls.Add (new TabPage ());
  129. tab.Controls.Add (new TabPage ());
  130. tab.Controls.Add (new TabPage ());
  131. Assert.AreEqual (0, tab.SelectedIndex, "#A1");
  132. Assert.AreEqual (6, tab.TabPages.Count, "#A2");
  133. Assert.AreEqual (0, _selected_index_changed, "#A3");
  134. // remove selected tab
  135. tab.SelectedIndex = 2;
  136. Assert.AreEqual (2, tab.SelectedIndex, "#B1");
  137. Assert.AreEqual (1, _selected_index_changed, "#B2");
  138. tab.Controls.RemoveAt (2);
  139. #if NET_2_0
  140. Assert.AreEqual (0, tab.SelectedIndex, "#B3");
  141. #else
  142. Assert.AreEqual (1, tab.SelectedIndex, "#B3");
  143. #endif
  144. Assert.AreEqual (5, tab.TabPages.Count, "#B4");
  145. Assert.AreEqual (2, _selected_index_changed, "#B5");
  146. // remove not-selected tab
  147. #if NET_2_0
  148. Assert.AreEqual (0, tab.SelectedIndex, "#C1");
  149. #else
  150. Assert.AreEqual (1, tab.SelectedIndex, "#C1");
  151. #endif
  152. Assert.AreEqual (2, _selected_index_changed, "#C2");
  153. tab.Controls.RemoveAt (3);
  154. #if NET_2_0
  155. Assert.AreEqual (0, tab.SelectedIndex, "#C3");
  156. #else
  157. Assert.AreEqual (2, tab.SelectedIndex, "#C3");
  158. #endif
  159. Assert.AreEqual (4, tab.TabPages.Count, "#C4");
  160. #if NET_2_0
  161. Assert.AreEqual (2, _selected_index_changed, "#C5");
  162. #else
  163. Assert.AreEqual (3, _selected_index_changed, "#C5");
  164. #endif
  165. // remove last tab
  166. tab.Controls.RemoveAt (3);
  167. #if NET_2_0
  168. Assert.AreEqual (0, tab.SelectedIndex, "#D1");
  169. #else
  170. Assert.AreEqual (2, tab.SelectedIndex, "#D1");
  171. #endif
  172. Assert.AreEqual (3, tab.TabPages.Count, "#D2");
  173. #if NET_2_0
  174. Assert.AreEqual (2, _selected_index_changed, "#D3");
  175. #else
  176. Assert.AreEqual (3, _selected_index_changed, "#D3");
  177. #endif
  178. // remove first tab
  179. tab.Controls.RemoveAt (0);
  180. Assert.AreEqual (0, tab.SelectedIndex, "#E1");
  181. Assert.AreEqual (2, tab.TabPages.Count, "#E2");
  182. #if NET_2_0
  183. Assert.AreEqual (3, _selected_index_changed, "#E3");
  184. #else
  185. Assert.AreEqual (4, _selected_index_changed, "#E3");
  186. #endif
  187. // remove remaining tabs
  188. tab.Controls.RemoveAt (1);
  189. tab.Controls.RemoveAt (0);
  190. Assert.AreEqual (-1, tab.SelectedIndex, "#F1");
  191. Assert.AreEqual (0, tab.TabPages.Count, "#F2");
  192. #if NET_2_0
  193. Assert.AreEqual (4, _selected_index_changed, "#F3");
  194. #else
  195. Assert.AreEqual (5, _selected_index_changed, "#F3");
  196. #endif
  197. }
  198. [Test]
  199. [Category ("NotWorking")]
  200. public void Controls_Remove_HandleNotCreated ()
  201. {
  202. TabControl tab = new TabControl ();
  203. tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
  204. tab.Controls.Add (new TabPage ());
  205. tab.Controls.Add (new TabPage ());
  206. tab.Controls.Add (new TabPage ());
  207. tab.Controls.Add (new TabPage ());
  208. tab.Controls.Add (new TabPage ());
  209. tab.Controls.Add (new TabPage ());
  210. Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
  211. Assert.AreEqual (6, tab.TabPages.Count, "#A2");
  212. Assert.AreEqual (0, _selected_index_changed, "#A3");
  213. // remove selected tab
  214. tab.SelectedIndex = 2;
  215. Assert.AreEqual (2, tab.SelectedIndex, "#B1");
  216. #if NET_2_0
  217. Assert.AreEqual (0, _selected_index_changed, "#B2");
  218. #else
  219. Assert.AreEqual (1, _selected_index_changed, "#B2");
  220. #endif
  221. tab.Controls.RemoveAt (2);
  222. #if NET_2_0
  223. Assert.AreEqual (0, tab.SelectedIndex, "#B3");
  224. #else
  225. Assert.AreEqual (1, tab.SelectedIndex, "#B3");
  226. #endif
  227. Assert.AreEqual (5, tab.TabPages.Count, "#B4");
  228. #if NET_2_0
  229. Assert.AreEqual (0, _selected_index_changed, "#B5");
  230. #else
  231. Assert.AreEqual (2, _selected_index_changed, "#B5");
  232. #endif
  233. // remove not-selected tab
  234. tab.Controls.RemoveAt (3);
  235. #if NET_2_0
  236. Assert.AreEqual (0, tab.SelectedIndex, "#C3");
  237. #else
  238. Assert.AreEqual (2, tab.SelectedIndex, "#C3");
  239. #endif
  240. Assert.AreEqual (4, tab.TabPages.Count, "#C4");
  241. #if NET_2_0
  242. Assert.AreEqual (0, _selected_index_changed, "#C5");
  243. #else
  244. Assert.AreEqual (3, _selected_index_changed, "#C5");
  245. #endif
  246. // remove last tab
  247. tab.Controls.RemoveAt (3);
  248. #if NET_2_0
  249. Assert.AreEqual (0, tab.SelectedIndex, "#D1");
  250. #else
  251. Assert.AreEqual (2, tab.SelectedIndex, "#D1");
  252. #endif
  253. Assert.AreEqual (3, tab.TabPages.Count, "#D2");
  254. #if NET_2_0
  255. Assert.AreEqual (0, _selected_index_changed, "#D3");
  256. #else
  257. Assert.AreEqual (3, _selected_index_changed, "#D3");
  258. #endif
  259. // remove first tab
  260. tab.Controls.RemoveAt (0);
  261. Assert.AreEqual (0, tab.SelectedIndex, "#E1");
  262. Assert.AreEqual (2, tab.TabPages.Count, "#E2");
  263. #if NET_2_0
  264. Assert.AreEqual (0, _selected_index_changed, "#E3");
  265. #else
  266. Assert.AreEqual (4, _selected_index_changed, "#E3");
  267. #endif
  268. // remove remaining tabs
  269. tab.Controls.RemoveAt (1);
  270. tab.Controls.RemoveAt (0);
  271. Assert.AreEqual (0, tab.SelectedIndex, "#F1");
  272. Assert.AreEqual (0, tab.TabPages.Count, "#F2");
  273. #if NET_2_0
  274. Assert.AreEqual (0, _selected_index_changed, "#F3");
  275. #else
  276. Assert.AreEqual (4, _selected_index_changed, "#F3");
  277. #endif
  278. Form form = new Form ();
  279. form.ShowInTaskbar = false;
  280. form.Controls.Add (tab);
  281. form.Show ();
  282. Assert.AreEqual (-1, tab.SelectedIndex, "#G1");
  283. Assert.AreEqual (0, tab.TabPages.Count, "#G2");
  284. #if NET_2_0
  285. Assert.AreEqual (0, _selected_index_changed, "#G3");
  286. #else
  287. Assert.AreEqual (4, _selected_index_changed, "#G3");
  288. #endif
  289. }
  290. [Test]
  291. public void SelectedIndex ()
  292. {
  293. TabControl tab = new TabControl ();
  294. tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
  295. tab.Controls.Add (new TabPage ());
  296. tab.Controls.Add (new TabPage ());
  297. tab.SelectedIndex = 0;
  298. #if NET_2_0
  299. Assert.AreEqual (0, _selected_index_changed, "#A1");
  300. #else
  301. Assert.AreEqual (1, _selected_index_changed, "#A1");
  302. #endif
  303. Assert.AreEqual (0, tab.SelectedIndex, "#A2");
  304. tab.SelectedIndex = -1;
  305. #if NET_2_0
  306. Assert.AreEqual (0, _selected_index_changed, "#B1");
  307. #else
  308. Assert.AreEqual (2, _selected_index_changed, "#B1");
  309. #endif
  310. Assert.AreEqual (-1, tab.SelectedIndex, "#B2");
  311. tab.SelectedIndex = 1;
  312. #if NET_2_0
  313. Assert.AreEqual (0, _selected_index_changed, "#C1");
  314. #else
  315. Assert.AreEqual (3, _selected_index_changed, "#C1");
  316. #endif
  317. Assert.AreEqual (1, tab.SelectedIndex, "#C2");
  318. tab.SelectedIndex = 1;
  319. #if NET_2_0
  320. Assert.AreEqual (0, _selected_index_changed, "#D1");
  321. #else
  322. Assert.AreEqual (3, _selected_index_changed, "#D1");
  323. #endif
  324. Assert.AreEqual (1, tab.SelectedIndex, "#D2");
  325. tab.SelectedIndex = 6;
  326. #if NET_2_0
  327. Assert.AreEqual (0, _selected_index_changed, "#E1");
  328. #else
  329. Assert.AreEqual (4, _selected_index_changed, "#E1");
  330. #endif
  331. Assert.AreEqual (6, tab.SelectedIndex, "#E2");
  332. tab.SelectedIndex = 6;
  333. #if NET_2_0
  334. Assert.AreEqual (0, _selected_index_changed, "#E31");
  335. #else
  336. Assert.AreEqual (4, _selected_index_changed, "#E3");
  337. #endif
  338. Assert.AreEqual (6, tab.SelectedIndex, "#E4");
  339. Form form = new Form ();
  340. form.ShowInTaskbar = false;
  341. form.Controls.Add (tab);
  342. form.Show ();
  343. Assert.AreEqual (0, tab.SelectedIndex, "#E5");
  344. tab.SelectedIndex = 0;
  345. #if NET_2_0
  346. Assert.AreEqual (0, _selected_index_changed, "#F1");
  347. #else
  348. Assert.AreEqual (4, _selected_index_changed, "#F1");
  349. #endif
  350. Assert.AreEqual (0, tab.SelectedIndex, "#F2");
  351. tab.SelectedIndex = -1;
  352. #if NET_2_0
  353. Assert.AreEqual (1, _selected_index_changed, "#G1");
  354. #else
  355. Assert.AreEqual (5, _selected_index_changed, "#G1");
  356. #endif
  357. Assert.AreEqual (-1, tab.SelectedIndex, "#G2");
  358. tab.SelectedIndex = 1;
  359. #if NET_2_0
  360. Assert.AreEqual (2, _selected_index_changed, "#H1");
  361. #else
  362. Assert.AreEqual (6, _selected_index_changed, "#H1");
  363. #endif
  364. Assert.AreEqual (1, tab.SelectedIndex, "#H2");
  365. tab.SelectedIndex = 1;
  366. #if NET_2_0
  367. Assert.AreEqual (2, _selected_index_changed, "#I1");
  368. #else
  369. Assert.AreEqual (6, _selected_index_changed, "#I1");
  370. #endif
  371. Assert.AreEqual (1, tab.SelectedIndex, "#I2");
  372. form.Dispose ();
  373. }
  374. [Test] // bug #78395
  375. public void SelectedIndex_Ignore ()
  376. {
  377. TabControl c = new TabControl ();
  378. c.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
  379. c.SelectedIndex = 0;
  380. #if NET_2_0
  381. Assert.AreEqual (0, _selected_index_changed, "#1");
  382. #else
  383. Assert.AreEqual (1, _selected_index_changed, "#1");
  384. #endif
  385. c.TabPages.Add (new TabPage ());
  386. c.TabPages.Add (new TabPage ());
  387. Assert.AreEqual (0, c.SelectedIndex, "#2");
  388. Form f = new Form ();
  389. f.ShowInTaskbar = false;
  390. f.Controls.Add (c);
  391. f.Show ();
  392. #if NET_2_0
  393. Assert.AreEqual (0, _selected_index_changed, "#3");
  394. #else
  395. Assert.AreEqual (1, _selected_index_changed, "#3");
  396. #endif
  397. c.SelectedIndex = 2; // beyond the pages - ignored
  398. #if NET_2_0
  399. Assert.AreEqual (1, _selected_index_changed, "#4");
  400. #else
  401. Assert.AreEqual (2, _selected_index_changed, "#4");
  402. #endif
  403. Assert.AreEqual (0, c.SelectedIndex, "#4");
  404. f.Dispose ();
  405. }
  406. [Test]
  407. public void SelectedIndex_Negative ()
  408. {
  409. Form form = new Form ();
  410. form.ShowInTaskbar = false;
  411. TabControl tab = new TabControl ();
  412. tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
  413. form.Controls.Add (tab);
  414. Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
  415. tab.SelectedIndex = -1;
  416. Assert.AreEqual (-1, tab.SelectedIndex, "#A2");
  417. Assert.AreEqual (0, _selected_index_changed, "#A3");
  418. try {
  419. tab.SelectedIndex = -2;
  420. Assert.Fail ("#B1");
  421. #if NET_2_0
  422. } catch (ArgumentOutOfRangeException ex) {
  423. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  424. Assert.IsNotNull (ex.Message, "#B3");
  425. Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
  426. Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#B5");
  427. Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
  428. Assert.IsNotNull (ex.ParamName, "#B7");
  429. Assert.AreEqual ("SelectedIndex", ex.ParamName, "#B8");
  430. }
  431. #else
  432. } catch (ArgumentException ex) {
  433. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  434. Assert.IsNotNull (ex.Message, "#B3");
  435. Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
  436. Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#B5");
  437. Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
  438. Assert.IsNull (ex.ParamName, "#B7");
  439. }
  440. #endif
  441. Assert.AreEqual (0, _selected_index_changed, "#C1");
  442. Assert.AreEqual (-1, tab.SelectedIndex, "#C2");
  443. form.Show ();
  444. Assert.AreEqual (0, _selected_index_changed, "#C3");
  445. Assert.AreEqual (-1, tab.SelectedIndex, "#C4");
  446. try {
  447. tab.SelectedIndex = -5;
  448. Assert.Fail ("#D1");
  449. #if NET_2_0
  450. } catch (ArgumentOutOfRangeException ex) {
  451. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#D2");
  452. Assert.IsNotNull (ex.Message, "#D3");
  453. Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
  454. Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#D5");
  455. Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
  456. Assert.IsNotNull (ex.ParamName, "#D7");
  457. Assert.AreEqual ("SelectedIndex", ex.ParamName, "#D8");
  458. }
  459. #else
  460. } catch (ArgumentException ex) {
  461. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
  462. Assert.IsNotNull (ex.Message, "#D3");
  463. Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
  464. Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#D5");
  465. Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
  466. Assert.IsNull (ex.ParamName, "#D7");
  467. }
  468. #endif
  469. Assert.AreEqual (-1, tab.SelectedIndex, "#E1");
  470. tab.SelectedIndex = -1;
  471. Assert.AreEqual (-1, tab.SelectedIndex, "#E2");
  472. Assert.AreEqual (0, _selected_index_changed, "#E3");
  473. form.Dispose ();
  474. }
  475. [Test]
  476. [Category ("NotWorking")]
  477. public void InputKeyTest ()
  478. {
  479. TabControlPoker p = new TabControlPoker ();
  480. foreach (Keys key in Enum.GetValues (typeof (Keys))) {
  481. switch (key) {
  482. case Keys.PageUp:
  483. case Keys.PageDown:
  484. case Keys.End:
  485. case Keys.Home:
  486. continue;
  487. }
  488. Assert.IsFalse (p.CheckIsInputKey (key), "FALSE- " + key);
  489. }
  490. Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "TRUE-pageup");
  491. Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "TRUE-pagedown");
  492. Assert.IsTrue (p.CheckIsInputKey (Keys.End), "TRUE-end");
  493. Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "TRUE-home");
  494. // Create the handle, things are a little different with
  495. // the handle created
  496. IntPtr dummy = p.Handle;
  497. TestHelper.RemoveWarning (dummy);
  498. foreach (Keys key in Enum.GetValues (typeof (Keys))) {
  499. switch (key) {
  500. case Keys.Left:
  501. case Keys.Right:
  502. case Keys.Up:
  503. case Keys.Down:
  504. case Keys.PageUp:
  505. case Keys.PageDown:
  506. case Keys.End:
  507. case Keys.Home:
  508. continue;
  509. }
  510. Assert.IsFalse (p.CheckIsInputKey (key), "PH-FALSE- " + key);
  511. }
  512. Assert.IsTrue (p.CheckIsInputKey (Keys.Left), "PH-TRUE-left");
  513. Assert.IsTrue (p.CheckIsInputKey (Keys.Right), "PH-TRUE-right");
  514. Assert.IsTrue (p.CheckIsInputKey (Keys.Up), "PH-TRUE-up");
  515. Assert.IsTrue (p.CheckIsInputKey (Keys.Down), "PH-TRUE-down");
  516. Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "PH-TRUE-pageup");
  517. Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "PH-TRUE-pagedown");
  518. Assert.IsTrue (p.CheckIsInputKey (Keys.End), "PH-TRUE-end");
  519. Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "PH-TRUE-home");
  520. }
  521. [Test] // bug #79847
  522. public void NoTabPages ()
  523. {
  524. Form form = new Form ();
  525. TabControl tab = new TabControl ();
  526. tab.SelectedIndex = 0;
  527. Assert.AreEqual (0, tab.SelectedIndex, "#A1");
  528. form.Controls.Add (tab);
  529. Assert.AreEqual (0, tab.SelectedIndex, "#A2");
  530. form.ShowInTaskbar = false;
  531. form.Show ();
  532. Assert.AreEqual (-1, tab.SelectedIndex, "#A3");
  533. form.Dispose ();
  534. }
  535. private void SelectedIndexChanged (object sender, EventArgs e)
  536. {
  537. _selected_index_changed++;
  538. }
  539. #if NET_2_0
  540. [Test]
  541. public void MethodSelectTab ()
  542. {
  543. TabControl tc = new TabControl ();
  544. tc.TabPages.Add (new TabPage ("One"));
  545. tc.TabPages.Add (new TabPage ("Two"));
  546. tc.SelectTab (1);
  547. Assert.AreEqual (1, tc.SelectedIndex, "A1");
  548. }
  549. [Test]
  550. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  551. public void MethodSelectTabAOORE ()
  552. {
  553. TabControl tc = new TabControl ();
  554. tc.TabPages.Add (new TabPage ("One"));
  555. tc.TabPages.Add (new TabPage ("Two"));
  556. tc.SelectTab (-1);
  557. }
  558. [Test]
  559. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  560. public void MethodSelectTabAOORE2 ()
  561. {
  562. TabControl tc = new TabControl ();
  563. tc.TabPages.Add (new TabPage ("One"));
  564. tc.TabPages.Add (new TabPage ("Two"));
  565. tc.SelectTab (2);
  566. }
  567. [Test]
  568. public void EventSelected ()
  569. {
  570. Form f = new Form ();
  571. TabControl tc = new TabControl ();
  572. TabControlEventArgs tcea = new TabControlEventArgs (null, 0, TabControlAction.Deselected);
  573. f.Controls.Add (tc);
  574. string events = string.Empty;
  575. tc.SelectedIndexChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("SelectedIndexChanged;"); });
  576. tc.Selected += new TabControlEventHandler (delegate (Object obj, TabControlEventArgs e) { events += ("Selected;"); tcea = e; });
  577. TabPage tp1 = new TabPage ("One");
  578. TabPage tp2 = new TabPage ("Two");
  579. tc.TabPages.Add (tp1);
  580. tc.TabPages.Add (tp2);
  581. f.Show ();
  582. tc.SelectTab (1);
  583. Assert.AreEqual ("Selected;SelectedIndexChanged;", events, "A1");
  584. Assert.AreEqual (TabControlAction.Selected, tcea.Action, "A2");
  585. Assert.AreSame (tp2, tcea.TabPage, "A3");
  586. Assert.AreEqual (1, tcea.TabPageIndex, "A4");
  587. f.Close ();
  588. }
  589. #endif
  590. }
  591. }