Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

545 lines
17 KiB
C#

//
// StatusBarTest.cs: Test cases for StatusBar.
//
// Author:
// Ritvik Mayank (mritvik@novell.com)
//
// (C) 2005 Novell, Inc. (http://www.novell.com)
//
using System;
using NUnit.Framework;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.Remoting;
using System.Collections;
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
public class StatusBarTest : TestHelper
{
[Test]
public void StatusBarTextTest ()
{
string a = new string ('a', 127);
string ab = a + "b";
StatusBar sb = new StatusBar();
sb.Text = ab;
Assert.AreEqual (ab, sb.Text, "#01");
}
[Test]
public void StatusBarShowPanelsTest ()
{
StatusBar sb = new StatusBar ();
sb.ShowPanels = true;
sb.Text = "Test";
Assert.AreEqual ("Test", sb.Text, "#01");
}
[Test]
public void StatusBarPropertyTest ()
{
Form myform = new Form ();
myform.ShowInTaskbar = false;
StatusBar mysbar = new StatusBar ();
StatusBarPanel sbarpanel1 = new StatusBarPanel ();
StatusBarPanel sbarpanel2 = new StatusBarPanel ();
sbarpanel1.Text = "Status Quo";
sbarpanel2.Text = "State 2";
mysbar.Panels.Add (sbarpanel1);
mysbar.Panels.Add (sbarpanel2);
myform.Controls.Add (mysbar);
// B
Assert.AreEqual ("Control", mysbar.BackColor.Name, "#B1");
// D
Assert.AreEqual (DockStyle.Bottom, mysbar.Dock, "#D1");
// F
Assert.AreEqual ("ControlText", mysbar.ForeColor.Name, "#F2");
// P
Assert.AreEqual (sbarpanel1.Text, mysbar.Panels [0].Text , "#P1");
// S
Assert.AreEqual (false, mysbar.ShowPanels, "#S1");
Assert.AreEqual (true, mysbar.SizingGrip, "#S2");
Assert.AreEqual (null, mysbar.Site, "#S3");
// T
Assert.AreEqual ("", mysbar.Text, "#T1");
mysbar.Text = "MONO STATUSBAR";
Assert.AreEqual ("MONO STATUSBAR", mysbar.Text, "#T2");
myform.Dispose ();
}
[Test]
public void ToStringMethodTest ()
{
StatusBar mysbar = new StatusBar ();
mysbar.Text = "New StatusBar";
Assert.AreEqual ("System.Windows.Forms.StatusBar, Panels.Count: 0", mysbar.ToString (), "#T3");
}
//[MonoTODO ("Test case for DrawItem")]
//[MonoTODO ("Test case for PanelClick")]
}
[TestFixture]
public class StatusBarPanelCollectionTest : TestHelper
{
[Test]
public void Test ()
{
}
[Test]
public void DefaultPropertiesTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
Assert.AreEqual (0, collection.Count, "C1");
Assert.AreEqual (false, collection.IsReadOnly, "I1");
}
[Test]
public void AddRemoveTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
collection.Add (panel);
Assert.AreEqual (1, collection.Count, "#1");
collection.Remove (panel);
Assert.AreEqual (0, collection.Count, "#2");
collection.Add (panel);
collection.RemoveAt (0);
Assert.AreEqual (0, collection.Count, "#3");
collection.Add (panel);
Assert.AreEqual (0, collection.IndexOf (panel), "#4");
Assert.AreEqual (-1, collection.IndexOf (panel2), "#5");
collection.Add (panel2);
Assert.AreEqual (1, collection.IndexOf (panel2), "#6");
collection.RemoveAt (0);
Assert.AreEqual (0, collection.IndexOf (panel2), "#7");
Assert.AreEqual (1, collection.Count, "#8");
Assert.AreEqual (false, collection.Contains (panel), "#9");
Assert.AreEqual (true, collection.Contains (panel2), "#10");
}
#if NET_2_0
[Test]
public void ItemByKeyTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel1 = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
StatusBarPanel panel3 = new StatusBarPanel ();
StatusBarPanel panel4 = new StatusBarPanel ();
StatusBarPanel panel5 = new StatusBarPanel ();
panel1.Name = "p1";
panel2.Name = "p2";
panel3.Name = "P2";
panel4.Name = "";
panel5.Name = null;
c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
Assert.AreEqual (null, c [""], "#1");
Assert.AreEqual (null, c [null], "#2");
Assert.AreEqual (panel1, c ["p1"], "#3");
Assert.AreEqual (panel1, c ["P1"], "#4");
Assert.AreEqual (panel2, c ["p2"], "#5");
Assert.AreEqual (panel2, c ["P2"], "#6");
Assert.AreEqual (null, c ["p3"], "#7");
Assert.AreEqual (null, c ["p"], "#8");
}
[Test]
public void RemoveByKeyTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel1 = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
StatusBarPanel panel3 = new StatusBarPanel ();
StatusBarPanel panel4 = new StatusBarPanel ();
StatusBarPanel panel5 = new StatusBarPanel ();
panel1.Name = "p1";
panel2.Name = "p2";
panel3.Name = "P2";
panel4.Name = "";
panel5.Name = null;
c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
Assert.AreEqual (true, c.ContainsKey ("p1"), "#A1");
Assert.AreEqual (true, c.ContainsKey ("P1"), "#A2");
Assert.AreEqual (true, c.ContainsKey ("P2"), "#A3");
Assert.AreEqual (false, c.ContainsKey (""), "#A4");
Assert.AreEqual (false, c.ContainsKey (null), "#A5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#A6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#A7");
Assert.AreEqual (null, c [""], "#A8");
Assert.AreEqual (null, c [null], "#A9");
Assert.AreEqual (panel1, c ["p1"], "#A10");
Assert.AreEqual (panel1, c ["P1"], "#A11");
Assert.AreEqual (panel2, c ["p2"], "#A12");
Assert.AreEqual (panel2, c ["P2"], "#A13");
Assert.AreEqual (null, c ["p3"], "#A14");
Assert.AreEqual (null, c ["p"], "#A15");
c.RemoveByKey ("P2");
Assert.AreEqual (true, c.ContainsKey ("p1"), "#B1");
Assert.AreEqual (true, c.ContainsKey ("P1"), "#B2");
Assert.AreEqual (true, c.ContainsKey ("P2"), "#B3");
Assert.AreEqual (false, c.ContainsKey (""), "#B4");
Assert.AreEqual (false, c.ContainsKey (null), "#B5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#B6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#B7");
Assert.AreEqual (null, c [""], "#B8");
Assert.AreEqual (null, c [null], "#B9");
Assert.AreEqual (panel1, c ["p1"], "#B10");
Assert.AreEqual (panel1, c ["P1"], "#B11");
Assert.AreEqual (panel3, c ["p2"], "#B12");
Assert.AreEqual (panel3, c ["P2"], "#B13");
Assert.AreEqual (null, c ["p3"], "#B14");
Assert.AreEqual (null, c ["p"], "#B15");
c.RemoveByKey ("p2");
Assert.AreEqual (true, c.ContainsKey ("p1"), "#C1");
Assert.AreEqual (true, c.ContainsKey ("P1"), "#C2");
Assert.AreEqual (false, c.ContainsKey ("P2"), "#C3");
Assert.AreEqual (false, c.ContainsKey (""), "#C4");
Assert.AreEqual (false, c.ContainsKey (null), "#C5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#C6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#C7");
Assert.AreEqual (null, c [""], "#C8");
Assert.AreEqual (null, c [null], "#C9");
Assert.AreEqual (panel1, c ["p1"], "#C10");
Assert.AreEqual (panel1, c ["P1"], "#C11");
Assert.AreEqual (null, c ["p2"], "#C12");
Assert.AreEqual (null, c ["P2"], "#C13");
Assert.AreEqual (null, c ["p3"], "#C14");
Assert.AreEqual (null, c ["p"], "#C15");
c.RemoveByKey ("p2");
Assert.AreEqual (true, c.ContainsKey ("p1"), "#D1");
Assert.AreEqual (true, c.ContainsKey ("P1"), "#D2");
Assert.AreEqual (false, c.ContainsKey ("P2"), "#D3");
Assert.AreEqual (false, c.ContainsKey (""), "#D4");
Assert.AreEqual (false, c.ContainsKey (null), "#D5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#D6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#D7");
Assert.AreEqual (null, c [""], "#D8");
Assert.AreEqual (null, c [null], "#D9");
Assert.AreEqual (panel1, c ["p1"], "#D10");
Assert.AreEqual (panel1, c ["P1"], "#D11");
Assert.AreEqual (null, c ["p2"], "#D12");
Assert.AreEqual (null, c ["P2"], "#D13");
Assert.AreEqual (null, c ["p3"], "#D14");
Assert.AreEqual (null, c ["p"], "#D15");
c.RemoveByKey ("P1");
Assert.AreEqual (false, c.ContainsKey ("p1"), "#E1");
Assert.AreEqual (false, c.ContainsKey ("P1"), "#E2");
Assert.AreEqual (false, c.ContainsKey ("P2"), "#E3");
Assert.AreEqual (false, c.ContainsKey (""), "#E4");
Assert.AreEqual (false, c.ContainsKey (null), "#E5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#E6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#E7");
Assert.AreEqual (null, c [""], "#E8");
Assert.AreEqual (null, c [null], "#E9");
Assert.AreEqual (null, c ["p1"], "#E10");
Assert.AreEqual (null, c ["P1"], "#E11");
Assert.AreEqual (null, c ["p2"], "#E12");
Assert.AreEqual (null, c ["P2"], "#E13");
Assert.AreEqual (null, c ["p3"], "#E14");
Assert.AreEqual (null, c ["p"], "#E15");
c.RemoveByKey ("");
Assert.AreEqual (false, c.ContainsKey ("p1"), "#F1");
Assert.AreEqual (false, c.ContainsKey ("P1"), "#F2");
Assert.AreEqual (false, c.ContainsKey ("P2"), "#F3");
Assert.AreEqual (false, c.ContainsKey (""), "#F4");
Assert.AreEqual (false, c.ContainsKey (null), "#F5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#F6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#F7");
Assert.AreEqual (null, c [""], "#F8");
Assert.AreEqual (null, c [null], "#F9");
Assert.AreEqual (null, c ["p1"], "#F10");
Assert.AreEqual (null, c ["P1"], "#F11");
Assert.AreEqual (null, c ["p2"], "#F12");
Assert.AreEqual (null, c ["P2"], "#F13");
Assert.AreEqual (null, c ["p3"], "#F14");
Assert.AreEqual (null, c ["p"], "#F15");
c.RemoveByKey (null);
Assert.AreEqual (false, c.ContainsKey ("p1"), "#G1");
Assert.AreEqual (false, c.ContainsKey ("P1"), "#G2");
Assert.AreEqual (false, c.ContainsKey ("P2"), "#G3");
Assert.AreEqual (false, c.ContainsKey (""), "#G4");
Assert.AreEqual (false, c.ContainsKey (null), "#G5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#G6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#G7");
Assert.AreEqual (null, c [""], "#G8");
Assert.AreEqual (null, c [null], "#G9");
Assert.AreEqual (null, c ["p1"], "#G10");
Assert.AreEqual (null, c ["P1"], "#G11");
Assert.AreEqual (null, c ["p2"], "#G12");
Assert.AreEqual (null, c ["P2"], "#G13");
Assert.AreEqual (null, c ["p3"], "#G14");
Assert.AreEqual (null, c ["p"], "#G15");
}
public void ContainsKeyTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel1 = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
StatusBarPanel panel3 = new StatusBarPanel ();
StatusBarPanel panel4 = new StatusBarPanel ();
StatusBarPanel panel5 = new StatusBarPanel ();
panel1.Name = "p1";
panel2.Name = "p2";
panel3.Name = "P2";
panel4.Name = "";
panel5.Name = null;
c.AddRange (new StatusBarPanel [] {panel1, panel2, panel3, panel4, panel5});
Assert.AreEqual (true, c.ContainsKey ("p1"), "#1");
Assert.AreEqual (true, c.ContainsKey ("P1"), "#2");
Assert.AreEqual (true, c.ContainsKey ("P2"), "#3");
Assert.AreEqual (false, c.ContainsKey (""), "#4");
Assert.AreEqual (false, c.ContainsKey (null), "#5");
Assert.AreEqual (false, c.ContainsKey ("p3"), "#6");
Assert.AreEqual (false, c.ContainsKey ("p"), "#7");
}
public void IndexByKeyTest ()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection c = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel1 = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
StatusBarPanel panel3 = new StatusBarPanel ();
StatusBarPanel panel4 = new StatusBarPanel ();
StatusBarPanel panel5 = new StatusBarPanel ();
panel1.Name = "p1";
panel2.Name = "p2";
panel3.Name = "P2";
panel4.Name = "";
panel5.Name = null;
c.AddRange (new StatusBarPanel [] { panel1, panel2, panel3, panel4, panel5 });
Assert.AreEqual (-1, c.IndexOfKey (""), "#1");
Assert.AreEqual (-1, c.IndexOfKey (null), "#2");
Assert.AreEqual (0, c.IndexOfKey ("p1"), "#3");
Assert.AreEqual (0, c.IndexOfKey ("P1"), "#4");
Assert.AreEqual (1, c.IndexOfKey ("p2"), "#5");
Assert.AreEqual (1, c.IndexOfKey ("P2"), "#6");
Assert.AreEqual (-1, c.IndexOfKey ("p3"), "#7");
Assert.AreEqual (-1, c.IndexOfKey ("p"), "#8");
}
#endif
[Test]
public void PanelParentAlwaysSet()
{
// Ensure that the panel is always correctly initialized (Parent set)
// even when added to the collection even by the IList interface methods.
//
StatusBar.StatusBarPanelCollection coll;
coll = CreateStatusBarPanelCollection ();
StatusBarPanel sbp;
//
coll.Add ("panel1");
Assert.IsNotNull (coll [0].Parent, "Add(String) null!");
//
sbp = new StatusBarPanel ();
Assert.IsNull (sbp.Parent, "checking test precondition that Parent is null initially");
coll.Add (sbp);
Assert.IsNotNull (sbp.Parent, "Add(StatusBarPanel) null!");
//
sbp = new StatusBarPanel ();
coll.Insert (1, sbp);
Assert.IsNotNull (sbp.Parent, "Insert(int, StatusBarPanel) null!");
//
sbp = new StatusBarPanel ();
coll[0] = sbp;
Assert.IsNotNull (sbp.Parent, "this[int] null!");
//
// IList interface
sbp = new StatusBarPanel ();
((IList)coll).Add (sbp);
Assert.IsNotNull (sbp.Parent, "IList.Add(object) null!");
//
sbp = new StatusBarPanel ();
((IList)coll).Insert (2, sbp);
Assert.IsNotNull (sbp.Parent, "IList.Insert(int, object) null!");
//
sbp = new StatusBarPanel ();
((IList)coll)[0] = sbp;
Assert.IsNotNull (sbp.Parent, "IList.this[int] null!");
}
[Test]
public void Interface_Misc()
{
// Test other interface methods.
//
StatusBar.StatusBarPanelCollection coll;
// From bug XXXXXX -- Ensure that the internal list is initialized when
// calling an interface method first.
coll = CreateStatusBarPanelCollection ();
object[] arr = new object[coll.Count];
((ICollection)coll).CopyTo (arr, 0);
coll = CreateStatusBarPanelCollection ();
((IList)coll).Add (new StatusBarPanel ());
//
// Check what happens when a non-StatusBarPanel type is passed into the
// interface methods.
object tmp = new Version (1, 2, 3, 4);
try {
((IList)coll) [0] = tmp;
} catch (ArgumentException) { }
try {
((IList)coll).Add (tmp);
} catch (ArgumentException) { }
Assert.IsFalse (((IList)coll).Contains (tmp), "Contains(tmp)");
Assert.AreEqual (-1, ((IList)coll).IndexOf (tmp), "IndexOf (tmp)");
try {
((IList)coll).Insert (0, tmp);
} catch (ArgumentException) { }
((IList)coll).Remove (tmp);
//
// Note that adding null fails, thus the try cast to
// StatusBarPanel means that the Contains/IndexOf/Remove
// methods will fail as shown above when passed another type.
try {
coll.Add ((StatusBarPanel)null);
} catch (ArgumentNullException) { }
}
StatusBar.StatusBarPanelCollection CreateStatusBarPanelCollection()
{
return new StatusBar.StatusBarPanelCollection (new StatusBar ());
}
[Test]
public void Interface_AddRemoveTest()
{
// Copy of test, for the equivalent ICollection/IList members.
//
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection collectionX = new StatusBar.StatusBarPanelCollection (bar);
IList collection = collectionX;
StatusBarPanel panel = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
collection.Add (panel);
Assert.AreEqual (1, collection.Count, "#1");
collection.Remove (panel);
Assert.AreEqual (0, collection.Count, "#2");
collection.Add (panel);
collection.RemoveAt (0);
Assert.AreEqual (0, collection.Count, "#3");
collection.Add (panel);
Assert.AreEqual (0, collection.IndexOf (panel), "#4");
Assert.AreEqual (-1, collection.IndexOf (panel2), "#5");
collection.Add (panel2);
Assert.AreEqual (1, collection.IndexOf (panel2), "#6");
collection.RemoveAt (0);
Assert.AreEqual (0, collection.IndexOf (panel2), "#7");
Assert.AreEqual (1, collection.Count, "#8");
Assert.AreEqual (false, collection.Contains (panel), "#9");
Assert.AreEqual (true, collection.Contains (panel2), "#10");
}
[Test]
public void Insert()
{
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection collection = new StatusBar.StatusBarPanelCollection (bar);
StatusBarPanel panel = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
collection.Add (panel);
Assert.AreEqual (1, collection.Count, "#1");
collection.Insert (0, panel);
Assert.AreEqual (2, collection.Count, "#2");
}
[Test]
public void Interface_Insert()
{
// Copy of test, for the equivalent ICollection/IList members.
//
StatusBar bar = new StatusBar ();
StatusBar.StatusBarPanelCollection collectionX = new StatusBar.StatusBarPanelCollection (bar);
IList collection = collectionX;
StatusBarPanel panel = new StatusBarPanel ();
StatusBarPanel panel2 = new StatusBarPanel ();
collection.Add (panel);
Assert.AreEqual (1, collection.Count, "#1");
collection.Insert (0, panel);
Assert.AreEqual (2, collection.Count, "#2");
}
}
}