6992685b86
Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
1035 lines
33 KiB
C#
1035 lines
33 KiB
C#
//
|
|
//
|
|
//
|
|
// Authors:
|
|
// Alexander Olk (alex.olk@googlemail.com)
|
|
// Gert Driesen (drieseng@users.sourceforge.net)
|
|
//
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.Windows.Forms;
|
|
|
|
using NUnit.Framework;
|
|
|
|
namespace MonoTests.System.Windows.Forms
|
|
{
|
|
[TestFixture]
|
|
public class UpDownTest : TestHelper
|
|
{
|
|
[SetUp]
|
|
protected override void SetUp () {
|
|
Reset ();
|
|
base.SetUp ();
|
|
}
|
|
|
|
private void Reset ()
|
|
{
|
|
selected_item_changed = 0;
|
|
text_changed = 0;
|
|
value_changed = 0;
|
|
}
|
|
|
|
[Test]
|
|
public void UpDownActiveControlTest ()
|
|
{
|
|
NumericUpDown n1 = new NumericUpDown ();
|
|
Assert.IsNull (n1.ActiveControl, "1");
|
|
}
|
|
|
|
[Test]
|
|
public void UpDownBasePropTest ()
|
|
{
|
|
NumericUpDown n1 = new NumericUpDown ();
|
|
|
|
Assert.AreEqual (BorderStyle.Fixed3D, n1.BorderStyle, "#1");
|
|
Assert.AreEqual (true, n1.InterceptArrowKeys, "#2");
|
|
Assert.AreEqual (LeftRightAlignment.Right, n1.UpDownAlign, "#3");
|
|
}
|
|
|
|
[Test]
|
|
public void ToStringTest ()
|
|
{
|
|
NumericUpDown n1 = new NumericUpDown ();
|
|
|
|
Assert.AreEqual ("System.Windows.Forms.NumericUpDown, Minimum = 0, Maximum = 100", n1.ToString (), "1");
|
|
|
|
n1.Minimum = 0.33m;
|
|
n1.Maximum = 100.33m;
|
|
Assert.AreEqual (string.Format (CultureInfo.CurrentCulture,
|
|
"System.Windows.Forms.NumericUpDown, Minimum = {0}, Maximum = {1}",
|
|
0.33, 100.33), n1.ToString (), "2");
|
|
}
|
|
|
|
[Test] // bug #80620
|
|
public void NumericUpDownClientRectangle_Borders ()
|
|
{
|
|
NumericUpDown nud = new NumericUpDown ();
|
|
nud.CreateControl ();
|
|
Assert.AreEqual (nud.ClientRectangle, new NumericUpDown ().ClientRectangle);
|
|
}
|
|
|
|
[Test]
|
|
public void NumericUpDownStandardPropTest ()
|
|
{
|
|
NumericUpDown n1 = new NumericUpDown ();
|
|
|
|
Assert.AreEqual (100, n1.Maximum, "#4");
|
|
Assert.AreEqual (0, n1.Minimum, "#5");
|
|
Assert.AreEqual (0, n1.Value, "#6");
|
|
Assert.AreEqual (0, n1.DecimalPlaces, "#7");
|
|
Assert.IsFalse (n1.Hexadecimal, "#8");
|
|
Assert.IsFalse (n1.ThousandsSeparator, "#9");
|
|
Assert.AreEqual (1, n1.Increment, "#10");
|
|
}
|
|
|
|
[Test]
|
|
public void NumericUpDownEnhancedPropTest ()
|
|
{
|
|
NumericUpDown n1 = new NumericUpDown ();
|
|
|
|
n1.Minimum = 200;
|
|
Assert.AreEqual (200, n1.Maximum, "#11");
|
|
Assert.AreEqual (200, n1.Value, "#12");
|
|
|
|
n1.Minimum = 100;
|
|
n1.Maximum = 50;
|
|
Assert.AreEqual (50, n1.Minimum, "#13");
|
|
|
|
n1.Minimum = 0;
|
|
n1.Maximum = 100;
|
|
n1.Value = 90;
|
|
n1.Maximum = 50;
|
|
Assert.AreEqual (50, n1.Value, "#14");
|
|
|
|
n1.Minimum = 0;
|
|
n1.Maximum = 100;
|
|
n1.Value = 90;
|
|
n1.DownButton ();
|
|
Assert.AreEqual (89, n1.Value, "#15");
|
|
|
|
n1.UpButton ();
|
|
Assert.AreEqual (90, n1.Value, "#16");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDownEditValidateTest ()
|
|
{
|
|
NumericNew nn = new NumericNew ();
|
|
Assert.IsTrue (nn.update_edit_text_called, "#17");
|
|
|
|
Assert.IsFalse (nn.user_edit, "#18");
|
|
|
|
nn.Reset ();
|
|
nn.user_edit = true;
|
|
nn.Text = "10";
|
|
Assert.IsTrue (nn.validate_edit_text_called, "#19");
|
|
Assert.IsTrue (nn.update_edit_text_called, "#20");
|
|
|
|
nn.Reset ();
|
|
nn.user_edit = false;
|
|
nn.Text = "11";
|
|
Assert.IsTrue (nn.validate_edit_text_called, "#21");
|
|
Assert.IsTrue (nn.update_edit_text_called, "#22");
|
|
|
|
nn.DownButton ();
|
|
Assert.AreEqual (10, nn.Value, "#23");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_BeginInit ()
|
|
{
|
|
NumericNew nud = new NumericNew ();
|
|
nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
|
|
nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
|
|
Assert.AreEqual (0, nud.Value, "#A4");
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A5");
|
|
Assert.AreEqual (0, value_changed, "#A6");
|
|
Assert.AreEqual (0, text_changed, "#A7");
|
|
|
|
nud.BeginInit ();
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#B1");
|
|
nud.Value = 10;
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#B2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#B3");
|
|
Assert.AreEqual ("0", nud.Text, "#B4");
|
|
Assert.AreEqual (10, nud.Value, "#B5");
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#B6");
|
|
Assert.AreEqual (1, value_changed, "#B7");
|
|
Assert.AreEqual (0, text_changed, "#B8");
|
|
nud.EndInit ();
|
|
Assert.AreEqual (4, nud.CallStack.Count, "#B9");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B10");
|
|
Assert.AreEqual (1, text_changed, "#B11");
|
|
Assert.AreEqual ("10", nud.Text, "#B12");
|
|
Assert.AreEqual (10, nud.Value, "#B13");
|
|
Assert.AreEqual (4, nud.CallStack.Count, "#B14");
|
|
Assert.AreEqual (1, value_changed, "#B15");
|
|
Assert.AreEqual (1, text_changed, "#B16");
|
|
|
|
// multiple calls to BeginInit are undone by a single EndInit call
|
|
nud.BeginInit ();
|
|
nud.BeginInit ();
|
|
Assert.AreEqual (4, nud.CallStack.Count, "#C1");
|
|
nud.Value = 20;
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#C2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C3");
|
|
Assert.AreEqual ("10", nud.Text, "#C4");
|
|
Assert.AreEqual (20, nud.Value, "#C5");
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#C6");
|
|
Assert.AreEqual (2, value_changed, "#C7");
|
|
Assert.AreEqual (1, text_changed, "#C8");
|
|
nud.EndInit ();
|
|
Assert.AreEqual (6, nud.CallStack.Count, "#C9");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#C10");
|
|
Assert.AreEqual (2, text_changed, "#C11");
|
|
Assert.AreEqual ("20", nud.Text, "#C12");
|
|
Assert.AreEqual (20, nud.Value, "#C13");
|
|
Assert.AreEqual (6, nud.CallStack.Count, "#C14");
|
|
Assert.AreEqual (2, value_changed, "#C15");
|
|
Assert.AreEqual (2, text_changed, "#C16");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_ChangingText ()
|
|
{
|
|
NumericNew nud = new NumericNew ();
|
|
nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
|
|
nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
|
|
Assert.IsFalse (nud.changing_text, "#A1");
|
|
Assert.IsFalse (nud.user_edit, "#A2");
|
|
Assert.AreEqual (0, text_changed, "#A3");
|
|
|
|
nud.Text = "1";
|
|
Assert.IsFalse (nud.changing_text, "#B1");
|
|
Assert.IsFalse (nud.user_edit, "#B2");
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#B3");
|
|
Assert.AreEqual (1, text_changed, "#B4");
|
|
|
|
nud.changing_text = true;
|
|
nud.Text = "2";
|
|
Assert.IsFalse (nud.changing_text, "#C1");
|
|
Assert.IsFalse (nud.user_edit, "#C2");
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#C3");
|
|
Assert.AreEqual (2, text_changed, "#C4");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_EndInit ()
|
|
{
|
|
NumericNew nud = new NumericNew ();
|
|
nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
|
|
nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
|
|
Assert.AreEqual (0, nud.Value, "#A4");
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A5");
|
|
Assert.AreEqual (0, value_changed, "#A6");
|
|
Assert.AreEqual (0, text_changed, "#A7");
|
|
|
|
// EndInit without corresponding BeginInit
|
|
nud.EndInit ();
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#B1");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#B2");
|
|
Assert.AreEqual (0, nud.Value, "#B3");
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#B4");
|
|
Assert.AreEqual (0, value_changed, "#B5");
|
|
Assert.AreEqual (0, text_changed, "#B6");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_UpButton ()
|
|
{
|
|
NumericNew nud = new NumericNew ();
|
|
nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
|
|
nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
|
|
nud.UpButton ();
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#A1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#A4");
|
|
Assert.AreEqual (1, value_changed, "#A5");
|
|
Assert.AreEqual (1, nud.Value, "#A6");
|
|
Assert.AreEqual (3, nud.CallStack.Count, "#A7");
|
|
Assert.AreEqual (1, value_changed, "#A8");
|
|
Assert.AreEqual (1, text_changed, "#A9");
|
|
|
|
nud.Text = "5";
|
|
nud.UpButton ();
|
|
Assert.AreEqual (7, nud.CallStack.Count, "#B1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [3], "#B2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#B3");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#B4");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#B5");
|
|
Assert.AreEqual (3, value_changed, "#B6");
|
|
Assert.AreEqual (6, nud.Value, "#B7");
|
|
Assert.AreEqual ("6", nud.Text, "#B8");
|
|
Assert.AreEqual (7, nud.CallStack.Count, "#B9");
|
|
Assert.AreEqual (3, value_changed, "#B10");
|
|
Assert.AreEqual (3, text_changed, "#B11");
|
|
|
|
nud.Text = "7";
|
|
nud.user_edit = true;
|
|
nud.UpButton ();
|
|
Assert.AreEqual (11, nud.CallStack.Count, "#C1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [7], "#C2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [8], "#C3");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [9], "#C4");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [10], "#C5");
|
|
Assert.AreEqual (5, value_changed, "#C6");
|
|
Assert.AreEqual (8, nud.Value, "#C7");
|
|
Assert.AreEqual (11, nud.CallStack.Count, "#C8");
|
|
Assert.AreEqual (5, value_changed, "#C9");
|
|
Assert.AreEqual (5, text_changed, "#C10");
|
|
nud.user_edit = false;
|
|
Assert.AreEqual ("8", nud.Text, "#C11");
|
|
Assert.AreEqual (11, nud.CallStack.Count, "#C12");
|
|
Assert.AreEqual (5, value_changed, "#C13");
|
|
Assert.AreEqual (5, text_changed, "#C14");
|
|
|
|
nud.user_edit = false;
|
|
nud.Text = "555";
|
|
nud.user_edit = true;
|
|
nud.UpButton ();
|
|
Assert.AreEqual (14, nud.CallStack.Count, "#D1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [11], "#D2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [12], "#D3");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [13], "#D4");
|
|
Assert.AreEqual (6, value_changed, "#D5");
|
|
Assert.AreEqual (100, nud.Value, "#D6");
|
|
Assert.AreEqual (14, nud.CallStack.Count, "#D7");
|
|
Assert.AreEqual (6, value_changed, "#D8");
|
|
Assert.AreEqual (7, text_changed, "#D9");
|
|
nud.user_edit = false;
|
|
Assert.AreEqual ("100", nud.Text, "#D10");
|
|
Assert.AreEqual (14, nud.CallStack.Count, "#D11");
|
|
Assert.AreEqual (6, value_changed, "#D12");
|
|
Assert.AreEqual (7, text_changed, "#D13");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_Value ()
|
|
{
|
|
// obtain Value when UserEdit is false
|
|
NumericNew nud = new NumericNew ();
|
|
nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
|
|
nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A1");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
|
|
Assert.AreEqual (0, nud.Value, "#A4");
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#A5");
|
|
Assert.AreEqual (0, value_changed, "#A6");
|
|
Assert.AreEqual (0, text_changed, "#A7");
|
|
|
|
// obtain Value when UserEdit is true
|
|
nud.user_edit = true;
|
|
Assert.AreEqual (2, nud.CallStack.Count, "#B1");
|
|
Assert.AreEqual (0, nud.Value, "#B2");
|
|
Assert.AreEqual (4, nud.CallStack.Count, "#B3");
|
|
Assert.AreEqual ("ValidateEditText", nud.CallStack [2], "#B4");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B5");
|
|
Assert.AreEqual (0, value_changed, "#B6");
|
|
Assert.AreEqual (0, text_changed, "#B7");
|
|
|
|
// modify Value when UserEdit is false
|
|
nud.user_edit = false;
|
|
nud.Value = 10;
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#C1");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C2");
|
|
Assert.AreEqual (1, value_changed, "#C3");
|
|
Assert.AreEqual (1, text_changed, "#C4");
|
|
Assert.AreEqual (10, nud.Value, "#C5");
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#C6");
|
|
Assert.AreEqual (1, value_changed, "#C7");
|
|
Assert.AreEqual (1, text_changed, "#C8");
|
|
|
|
// setting same Value
|
|
nud.Value = 10;
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#D1");
|
|
Assert.AreEqual (1, value_changed, "#D2");
|
|
Assert.AreEqual (10, nud.Value, "#D3");
|
|
Assert.AreEqual (5, nud.CallStack.Count, "#D4");
|
|
Assert.AreEqual (1, value_changed, "#D5");
|
|
Assert.AreEqual (1, text_changed, "#D6");
|
|
|
|
// modify Value when UserEdit is true
|
|
nud.user_edit = true;
|
|
nud.Value = 20;
|
|
Assert.AreEqual (7, nud.CallStack.Count, "#E1");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#E2");
|
|
Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#E3");
|
|
Assert.AreEqual (3, value_changed, "#E4");
|
|
Assert.AreEqual (1, text_changed, "#E5");
|
|
nud.user_edit = false; // reset UserEdit to avoid Value being parsed from Text
|
|
Assert.AreEqual (10, nud.Value, "#E6");
|
|
Assert.AreEqual (7, nud.CallStack.Count, "#E7");
|
|
Assert.AreEqual (3, value_changed, "#E8");
|
|
Assert.AreEqual (1, text_changed, "#E9");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void NumericUpDown_Value_Invalid ()
|
|
{
|
|
NumericNew nud = new NumericNew ();
|
|
|
|
try {
|
|
nud.Value = 1000;
|
|
Assert.Fail ("#A1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
|
|
Assert.IsNotNull (ex.Message, "#A3");
|
|
Assert.IsNotNull (ex.ParamName, "#A4");
|
|
Assert.AreEqual ("Value", ex.ParamName, "#A5");
|
|
Assert.IsNull (ex.InnerException, "#A6");
|
|
}
|
|
|
|
try {
|
|
nud.Value = 1000;
|
|
Assert.Fail ("#B1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
|
|
Assert.IsNotNull (ex.Message, "#B3");
|
|
Assert.IsNotNull (ex.ParamName, "#B4");
|
|
Assert.AreEqual ("Value", ex.ParamName, "#B5");
|
|
Assert.IsNull (ex.InnerException, "#B6");
|
|
}
|
|
|
|
try {
|
|
nud.Value = -1000;
|
|
Assert.Fail ("#C1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
|
|
Assert.IsNotNull (ex.Message, "#C3");
|
|
Assert.IsNotNull (ex.ParamName, "#C4");
|
|
Assert.AreEqual ("Value", ex.ParamName, "#C5");
|
|
Assert.IsNull (ex.InnerException, "#C6");
|
|
}
|
|
|
|
nud.BeginInit ();
|
|
|
|
nud.Value = 1000;
|
|
Assert.AreEqual (1000, nud.Value, "#D1");
|
|
nud.Value = 1000;
|
|
Assert.AreEqual (1000, nud.Value, "#D2");
|
|
nud.Value = -1000;
|
|
Assert.AreEqual (-1000, nud.Value, "#D3");
|
|
nud.EndInit ();
|
|
try {
|
|
nud.Value = -1000;
|
|
Assert.Fail ("#E1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#E2");
|
|
Assert.IsNotNull (ex.Message, "#E3");
|
|
Assert.IsNotNull (ex.ParamName, "#E4");
|
|
Assert.AreEqual ("Value", ex.ParamName, "#E5");
|
|
Assert.IsNull (ex.InnerException, "#E6");
|
|
}
|
|
}
|
|
|
|
void NumericUpDown_TextChanged (object sender, EventArgs e)
|
|
{
|
|
text_changed++;
|
|
}
|
|
|
|
void NumericUpDown_ValueChanged (object sender, EventArgs e)
|
|
{
|
|
value_changed++;
|
|
}
|
|
|
|
public class NumericNew : NumericUpDown
|
|
{
|
|
public bool update_edit_text_called = false;
|
|
public bool validate_edit_text_called = false;
|
|
private ArrayList _callStack = new ArrayList ();
|
|
|
|
public ArrayList CallStack {
|
|
get { return _callStack; }
|
|
}
|
|
|
|
public bool user_edit {
|
|
get {
|
|
return UserEdit;
|
|
}
|
|
set {
|
|
UserEdit = value;
|
|
}
|
|
}
|
|
|
|
public bool changing_text {
|
|
get {
|
|
return ChangingText;
|
|
}
|
|
set {
|
|
ChangingText = value;
|
|
}
|
|
}
|
|
|
|
public void Reset ()
|
|
{
|
|
update_edit_text_called = false;
|
|
validate_edit_text_called = false;
|
|
_callStack.Clear ();
|
|
}
|
|
|
|
protected override void UpdateEditText ()
|
|
{
|
|
_callStack.Add ("UpdateEditText");
|
|
update_edit_text_called = true;
|
|
base.UpdateEditText ();
|
|
}
|
|
|
|
protected override void ValidateEditText ()
|
|
{
|
|
_callStack.Add ("ValidateEditText");
|
|
validate_edit_text_called = true;
|
|
base.ValidateEditText ();
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void DomainUpDownStandardPropTest ()
|
|
{
|
|
DomainUpDown d1 = new DomainUpDown ();
|
|
|
|
Assert.AreEqual (0, d1.Items.Count, "#24");
|
|
Assert.AreEqual (false, d1.Sorted, "#25");
|
|
Assert.AreEqual (false, d1.Wrap, "#26");
|
|
Assert.AreEqual ("System.Windows.Forms.DomainUpDown, Items.Count: 0, SelectedIndex: -1", d1.ToString (), "#26a");
|
|
|
|
d1.Items.Add ("item1");
|
|
d1.Items.Add ("item2");
|
|
d1.Items.Add ("item3");
|
|
d1.Items.Add ("item4");
|
|
|
|
Assert.AreEqual (4, d1.Items.Count, "#27");
|
|
Assert.AreEqual (-1, d1.SelectedIndex, "#28");
|
|
Assert.AreEqual (null, d1.SelectedItem, "#29");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDownEnhancedPropTest ()
|
|
{
|
|
DomainUpDown d1 = new DomainUpDown ();
|
|
|
|
d1.Items.Add ("item1");
|
|
d1.Items.Add ("item2");
|
|
d1.Items.Add ("item3");
|
|
d1.Items.Add ("item4");
|
|
|
|
d1.SelectedIndex = 3;
|
|
Assert.AreEqual (3, d1.SelectedIndex, "#30");
|
|
|
|
d1.Items.Remove ("item1");
|
|
|
|
Assert.AreEqual (3, d1.Items.Count, "#31");
|
|
Assert.AreEqual (2, d1.SelectedIndex, "#32");
|
|
|
|
d1.Items.Remove ("item4");
|
|
Assert.AreEqual (2, d1.Items.Count, "#33");
|
|
Assert.AreEqual (-1, d1.SelectedIndex, "#34");
|
|
Assert.AreEqual (null, d1.SelectedItem, "#35");
|
|
|
|
// strange, ArgumentOutOfRangeException on windows
|
|
// d1.SelectedIndex = 1;
|
|
//Assert.AreEqual (1, d1.SelectedIndex, "#36");
|
|
|
|
d1.Items.Clear ();
|
|
Assert.AreEqual (0, d1.Items.Count, "#37");
|
|
Assert.AreEqual (-1, d1.SelectedIndex, "#38");
|
|
Assert.AreEqual (null, d1.SelectedItem, "#39");
|
|
|
|
d1.Items.Add ("zitem1");
|
|
d1.Items.Add ("oitem2");
|
|
d1.Items.Add ("mitem3");
|
|
d1.Items.Add ("aitem4");
|
|
|
|
d1.SelectedIndex = 0;
|
|
Assert.AreEqual ("zitem1", d1.SelectedItem.ToString (), "#40");
|
|
|
|
d1.Sorted = true;
|
|
Assert.AreEqual ("aitem4", d1.SelectedItem.ToString (), "#41");
|
|
Assert.AreEqual ("aitem4", d1.Items[0].ToString (), "#42");
|
|
|
|
d1.Items.Clear ();
|
|
d1.Items.Add ("item1");
|
|
d1.Items.Add ("item2");
|
|
d1.Items.Add ("item3");
|
|
d1.Items.Add ("item4");
|
|
d1.SelectedIndex = 0;
|
|
|
|
d1.UpButton ();
|
|
Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#43");
|
|
|
|
d1.DownButton ();
|
|
Assert.AreEqual ("item2", d1.SelectedItem.ToString (), "#44");
|
|
|
|
d1.SelectedIndex = 0;
|
|
d1.Wrap = true;
|
|
d1.UpButton ();
|
|
Assert.AreEqual ("item4", d1.SelectedItem.ToString (), "#45");
|
|
|
|
d1.DownButton ();
|
|
Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#46");
|
|
|
|
d1.Text = "item3";
|
|
Assert.AreEqual (null, d1.SelectedItem, "#47");
|
|
}
|
|
|
|
[Test] // bug #80620
|
|
public void DomainUpDownClientRectangle_Borders ()
|
|
{
|
|
DomainUpDown dud = new DomainUpDown ();
|
|
dud.CreateControl ();
|
|
Assert.AreEqual (dud.ClientRectangle, new DomainUpDown ().ClientRectangle);
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDown_SelectedIndex ()
|
|
{
|
|
MockDomainUpDown dud = new MockDomainUpDown ();
|
|
dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
|
|
dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
|
|
Assert.AreEqual (1, dud.CallStack.Count, "#A1");
|
|
Assert.AreEqual ("set_Text: (0)", dud.CallStack [0], "#A2");
|
|
Assert.AreEqual (0, selected_item_changed, "#A3");
|
|
Assert.AreEqual (0, text_changed, "#A4");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#A5");
|
|
|
|
string itemA = "itemA";
|
|
dud.Items.Add (itemA);
|
|
Assert.AreEqual (1, dud.CallStack.Count, "#B1");
|
|
Assert.AreEqual (0, selected_item_changed, "#B2");
|
|
Assert.AreEqual (0, text_changed, "#B3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
|
|
|
|
dud.SelectedIndex = 0;
|
|
Assert.AreEqual (4, dud.CallStack.Count, "#C1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [1], "#C2");
|
|
Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [2], "#C3");
|
|
Assert.AreEqual ("OnChanged", dud.CallStack [3], "#C4");
|
|
Assert.AreEqual (1, selected_item_changed, "#C5");
|
|
Assert.AreEqual (1, text_changed, "#C6");
|
|
Assert.AreEqual (0, dud.SelectedIndex, "#C7");
|
|
|
|
dud.SelectedIndex = 0;
|
|
Assert.AreEqual (4, dud.CallStack.Count, "#D1");
|
|
Assert.AreEqual (1, selected_item_changed, "#D2");
|
|
Assert.AreEqual (1, text_changed, "#D3");
|
|
Assert.AreEqual (0, dud.SelectedIndex, "#D4");
|
|
|
|
dud.SelectedIndex = -1;
|
|
Assert.AreEqual (4, dud.CallStack.Count, "#E1");
|
|
Assert.AreEqual (1, selected_item_changed, "#E2");
|
|
Assert.AreEqual (1, text_changed, "#E3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
|
|
|
|
dud.SelectedIndex = 0;
|
|
Assert.AreEqual (6, dud.CallStack.Count, "#F1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [4], "#F2");
|
|
Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [5], "#F3");
|
|
Assert.AreEqual (1, selected_item_changed, "#F4");
|
|
Assert.AreEqual (1, text_changed, "#F5");
|
|
Assert.AreEqual (0, dud.SelectedIndex, "#F6");
|
|
|
|
string itemAbis = "itemA";
|
|
dud.Items.Add (itemAbis);
|
|
Assert.AreEqual (6, dud.CallStack.Count, "#G1");
|
|
Assert.AreEqual (1, selected_item_changed, "#G2");
|
|
Assert.AreEqual (1, text_changed, "#G3");
|
|
Assert.AreEqual (0, dud.SelectedIndex, "#G4");
|
|
|
|
dud.SelectedIndex = 1;
|
|
Assert.AreEqual (8, dud.CallStack.Count, "#H1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#H2");
|
|
Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [7], "#H3");
|
|
Assert.AreEqual (1, selected_item_changed, "#H4");
|
|
Assert.AreEqual (1, text_changed, "#H5");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#H6");
|
|
|
|
string itemB = "itemB";
|
|
dud.Items.Add (itemB);
|
|
Assert.AreEqual (8, dud.CallStack.Count, "#I1");
|
|
Assert.AreEqual (1, selected_item_changed, "#I2");
|
|
Assert.AreEqual (1, text_changed, "#I3");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#I4");
|
|
|
|
dud.SelectedIndex = 2;
|
|
Assert.AreEqual (11, dud.CallStack.Count, "#J1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#J2");
|
|
Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#J3");
|
|
Assert.AreEqual ("OnChanged", dud.CallStack [10], "#J4");
|
|
Assert.AreEqual (2, selected_item_changed, "#J5");
|
|
Assert.AreEqual (2, text_changed, "#J6");
|
|
Assert.AreEqual (2, dud.SelectedIndex, "#J7");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDown_Items_Add ()
|
|
{
|
|
MockItem itemA = new MockItem ("itemA");
|
|
MockItem itemB = new MockItem ("itemB");
|
|
MockItem itemC = new MockItem ("itemC");
|
|
|
|
MockDomainUpDown dud = new MockDomainUpDown ();
|
|
dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
|
|
dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
|
|
dud.Reset ();
|
|
|
|
dud.Items.Add (itemA);
|
|
Assert.AreEqual (0, dud.CallStack.Count, "#A1");
|
|
Assert.AreEqual (0, selected_item_changed, "#A2");
|
|
Assert.AreEqual (0, text_changed, "#A3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#A4");
|
|
Assert.AreEqual (string.Empty, dud.Text, "#A5");
|
|
Assert.AreEqual (1, dud.Items.Count, "#A6");
|
|
Assert.AreSame (itemA, dud.Items [0], "#A7");
|
|
|
|
dud.Items.Add (itemC);
|
|
Assert.AreEqual (0, dud.CallStack.Count, "#B1");
|
|
Assert.AreEqual (0, selected_item_changed, "#B2");
|
|
Assert.AreEqual (0, text_changed, "#B3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
|
|
Assert.AreEqual (string.Empty, dud.Text, "#B5");
|
|
Assert.AreEqual (2, dud.Items.Count, "#B6");
|
|
Assert.AreSame (itemC, dud.Items [1], "#B7");
|
|
|
|
dud.Items.Add (itemA);
|
|
Assert.AreEqual (0, dud.CallStack.Count, "#C1");
|
|
Assert.AreEqual (0, selected_item_changed, "#C2");
|
|
Assert.AreEqual (0, text_changed, "#C3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#C4");
|
|
Assert.AreEqual (string.Empty, dud.Text, "#C5");
|
|
Assert.AreEqual (3, dud.Items.Count, "#C6");
|
|
Assert.AreSame (itemA, dud.Items [2], "#C7");
|
|
|
|
dud.Sorted = true;
|
|
Assert.AreEqual (3, dud.Items.Count, "#D1");
|
|
Assert.AreSame (itemA, dud.Items [0], "#D2");
|
|
Assert.AreSame (itemA, dud.Items [1], "#D3");
|
|
Assert.AreSame (itemC, dud.Items [2], "#D4");
|
|
|
|
// adding item causes re-sort
|
|
dud.Items.Add (itemB);
|
|
Assert.AreEqual (0, dud.CallStack.Count, "#E1");
|
|
Assert.AreEqual (0, selected_item_changed, "#E2");
|
|
Assert.AreEqual (0, text_changed, "#E3");
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
|
|
Assert.AreEqual (string.Empty, dud.Text, "#E5");
|
|
Assert.AreEqual (4, dud.Items.Count, "#E6");
|
|
Assert.AreSame (itemA, dud.Items [0], "#E7");
|
|
Assert.AreSame (itemA, dud.Items [1], "#E8");
|
|
Assert.AreSame (itemB, dud.Items [2], "#E9");
|
|
Assert.AreSame (itemC, dud.Items [3], "#E10");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDown_Items_Indexer ()
|
|
{
|
|
MockItem itemA = new MockItem ("itemA");
|
|
MockItem itemAbis = new MockItem ("itemA");
|
|
MockItem itemB = new MockItem ("itemB");
|
|
MockItem itemC = new MockItem ("itemC");
|
|
MockItem itemD = new MockItem ("itemD");
|
|
MockItem itemE = new MockItem ("itemE");
|
|
|
|
TestHelper.RemoveWarning (itemAbis);
|
|
|
|
MockDomainUpDown dud = new MockDomainUpDown ();
|
|
dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
|
|
dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
|
|
dud.Items.Add (itemC);
|
|
dud.Items.Add (itemA);
|
|
dud.Items.Add (itemB);
|
|
dud.Items.Add (itemA);
|
|
dud.SelectedIndex = 1;
|
|
dud.Reset ();
|
|
Reset ();
|
|
|
|
Assert.AreSame (itemC, dud.Items [0], "#A1");
|
|
Assert.AreSame (itemA, dud.Items [1], "#A2");
|
|
Assert.AreSame (itemB, dud.Items [2], "#A3");
|
|
Assert.AreSame (itemA, dud.Items [3], "#A4");
|
|
Assert.AreEqual (itemA.Text, dud.Text, "#A5");
|
|
|
|
dud.Items [3] = itemD;
|
|
Assert.AreEqual (0, dud.CallStack.Count, "#B1");
|
|
Assert.AreEqual (0, selected_item_changed, "#B2");
|
|
Assert.AreEqual (0, text_changed, "#B3");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#B4");
|
|
Assert.AreEqual (itemA.Text, dud.Text, "#B5");
|
|
|
|
dud.Items [1] = itemE;
|
|
Assert.AreEqual (3, dud.CallStack.Count, "#C1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [0], "#C2");
|
|
Assert.AreEqual ("set_Text:itemE (5)", dud.CallStack [1], "#C3");
|
|
Assert.AreEqual ("OnChanged", dud.CallStack [2], "#C4");
|
|
Assert.AreEqual (1, selected_item_changed, "#C5");
|
|
Assert.AreEqual (1, text_changed, "#C6");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#C7");
|
|
Assert.AreEqual (itemE.Text, dud.Text, "#C8");
|
|
|
|
dud.Sorted = true;
|
|
Assert.AreEqual (8, dud.CallStack.Count, "#D1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [3], "#D2");
|
|
Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [4], "#D3");
|
|
Assert.AreEqual ("OnChanged", dud.CallStack [5], "#D4");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#D5");
|
|
Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [7], "#D6");
|
|
Assert.AreEqual (2, selected_item_changed, "#D7");
|
|
Assert.AreEqual (2, text_changed, "#D8");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#D9");
|
|
Assert.AreEqual (itemC.Text, dud.Text, "#D10");
|
|
Assert.AreSame (itemB, dud.Items [0], "#D11");
|
|
Assert.AreSame (itemC, dud.Items [1], "#D12");
|
|
Assert.AreSame (itemD, dud.Items [2], "#D13");
|
|
Assert.AreSame (itemE, dud.Items [3], "#D14");
|
|
|
|
dud.Items [3] = itemA;
|
|
Assert.AreEqual (13, dud.CallStack.Count, "#E1");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#E2");
|
|
Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#E3");
|
|
Assert.AreEqual ("OnChanged", dud.CallStack [10], "#E4");
|
|
Assert.AreEqual ("UpdateEditText", dud.CallStack [11], "#E5");
|
|
Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [12], "#E6");
|
|
Assert.AreEqual (3, selected_item_changed, "#E7");
|
|
Assert.AreEqual (3, text_changed, "#E8");
|
|
Assert.AreEqual (1, dud.SelectedIndex, "#E9");
|
|
Assert.AreEqual (itemB.Text, dud.Text, "#E10");
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDown_Items_Indexer_Null ()
|
|
{
|
|
MockDomainUpDown dud = new MockDomainUpDown ();
|
|
dud.Items.Add ("itemA");
|
|
dud.Items.Add ("itemB");
|
|
dud.Items.Add ("itemC");
|
|
dud.SelectedIndex = 0;
|
|
|
|
// TODO: report as MS bug
|
|
dud.Items [2] = null;
|
|
dud.Items [1] = null;
|
|
try {
|
|
dud.Items [0] = null;
|
|
Assert.Fail ();
|
|
} catch (NullReferenceException ex) {
|
|
TestHelper.RemoveWarning (ex);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void DomainUpDown_Items_Insert ()
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
[Test]
|
|
public void DomainUpDown_Items_Remove ()
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
[Test]
|
|
public void DomainUpDown_Items_RemoveAt ()
|
|
{
|
|
// TODO
|
|
}
|
|
|
|
[Test]
|
|
[Category ("NotWorking")]
|
|
public void DomainUpDown_SelectedIndex_Invalid ()
|
|
{
|
|
DomainUpDown dud = new DomainUpDown ();
|
|
dud.Items.Add ("item1");
|
|
|
|
try {
|
|
dud.SelectedIndex = -2;
|
|
Assert.Fail ("#A1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
|
|
Assert.IsNotNull (ex.Message, "#A3");
|
|
Assert.IsNotNull (ex.ParamName, "#A4");
|
|
Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
|
|
Assert.IsNull (ex.InnerException, "#A6");
|
|
}
|
|
|
|
try {
|
|
dud.SelectedIndex = 1;
|
|
Assert.Fail ("#B1");
|
|
} catch (ArgumentOutOfRangeException ex) {
|
|
Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
|
|
Assert.IsNotNull (ex.Message, "#A3");
|
|
Assert.IsNotNull (ex.ParamName, "#A4");
|
|
Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
|
|
Assert.IsNull (ex.InnerException, "#A6");
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void DomainUpDown_SelectedItem_Null ()
|
|
{
|
|
DomainUpDown dud = new DomainUpDown ();
|
|
dud.Items.Add ("item1");
|
|
dud.SelectedIndex = 0;
|
|
Assert.AreEqual (0, dud.SelectedIndex, "#A1");
|
|
Assert.IsNotNull (dud.SelectedItem, "#A2");
|
|
|
|
dud.SelectedItem = null;
|
|
Assert.AreEqual (-1, dud.SelectedIndex, "#B1");
|
|
Assert.IsNull (dud.SelectedItem, "#B2");
|
|
}
|
|
|
|
void DomainUpDown_TextChanged (object sender, EventArgs e)
|
|
{
|
|
text_changed++;
|
|
}
|
|
|
|
void DomainUpDown_SelectedItemChanged (object sender, EventArgs e)
|
|
{
|
|
selected_item_changed++;
|
|
}
|
|
|
|
public class MockDomainUpDown : DomainUpDown
|
|
{
|
|
private ArrayList _callStack = new ArrayList ();
|
|
|
|
public ArrayList CallStack {
|
|
get { return _callStack; }
|
|
}
|
|
|
|
public bool user_edit {
|
|
get {
|
|
return UserEdit;
|
|
}
|
|
set {
|
|
UserEdit = value;
|
|
}
|
|
}
|
|
|
|
public bool changing_text {
|
|
get {
|
|
return ChangingText;
|
|
}
|
|
set {
|
|
ChangingText = value;
|
|
}
|
|
}
|
|
|
|
public void Reset ()
|
|
{
|
|
_callStack.Clear ();
|
|
}
|
|
|
|
public override string Text {
|
|
get {
|
|
return base.Text;
|
|
}
|
|
set {
|
|
if (value == null)
|
|
_callStack.Add ("set_Text:null");
|
|
else
|
|
_callStack.Add ("set_Text:" + value + " (" + value.Length + ")");
|
|
base.Text = value;
|
|
}
|
|
}
|
|
|
|
protected override void OnChanged (object source, EventArgs e)
|
|
{
|
|
_callStack.Add ("OnChanged");
|
|
base.OnChanged (source, e);
|
|
}
|
|
|
|
protected override void UpdateEditText ()
|
|
{
|
|
_callStack.Add ("UpdateEditText");
|
|
base.UpdateEditText ();
|
|
}
|
|
|
|
protected override void ValidateEditText ()
|
|
{
|
|
_callStack.Add ("ValidateEditText");
|
|
base.ValidateEditText ();
|
|
}
|
|
}
|
|
|
|
private int selected_item_changed = 0;
|
|
private int text_changed = 0;
|
|
private int value_changed = 0;
|
|
|
|
public class MockItem
|
|
{
|
|
public MockItem (string text)
|
|
{
|
|
_text = text;
|
|
}
|
|
|
|
public string Text {
|
|
get { return _text; }
|
|
}
|
|
|
|
public override string ToString ()
|
|
{
|
|
return _text;
|
|
}
|
|
|
|
private readonly string _text;
|
|
}
|
|
|
|
[Test]
|
|
public void Defaults ()
|
|
{
|
|
UpDownBase udb = new MockUpDown ();
|
|
|
|
Assert.AreEqual (new Size (0, 0), udb.MaximumSize, "A1");
|
|
Assert.AreEqual (new Size (0, 0), udb.MinimumSize, "A2");
|
|
|
|
udb.MaximumSize = new Size (100, 100);
|
|
udb.MinimumSize = new Size (100, 100);
|
|
|
|
Assert.AreEqual (new Size (100, 0), udb.MaximumSize, "A3");
|
|
Assert.AreEqual (new Size (100, 0), udb.MinimumSize, "A4");
|
|
}
|
|
|
|
private class MockUpDown : UpDownBase
|
|
{
|
|
public MockUpDown () : base ()
|
|
{
|
|
}
|
|
|
|
public override void DownButton ()
|
|
{
|
|
throw new Exception ("The method or operation is not implemented.");
|
|
}
|
|
|
|
public override void UpButton ()
|
|
{
|
|
throw new Exception ("The method or operation is not implemented.");
|
|
}
|
|
|
|
protected override void UpdateEditText ()
|
|
{
|
|
throw new Exception ("The method or operation is not implemented.");
|
|
}
|
|
}
|
|
}
|
|
}
|