2 // StatusBarTest.cs: Test cases for StatusBar.
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
11 using NUnit.Framework;
12 using System.Windows.Forms;
14 using System.Runtime.Remoting;
15 using System.Collections;
17 namespace MonoTests.System.Windows.Forms
20 public class StatusBarTest : TestHelper
23 public void StatusBarTextTest ()
25 string a = new string ('a', 127);
27 StatusBar sb = new StatusBar();
29 Assert.AreEqual (ab, sb.Text, "#01");
33 public void StatusBarShowPanelsTest ()
35 StatusBar sb = new StatusBar ();
38 Assert.AreEqual ("Test", sb.Text, "#01");
42 public void StatusBarPropertyTest ()
44 Form myform = new Form ();
45 myform.ShowInTaskbar = false;
46 StatusBar mysbar = new StatusBar ();
47 StatusBarPanel sbarpanel1 = new StatusBarPanel ();
48 StatusBarPanel sbarpanel2 = new StatusBarPanel ();
49 sbarpanel1.Text = "Status Quo";
50 sbarpanel2.Text = "State 2";
51 mysbar.Panels.Add (sbarpanel1);
52 mysbar.Panels.Add (sbarpanel2);
53 myform.Controls.Add (mysbar);
56 Assert.AreEqual ("Control", mysbar.BackColor.Name, "#B1");
59 Assert.AreEqual (DockStyle.Bottom, mysbar.Dock, "#D1");
62 Assert.AreEqual ("ControlText", mysbar.ForeColor.Name, "#F2");
65 Assert.AreEqual (sbarpanel1.Text, mysbar.Panels [0].Text , "#P1");
68 Assert.AreEqual (false, mysbar.ShowPanels, "#S1");
69 Assert.AreEqual (true, mysbar.SizingGrip, "#S2");
70 Assert.AreEqual (null, mysbar.Site, "#S3");
73 Assert.AreEqual ("", mysbar.Text, "#T1");
74 mysbar.Text = "MONO STATUSBAR";
75 Assert.AreEqual ("MONO STATUSBAR", mysbar.Text, "#T2");
81 public void ToStringMethodTest ()
83 StatusBar mysbar = new StatusBar ();
84 mysbar.Text = "New StatusBar";
85 Assert.AreEqual ("System.Windows.Forms.StatusBar, Panels.Count: 0", mysbar.ToString (), "#T3");
87 //[MonoTODO ("Test case for DrawItem")]
88 //[MonoTODO ("Test case for PanelClick")]
92 public class StatusBarPanelCollectionTest : TestHelper
100 public void DefaultPropertiesTest ()
102 StatusBar bar = new StatusBar ();
103 StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
105 Assert.AreEqual (0, collection.Count, "C1");
106 Assert.AreEqual (false, collection.IsReadOnly, "I1");
111 public void AddRemoveTest ()
113 StatusBar bar = new StatusBar ();
114 StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
116 StatusBarPanel panel = new StatusBarPanel ();
117 StatusBarPanel panel2 = new StatusBarPanel ();
119 collection.Add (panel);
120 Assert.AreEqual (1, collection.Count, "#1");
122 collection.Remove (panel);
123 Assert.AreEqual (0, collection.Count, "#2");
125 collection.Add (panel);
126 collection.RemoveAt (0);
127 Assert.AreEqual (0, collection.Count, "#3");
129 collection.Add (panel);
130 Assert.AreEqual (0, collection.IndexOf (panel), "#4");
131 Assert.AreEqual (-1, collection.IndexOf (panel2), "#5");
133 collection.Add (panel2);
134 Assert.AreEqual (1, collection.IndexOf (panel2), "#6");
136 collection.RemoveAt (0);
137 Assert.AreEqual (0, collection.IndexOf (panel2), "#7");
138 Assert.AreEqual (1, collection.Count, "#8");
140 Assert.AreEqual (false, collection.Contains (panel), "#9");
141 Assert.AreEqual (true, collection.Contains (panel2), "#10");
146 public void ItemByKeyTest ()
148 StatusBar bar = new StatusBar ();
149 StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
151 StatusBarPanel panel1 = new StatusBarPanel ();
152 StatusBarPanel panel2 = new StatusBarPanel ();
153 StatusBarPanel panel3 = new StatusBarPanel ();
154 StatusBarPanel panel4 = new StatusBarPanel ();
155 StatusBarPanel panel5 = new StatusBarPanel ();
164 c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
166 Assert.AreEqual (null, c [""], "#1");
167 Assert.AreEqual (null, c [null], "#2");
168 Assert.AreEqual (panel1, c ["p1"], "#3");
169 Assert.AreEqual (panel1, c ["P1"], "#4");
170 Assert.AreEqual (panel2, c ["p2"], "#5");
171 Assert.AreEqual (panel2, c ["P2"], "#6");
172 Assert.AreEqual (null, c ["p3"], "#7");
173 Assert.AreEqual (null, c ["p"], "#8");
177 public void RemoveByKeyTest ()
179 StatusBar bar = new StatusBar ();
180 StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
182 StatusBarPanel panel1 = new StatusBarPanel ();
183 StatusBarPanel panel2 = new StatusBarPanel ();
184 StatusBarPanel panel3 = new StatusBarPanel ();
185 StatusBarPanel panel4 = new StatusBarPanel ();
186 StatusBarPanel panel5 = new StatusBarPanel ();
195 c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
197 Assert.AreEqual (true, c.ContainsKey ("p1"), "#A1");
198 Assert.AreEqual (true, c.ContainsKey ("P1"), "#A2");
199 Assert.AreEqual (true, c.ContainsKey ("P2"), "#A3");
200 Assert.AreEqual (false, c.ContainsKey (""), "#A4");
201 Assert.AreEqual (false, c.ContainsKey (null), "#A5");
202 Assert.AreEqual (false, c.ContainsKey ("p3"), "#A6");
203 Assert.AreEqual (false, c.ContainsKey ("p"), "#A7");
204 Assert.AreEqual (null, c [""], "#A8");
205 Assert.AreEqual (null, c [null], "#A9");
206 Assert.AreEqual (panel1, c ["p1"], "#A10");
207 Assert.AreEqual (panel1, c ["P1"], "#A11");
208 Assert.AreEqual (panel2, c ["p2"], "#A12");
209 Assert.AreEqual (panel2, c ["P2"], "#A13");
210 Assert.AreEqual (null, c ["p3"], "#A14");
211 Assert.AreEqual (null, c ["p"], "#A15");
213 c.RemoveByKey ("P2");
215 Assert.AreEqual (true, c.ContainsKey ("p1"), "#B1");
216 Assert.AreEqual (true, c.ContainsKey ("P1"), "#B2");
217 Assert.AreEqual (true, c.ContainsKey ("P2"), "#B3");
218 Assert.AreEqual (false, c.ContainsKey (""), "#B4");
219 Assert.AreEqual (false, c.ContainsKey (null), "#B5");
220 Assert.AreEqual (false, c.ContainsKey ("p3"), "#B6");
221 Assert.AreEqual (false, c.ContainsKey ("p"), "#B7");
222 Assert.AreEqual (null, c [""], "#B8");
223 Assert.AreEqual (null, c [null], "#B9");
224 Assert.AreEqual (panel1, c ["p1"], "#B10");
225 Assert.AreEqual (panel1, c ["P1"], "#B11");
226 Assert.AreEqual (panel3, c ["p2"], "#B12");
227 Assert.AreEqual (panel3, c ["P2"], "#B13");
228 Assert.AreEqual (null, c ["p3"], "#B14");
229 Assert.AreEqual (null, c ["p"], "#B15");
231 c.RemoveByKey ("p2");
233 Assert.AreEqual (true, c.ContainsKey ("p1"), "#C1");
234 Assert.AreEqual (true, c.ContainsKey ("P1"), "#C2");
235 Assert.AreEqual (false, c.ContainsKey ("P2"), "#C3");
236 Assert.AreEqual (false, c.ContainsKey (""), "#C4");
237 Assert.AreEqual (false, c.ContainsKey (null), "#C5");
238 Assert.AreEqual (false, c.ContainsKey ("p3"), "#C6");
239 Assert.AreEqual (false, c.ContainsKey ("p"), "#C7");
240 Assert.AreEqual (null, c [""], "#C8");
241 Assert.AreEqual (null, c [null], "#C9");
242 Assert.AreEqual (panel1, c ["p1"], "#C10");
243 Assert.AreEqual (panel1, c ["P1"], "#C11");
244 Assert.AreEqual (null, c ["p2"], "#C12");
245 Assert.AreEqual (null, c ["P2"], "#C13");
246 Assert.AreEqual (null, c ["p3"], "#C14");
247 Assert.AreEqual (null, c ["p"], "#C15");
249 c.RemoveByKey ("p2");
251 Assert.AreEqual (true, c.ContainsKey ("p1"), "#D1");
252 Assert.AreEqual (true, c.ContainsKey ("P1"), "#D2");
253 Assert.AreEqual (false, c.ContainsKey ("P2"), "#D3");
254 Assert.AreEqual (false, c.ContainsKey (""), "#D4");
255 Assert.AreEqual (false, c.ContainsKey (null), "#D5");
256 Assert.AreEqual (false, c.ContainsKey ("p3"), "#D6");
257 Assert.AreEqual (false, c.ContainsKey ("p"), "#D7");
258 Assert.AreEqual (null, c [""], "#D8");
259 Assert.AreEqual (null, c [null], "#D9");
260 Assert.AreEqual (panel1, c ["p1"], "#D10");
261 Assert.AreEqual (panel1, c ["P1"], "#D11");
262 Assert.AreEqual (null, c ["p2"], "#D12");
263 Assert.AreEqual (null, c ["P2"], "#D13");
264 Assert.AreEqual (null, c ["p3"], "#D14");
265 Assert.AreEqual (null, c ["p"], "#D15");
267 c.RemoveByKey ("P1");
269 Assert.AreEqual (false, c.ContainsKey ("p1"), "#E1");
270 Assert.AreEqual (false, c.ContainsKey ("P1"), "#E2");
271 Assert.AreEqual (false, c.ContainsKey ("P2"), "#E3");
272 Assert.AreEqual (false, c.ContainsKey (""), "#E4");
273 Assert.AreEqual (false, c.ContainsKey (null), "#E5");
274 Assert.AreEqual (false, c.ContainsKey ("p3"), "#E6");
275 Assert.AreEqual (false, c.ContainsKey ("p"), "#E7");
276 Assert.AreEqual (null, c [""], "#E8");
277 Assert.AreEqual (null, c [null], "#E9");
278 Assert.AreEqual (null, c ["p1"], "#E10");
279 Assert.AreEqual (null, c ["P1"], "#E11");
280 Assert.AreEqual (null, c ["p2"], "#E12");
281 Assert.AreEqual (null, c ["P2"], "#E13");
282 Assert.AreEqual (null, c ["p3"], "#E14");
283 Assert.AreEqual (null, c ["p"], "#E15");
287 Assert.AreEqual (false, c.ContainsKey ("p1"), "#F1");
288 Assert.AreEqual (false, c.ContainsKey ("P1"), "#F2");
289 Assert.AreEqual (false, c.ContainsKey ("P2"), "#F3");
290 Assert.AreEqual (false, c.ContainsKey (""), "#F4");
291 Assert.AreEqual (false, c.ContainsKey (null), "#F5");
292 Assert.AreEqual (false, c.ContainsKey ("p3"), "#F6");
293 Assert.AreEqual (false, c.ContainsKey ("p"), "#F7");
294 Assert.AreEqual (null, c [""], "#F8");
295 Assert.AreEqual (null, c [null], "#F9");
296 Assert.AreEqual (null, c ["p1"], "#F10");
297 Assert.AreEqual (null, c ["P1"], "#F11");
298 Assert.AreEqual (null, c ["p2"], "#F12");
299 Assert.AreEqual (null, c ["P2"], "#F13");
300 Assert.AreEqual (null, c ["p3"], "#F14");
301 Assert.AreEqual (null, c ["p"], "#F15");
304 c.RemoveByKey (null);
306 Assert.AreEqual (false, c.ContainsKey ("p1"), "#G1");
307 Assert.AreEqual (false, c.ContainsKey ("P1"), "#G2");
308 Assert.AreEqual (false, c.ContainsKey ("P2"), "#G3");
309 Assert.AreEqual (false, c.ContainsKey (""), "#G4");
310 Assert.AreEqual (false, c.ContainsKey (null), "#G5");
311 Assert.AreEqual (false, c.ContainsKey ("p3"), "#G6");
312 Assert.AreEqual (false, c.ContainsKey ("p"), "#G7");
313 Assert.AreEqual (null, c [""], "#G8");
314 Assert.AreEqual (null, c [null], "#G9");
315 Assert.AreEqual (null, c ["p1"], "#G10");
316 Assert.AreEqual (null, c ["P1"], "#G11");
317 Assert.AreEqual (null, c ["p2"], "#G12");
318 Assert.AreEqual (null, c ["P2"], "#G13");
319 Assert.AreEqual (null, c ["p3"], "#G14");
320 Assert.AreEqual (null, c ["p"], "#G15");
324 public void ContainsKeyTest ()
327 StatusBar bar = new StatusBar ();
328 StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
330 StatusBarPanel panel1 = new StatusBarPanel ();
331 StatusBarPanel panel2 = new StatusBarPanel ();
332 StatusBarPanel panel3 = new StatusBarPanel ();
333 StatusBarPanel panel4 = new StatusBarPanel ();
334 StatusBarPanel panel5 = new StatusBarPanel ();
343 c.AddRange (new StatusBarPanel [] {panel1, panel2, panel3, panel4, panel5});
345 Assert.AreEqual (true, c.ContainsKey ("p1"), "#1");
346 Assert.AreEqual (true, c.ContainsKey ("P1"), "#2");
347 Assert.AreEqual (true, c.ContainsKey ("P2"), "#3");
348 Assert.AreEqual (false, c.ContainsKey (""), "#4");
349 Assert.AreEqual (false, c.ContainsKey (null), "#5");
350 Assert.AreEqual (false, c.ContainsKey ("p3"), "#6");
351 Assert.AreEqual (false, c.ContainsKey ("p"), "#7");
355 public void IndexByKeyTest ()
357 StatusBar bar = new StatusBar ();
358 StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
360 StatusBarPanel panel1 = new StatusBarPanel ();
361 StatusBarPanel panel2 = new StatusBarPanel ();
362 StatusBarPanel panel3 = new StatusBarPanel ();
363 StatusBarPanel panel4 = new StatusBarPanel ();
364 StatusBarPanel panel5 = new StatusBarPanel ();
373 c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
375 Assert.AreEqual (-1, c.IndexOfKey (""), "#1");
376 Assert.AreEqual (-1, c.IndexOfKey (null), "#2");
377 Assert.AreEqual (0, c.IndexOfKey ("p1"), "#3");
378 Assert.AreEqual (0, c.IndexOfKey ("P1"), "#4");
379 Assert.AreEqual (1, c.IndexOfKey ("p2"), "#5");
380 Assert.AreEqual (1, c.IndexOfKey ("P2"), "#6");
381 Assert.AreEqual (-1, c.IndexOfKey ("p3"), "#7");
382 Assert.AreEqual (-1, c.IndexOfKey ("p"), "#8");
386 public void PanelParentAlwaysSet()
388 // Ensure that the panel is always correctly initialized (Parent set)
389 // even when added to the collection even by the IList interface methods.
391 StatusBar.StatusBarPanelCollection coll;
392 coll = CreateStatusBarPanelCollection ();
396 Assert.IsNotNull (coll [0].Parent, "Add(String) null!");
398 sbp = new StatusBarPanel ();
399 Assert.IsNull (sbp.Parent, "checking test precondition that Parent is null initially");
401 Assert.IsNotNull (sbp.Parent, "Add(StatusBarPanel) null!");
403 sbp = new StatusBarPanel ();
404 coll.Insert (1, sbp);
405 Assert.IsNotNull (sbp.Parent, "Insert(int, StatusBarPanel) null!");
407 sbp = new StatusBarPanel ();
409 Assert.IsNotNull (sbp.Parent, "this[int] null!");
412 sbp = new StatusBarPanel ();
413 ((IList)coll).Add (sbp);
414 Assert.IsNotNull (sbp.Parent, "IList.Add(object) null!");
416 sbp = new StatusBarPanel ();
417 ((IList)coll).Insert (2, sbp);
418 Assert.IsNotNull (sbp.Parent, "IList.Insert(int, object) null!");
420 sbp = new StatusBarPanel ();
421 ((IList)coll)[0] = sbp;
422 Assert.IsNotNull (sbp.Parent, "IList.this[int] null!");
426 public void Interface_Misc()
428 // Test other interface methods.
430 StatusBar.StatusBarPanelCollection coll;
431 // From bug XXXXXX -- Ensure that the internal list is initialized when
432 // calling an interface method first.
433 coll = CreateStatusBarPanelCollection ();
434 object[] arr = new object[coll.Count];
435 ((ICollection)coll).CopyTo (arr, 0);
436 coll = CreateStatusBarPanelCollection ();
437 ((IList)coll).Add (new StatusBarPanel ());
439 // Check what happens when a non-StatusBarPanel type is passed into the
440 // interface methods.
441 object tmp = new Version (1, 2, 3, 4);
443 ((IList)coll) [0] = tmp;
444 } catch (ArgumentException) { }
446 ((IList)coll).Add (tmp);
447 } catch (ArgumentException) { }
448 Assert.IsFalse (((IList)coll).Contains (tmp), "Contains(tmp)");
449 Assert.AreEqual (-1, ((IList)coll).IndexOf (tmp), "IndexOf (tmp)");
451 ((IList)coll).Insert (0, tmp);
452 } catch (ArgumentException) { }
453 ((IList)coll).Remove (tmp);
455 // Note that adding null fails, thus the try cast to
456 // StatusBarPanel means that the Contains/IndexOf/Remove
457 // methods will fail as shown above when passed another type.
459 coll.Add ((StatusBarPanel)null);
460 } catch (ArgumentNullException) { }
463 StatusBar.StatusBarPanelCollection CreateStatusBarPanelCollection()
465 return new StatusBar.StatusBarPanelCollection (new StatusBar ());
469 public void Interface_AddRemoveTest()
471 // Copy of test, for the equivalent ICollection/IList members.
473 StatusBar bar = new StatusBar ();
474 StatusBar.StatusBarPanelCollection collectionX = new StatusBar.StatusBarPanelCollection (bar);
475 IList collection = collectionX;
477 StatusBarPanel panel = new StatusBarPanel ();
478 StatusBarPanel panel2 = new StatusBarPanel ();
480 collection.Add (panel);
481 Assert.AreEqual (1, collection.Count, "#1");
483 collection.Remove (panel);
484 Assert.AreEqual (0, collection.Count, "#2");
486 collection.Add (panel);
487 collection.RemoveAt (0);
488 Assert.AreEqual (0, collection.Count, "#3");
490 collection.Add (panel);
491 Assert.AreEqual (0, collection.IndexOf (panel), "#4");
492 Assert.AreEqual (-1, collection.IndexOf (panel2), "#5");
494 collection.Add (panel2);
495 Assert.AreEqual (1, collection.IndexOf (panel2), "#6");
497 collection.RemoveAt (0);
498 Assert.AreEqual (0, collection.IndexOf (panel2), "#7");
499 Assert.AreEqual (1, collection.Count, "#8");
501 Assert.AreEqual (false, collection.Contains (panel), "#9");
502 Assert.AreEqual (true, collection.Contains (panel2), "#10");
509 StatusBar bar = new StatusBar ();
510 StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
512 StatusBarPanel panel = new StatusBarPanel ();
513 StatusBarPanel panel2 = new StatusBarPanel ();
515 collection.Add (panel);
516 Assert.AreEqual (1, collection.Count, "#1");
518 collection.Insert (0, panel);
519 Assert.AreEqual (2, collection.Count, "#2");
523 public void Interface_Insert()
525 // Copy of test, for the equivalent ICollection/IList members.
527 StatusBar bar = new StatusBar ();
528 StatusBar.StatusBarPanelCollection collectionX = new StatusBar.StatusBarPanelCollection (bar);
529 IList collection = collectionX;
531 StatusBarPanel panel = new StatusBarPanel ();
532 StatusBarPanel panel2 = new StatusBarPanel ();
534 collection.Add (panel);
535 Assert.AreEqual (1, collection.Count, "#1");
537 collection.Insert (0, panel);
538 Assert.AreEqual (2, collection.Count, "#2");