Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

378 lines
11 KiB
C#

//
// ToolStripComboBoxTests.cs
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// Copyright (c) 2006 Jonathan Pobst
//
// Authors:
// Jonathan Pobst (monkey@jpobst.com)
//
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using System.Drawing;
using System.Windows.Forms;
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
public class ToolStripComboBoxTests : TestHelper
{
[Test]
public void Constructor ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
//Assert.AreEqual ("System.Windows.Forms.AutoCompleteStringCollection", tsi.AutoCompleteCustomSource.GetType ().ToString (), "A1");
//Assert.AreEqual (AutoCompleteMode.None, tsi.AutoCompleteMode, "A2");
//Assert.AreEqual (AutoCompleteSource.None, tsi.AutoCompleteSource, "A3");
Assert.AreEqual ("System.Windows.Forms.ToolStripComboBox+ToolStripComboBoxControl", tsi.ComboBox.GetType ().ToString (), "A4");
//Assert.AreEqual (106, tsi.DropDownHeight, "A5");
Assert.AreEqual (ComboBoxStyle.DropDown, tsi.DropDownStyle, "A6");
Assert.AreEqual (121, tsi.DropDownWidth, "A7");
Assert.AreEqual (false, tsi.DroppedDown, "A8");
Assert.AreEqual (FlatStyle.Popup, tsi.FlatStyle, "A9");
Assert.AreEqual (true, tsi.IntegralHeight, "A10");
Assert.AreEqual ("System.Windows.Forms.ComboBox+ObjectCollection", tsi.Items.ToString (), "A11");
Assert.AreEqual (8, tsi.MaxDropDownItems, "A12");
Assert.AreEqual (0, tsi.MaxLength, "A13");
Assert.AreEqual (-1, tsi.SelectedIndex, "A14");
Assert.AreEqual (null, tsi.SelectedItem, "A15");
Assert.AreEqual (string.Empty, tsi.SelectedText, "A16");
Assert.AreEqual (0, tsi.SelectionLength, "A17");
Assert.AreEqual (0, tsi.SelectionStart, "A18");
Assert.AreEqual (false, tsi.Sorted, "A19");
tsi = new ToolStripComboBox ("Bob");
Assert.AreEqual ("Bob", tsi.Name, "A20");
Assert.AreEqual (string.Empty, tsi.Control.Name, "A21");
}
[Test]
[ExpectedException (typeof (NotSupportedException))]
public void ConstructorNSE ()
{
new ToolStripComboBox (new ComboBox ());
}
[Test]
public void ProtectedProperties ()
{
ExposeProtectedProperties epp = new ExposeProtectedProperties ();
Assert.AreEqual (new Padding (1, 0, 1, 0), epp.DefaultMargin, "C1");
Assert.AreEqual (new Size (100, 22), epp.DefaultSize, "C2");
}
//[Test]
//public void PropertyAutoCompleteCustomSource ()
//{
// ToolStripComboBox tsi = new ToolStripComboBox ();
// EventWatcher ew = new EventWatcher (tsi);
// AutoCompleteStringCollection acsc = new AutoCompleteStringCollection ();
// acsc.AddRange (new string[] { "Apple", "Banana" });
// tsi.AutoCompleteCustomSource = acsc;
// Assert.AreSame (acsc, tsi.AutoCompleteCustomSource, "B1");
// Assert.AreEqual (string.Empty, ew.ToString (), "B2");
// ew.Clear ();
// tsi.AutoCompleteCustomSource = acsc;
// Assert.AreEqual (string.Empty, ew.ToString (), "B3");
//}
[Test]
public void PropertyDropDownHeight ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.DropDownHeight = 42;
Assert.AreEqual (42, tsi.DropDownHeight, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.DropDownHeight = 42;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyDropDownStyle ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.DropDownStyle = ComboBoxStyle.Simple;
Assert.AreEqual (ComboBoxStyle.Simple, tsi.DropDownStyle, "B1");
Assert.AreEqual ("DropDownStyleChanged", ew.ToString (), "B2");
ew.Clear ();
tsi.DropDownStyle = ComboBoxStyle.Simple;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyDropDownWidth ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.DropDownWidth = 42;
Assert.AreEqual (42, tsi.DropDownWidth, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.DropDownWidth = 42;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyDroppedDown ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.DroppedDown = true;
Assert.AreEqual (true, tsi.DroppedDown, "B1");
Assert.AreEqual ("DropDown", ew.ToString (), "B2");
ew.Clear ();
tsi.DroppedDown = true;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyFlatStyle ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.FlatStyle = FlatStyle.System;
Assert.AreEqual (FlatStyle.System, tsi.FlatStyle, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.FlatStyle = FlatStyle.System;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyIntegralHeight ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.IntegralHeight = false;
Assert.AreEqual (false, tsi.IntegralHeight, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.IntegralHeight = false;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyMaxDropDownItems ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.MaxDropDownItems = 12;
Assert.AreEqual (12, tsi.MaxDropDownItems, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.MaxDropDownItems = 12;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertyMaxLength ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.MaxLength = 42;
Assert.AreEqual (42, tsi.MaxLength, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.MaxLength = 42;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertySelectedIndex ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.Items.Add ("A");
tsi.Items.Add ("B");
tsi.SelectedIndex = 1;
Assert.AreEqual (1, tsi.SelectedIndex, "B1");
Assert.AreEqual ("SelectedIndexChanged", ew.ToString (), "B2");
ew.Clear ();
tsi.SelectedIndex = 1;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
[ExpectedException (typeof (ArgumentOutOfRangeException))]
public void PropertySelectedIndexAOORE ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
tsi.SelectedIndex = 42;
}
[Test]
public void PropertySelectedItem ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.Items.Add ("A");
tsi.Items.Add ("B");
tsi.SelectedItem = "B";
Assert.AreEqual ("B", tsi.SelectedItem, "B1");
Assert.AreEqual ("SelectedIndexChanged", ew.ToString (), "B2");
ew.Clear ();
tsi.SelectedItem = "B";
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertySelectedItem2 ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.SelectedItem = "B";
Assert.AreEqual (null, tsi.SelectedItem, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.SelectedItem = "B";
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
[Ignore ("Need TextUpdate event implemented in 2.0 ComboBox")]
public void PropertySelectedText ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.SelectedText = "Hi";
Assert.AreEqual (string.Empty, tsi.SelectedText, "B1");
Assert.AreEqual ("TextUpdate", ew.ToString (), "B2");
ew.Clear ();
tsi.SelectedText = string.Empty;
Assert.AreEqual ("TextUpdate", ew.ToString (), "B3");
}
[Test]
public void PropertySelectionLength ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.SelectionLength = 42;
Assert.AreEqual (0, tsi.SelectionLength, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.SelectionLength = 42;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertySelectionStart ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.SelectionStart = 42;
Assert.AreEqual (0, tsi.SelectionStart, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.SelectionStart = 42;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
[Test]
public void PropertySorted ()
{
ToolStripComboBox tsi = new ToolStripComboBox ();
EventWatcher ew = new EventWatcher (tsi);
tsi.Sorted = true;
Assert.AreEqual (true, tsi.Sorted, "B1");
Assert.AreEqual (string.Empty, ew.ToString (), "B2");
ew.Clear ();
tsi.Sorted = true;
Assert.AreEqual (string.Empty, ew.ToString (), "B3");
}
private class EventWatcher
{
private string events = string.Empty;
public EventWatcher (ToolStripComboBox tsi)
{
tsi.DropDown += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DropDown;"); });
tsi.DropDownClosed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DropDownClosed;"); });
tsi.DropDownStyleChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DropDownStyleChanged;"); });
tsi.SelectedIndexChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("SelectedIndexChanged;"); });
tsi.TextUpdate += new EventHandler (delegate (Object obj, EventArgs e) { events += ("TextUpdate;"); });
}
public override string ToString ()
{
return events.TrimEnd (';');
}
public void Clear ()
{
events = string.Empty;
}
}
private class ExposeProtectedProperties : ToolStripComboBox
{
public ExposeProtectedProperties () : base () {}
public new Padding DefaultMargin { get { return base.DefaultMargin; } }
public new Size DefaultSize { get { return base.DefaultSize; } }
}
}
}