2 // TabControlTest.cs: Test cases for TabControl.
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
12 using System.Windows.Forms;
14 using NUnit.Framework;
16 namespace MonoTests.System.Windows.Forms
19 public class TabControlTest
21 private int _selected_index_changed = 0;
23 private class TabControlPoker : TabControl {
25 public bool CheckIsInputKey (Keys key)
27 return IsInputKey (key);
30 protected override void WndProc (ref Message m)
39 _selected_index_changed = 0;
43 public void TabControlPropertyTest ()
45 Form myForm = new Form ();
46 myForm.ShowInTaskbar = false;
47 TabControl myTabControl = new TabControl ();
48 myTabControl.Visible = true;
49 myTabControl.Name = "Mono TabControl";
52 Assert.AreEqual (TabAlignment.Top, myTabControl.Alignment, "A1");
53 Assert.AreEqual (TabAppearance.Normal, myTabControl.Appearance, "#A2");
56 Assert.AreEqual (TabDrawMode.Normal, myTabControl.DrawMode, "#D5");
59 Assert.AreEqual (false, myTabControl.HotTrack, "#H1");
62 Assert.AreEqual (null, myTabControl.ImageList, "#I1");
65 Assert.AreEqual (false, myTabControl.Multiline, "#M1");
68 Assert.AreEqual (6, myTabControl.Padding.X, "#P1");
69 Assert.AreEqual (3, myTabControl.Padding.Y, "#P1");
72 Assert.AreEqual (0, myTabControl.RowCount, "#R1");
75 Assert.AreEqual (-1, myTabControl.SelectedIndex, "#S1");
76 Assert.AreEqual (null, myTabControl.SelectedTab, "#S2");
77 Assert.AreEqual (false, myTabControl.ShowToolTips, "#S3");
78 Assert.AreEqual (TabSizeMode.Normal, myTabControl.SizeMode, "#S4");
81 Assert.AreEqual (0, myTabControl.TabCount, "#T1");
82 Assert.AreEqual (0, myTabControl.TabPages.Count, "#T2");
88 [Category ("NotWorking")]
89 public void GetTabRectTest ()
91 TabControl myTabControl = new TabControl ();
92 TabPage myTabPage = new TabPage();
93 myTabControl.Controls.Add(myTabPage);
94 myTabPage.TabIndex = 0;
95 Rectangle myTabRect = myTabControl.GetTabRect (0);
96 Assert.AreEqual (2, myTabRect.X, "#GetT1");
97 Assert.AreEqual (2, myTabRect.Y, "#GetT2");
98 Assert.AreEqual (42, myTabRect.Width, "#GetT3");
99 // It is environment dependent
100 //Assert.AreEqual (18, myTabRect.Height, "#GetT4");
104 public void ToStringTest ()
106 TabControl myTabControl = new TabControl ();
107 Assert.AreEqual ("System.Windows.Forms.TabControl, TabPages.Count: 0", myTabControl.ToString(), "#1");
111 public void ClearTabPagesTest ()
114 TabControl tab = new TabControl ();
115 tab.TabPages.Clear ();
116 Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
117 Assert.AreEqual (0, tab.TabPages.Count, "#A2");
120 tab.Controls.Add (new TabPage ());
121 Assert.AreEqual (0, tab.SelectedIndex, "#B1");
122 Assert.AreEqual (1, tab.TabPages.Count, "#B2");
123 tab.TabPages.Clear();
124 Assert.AreEqual (-1, tab.SelectedIndex, "#B3");
125 Assert.AreEqual (0, tab.TabPages.Count, "#B4");
127 // multiple tab pages
128 tab.Controls.Add (new TabPage ());
129 tab.Controls.Add (new TabPage ());
130 tab.Controls.Add (new TabPage ());
131 Assert.AreEqual (0, tab.SelectedIndex, "#C1");
132 Assert.AreEqual (3, tab.TabPages.Count, "#C2");
133 tab.SelectedIndex = 1;
134 tab.TabPages.Clear ();
135 Assert.AreEqual (-1, tab.SelectedIndex, "#C3");
136 Assert.AreEqual (0, tab.TabPages.Count, "#C4");
140 public void SelectedIndex ()
142 TabControl tab = new TabControl ();
143 tab.Controls.Add (new TabPage ());
144 tab.Controls.Add (new TabPage ());
145 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
147 tab.SelectedIndex = 0;
149 Assert.AreEqual (0, _selected_index_changed, "#A1");
151 Assert.AreEqual (1, _selected_index_changed, "#A1");
153 Assert.AreEqual (0, tab.SelectedIndex, "#A2");
155 tab.SelectedIndex = -1;
157 Assert.AreEqual (0, _selected_index_changed, "#B1");
159 Assert.AreEqual (2, _selected_index_changed, "#B1");
161 Assert.AreEqual (-1, tab.SelectedIndex, "#B2");
163 tab.SelectedIndex = 1;
165 Assert.AreEqual (0, _selected_index_changed, "#C1");
167 Assert.AreEqual (3, _selected_index_changed, "#C1");
169 Assert.AreEqual (1, tab.SelectedIndex, "#C2");
171 tab.SelectedIndex = 1;
173 Assert.AreEqual (0, _selected_index_changed, "#D1");
175 Assert.AreEqual (3, _selected_index_changed, "#D1");
177 Assert.AreEqual (1, tab.SelectedIndex, "#D2");
180 tab.SelectedIndex = 6;
182 Assert.AreEqual (0, _selected_index_changed, "#E1");
184 Assert.AreEqual (4, _selected_index_changed, "#E1");
186 Assert.AreEqual (6, tab.SelectedIndex, "#E2");
188 tab.SelectedIndex = 6;
190 Assert.AreEqual (0, _selected_index_changed, "#E31");
192 Assert.AreEqual (4, _selected_index_changed, "#E3");
194 Assert.AreEqual (6, tab.SelectedIndex, "#E4");
198 Form form = new Form ();
199 form.ShowInTaskbar = false;
200 form.Controls.Add (tab);
204 Assert.AreEqual (0, tab.SelectedIndex, "#E5");
206 tab.SelectedIndex = 0;
208 Assert.AreEqual (1, _selected_index_changed, "#F1");
210 Assert.AreEqual (4, _selected_index_changed, "#F1");
212 Assert.AreEqual (0, tab.SelectedIndex, "#F2");
214 tab.SelectedIndex = -1;
216 Assert.AreEqual (2, _selected_index_changed, "#G1");
218 Assert.AreEqual (5, _selected_index_changed, "#G1");
220 Assert.AreEqual (-1, tab.SelectedIndex, "#G2");
222 tab.SelectedIndex = 1;
224 Assert.AreEqual (3, _selected_index_changed, "#H1");
226 Assert.AreEqual (6, _selected_index_changed, "#H1");
228 Assert.AreEqual (1, tab.SelectedIndex, "#H2");
230 tab.SelectedIndex = 1;
232 Assert.AreEqual (3, _selected_index_changed, "#I1");
234 Assert.AreEqual (6, _selected_index_changed, "#I1");
236 Assert.AreEqual (1, tab.SelectedIndex, "#I2");
242 public void SelectedIndex_Ignore ()
244 TabControl c = new TabControl ();
245 c.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
248 Assert.AreEqual (0, _selected_index_changed, "#1");
250 Assert.AreEqual (1, _selected_index_changed, "#1");
253 c.TabPages.Add (new TabPage ());
254 c.TabPages.Add (new TabPage ());
255 Assert.AreEqual (0, c.SelectedIndex, "#2");
256 Form f = new Form ();
257 f.ShowInTaskbar = false;
261 Assert.AreEqual (0, _selected_index_changed, "#3");
263 Assert.AreEqual (1, _selected_index_changed, "#3");
265 c.SelectedIndex = 2; // beyond the pages - ignored
267 Assert.AreEqual (1, _selected_index_changed, "#4");
269 Assert.AreEqual (2, _selected_index_changed, "#4");
271 Assert.AreEqual (0, c.SelectedIndex, "#4");
276 public void SelectedIndex_Negative ()
278 Form form = new Form ();
279 form.ShowInTaskbar = false;
280 TabControl tab = new TabControl ();
281 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
282 form.Controls.Add (tab);
284 Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
285 tab.SelectedIndex = -1;
286 Assert.AreEqual (-1, tab.SelectedIndex, "#A2");
287 Assert.AreEqual (0, _selected_index_changed, "#A3");
290 tab.SelectedIndex = -2;
293 } catch (ArgumentOutOfRangeException ex) {
294 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
295 Assert.IsNotNull (ex.Message, "#B3");
296 Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
297 Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#B5");
298 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
299 Assert.IsNotNull (ex.ParamName, "#B7");
300 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#B8");
303 } catch (ArgumentException ex) {
304 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
305 Assert.IsNotNull (ex.Message, "#B3");
306 Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
307 Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#B5");
308 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
309 Assert.IsNull (ex.ParamName, "#B7");
313 Assert.AreEqual (0, _selected_index_changed, "#C1");
314 Assert.AreEqual (-1, tab.SelectedIndex, "#C2");
316 Assert.AreEqual (0, _selected_index_changed, "#C3");
317 Assert.AreEqual (-1, tab.SelectedIndex, "#C4");
320 tab.SelectedIndex = -5;
323 } catch (ArgumentOutOfRangeException ex) {
324 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#D2");
325 Assert.IsNotNull (ex.Message, "#D3");
326 Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
327 Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#D5");
328 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
329 Assert.IsNotNull (ex.ParamName, "#D7");
330 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#D8");
333 } catch (ArgumentException ex) {
334 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
335 Assert.IsNotNull (ex.Message, "#D3");
336 Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
337 Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#D5");
338 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
339 Assert.IsNull (ex.ParamName, "#D7");
343 Assert.AreEqual (-1, tab.SelectedIndex, "#E1");
344 tab.SelectedIndex = -1;
345 Assert.AreEqual (-1, tab.SelectedIndex, "#E2");
346 Assert.AreEqual (0, _selected_index_changed, "#E3");
352 [Category ("NotWorking")]
353 public void InputKeyTest ()
355 TabControlPoker p = new TabControlPoker ();
357 foreach (Keys key in Enum.GetValues (typeof (Keys))) {
365 Assert.IsFalse (p.CheckIsInputKey (key), "FALSE- " + key);
368 Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "TRUE-pageup");
369 Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "TRUE-pagedown");
370 Assert.IsTrue (p.CheckIsInputKey (Keys.End), "TRUE-end");
371 Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "TRUE-home");
373 // Create the handle, things are a little different with
374 // the handle created
375 IntPtr dummy = p.Handle;
377 foreach (Keys key in Enum.GetValues (typeof (Keys))) {
389 Assert.IsFalse (p.CheckIsInputKey (key), "PH-FALSE- " + key);
392 Assert.IsTrue (p.CheckIsInputKey (Keys.Left), "PH-TRUE-left");
393 Assert.IsTrue (p.CheckIsInputKey (Keys.Right), "PH-TRUE-right");
394 Assert.IsTrue (p.CheckIsInputKey (Keys.Up), "PH-TRUE-up");
395 Assert.IsTrue (p.CheckIsInputKey (Keys.Down), "PH-TRUE-down");
396 Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "PH-TRUE-pageup");
397 Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "PH-TRUE-pagedown");
398 Assert.IsTrue (p.CheckIsInputKey (Keys.End), "PH-TRUE-end");
399 Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "PH-TRUE-home");
403 public void NoTabPages ()
405 Form form = new Form ();
406 TabControl tab = new TabControl ();
407 tab.SelectedIndex = 0;
408 Assert.AreEqual (0, tab.SelectedIndex, "#A1");
410 form.Controls.Add (tab);
412 Assert.AreEqual (0, tab.SelectedIndex, "#A2");
414 form.ShowInTaskbar = false;
417 Assert.AreEqual (-1, tab.SelectedIndex, "#A3");
422 private void SelectedIndexChanged (object sender, EventArgs e)
424 _selected_index_changed++;