public void PopulateArgumentRowStoresInstanceInControlTag()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(ArrayList), "arr");
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        Assert.IsInstanceOf(typeof(ArrayList), input.Tag);
        control.Hide();
    }
    public void GetDateTimeArgumentType()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(DateTime), "datetime");
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        input.Text = "2009-12-25";
        Object[] arguments = control.GetArguments();
        Assert.AreEqual(new DateTime(2009, 12, 25, 00, 00, 00), (DateTime)arguments[0]);
        control.Hide();
    }
    public void GetStringArgumentType()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(string), "enum");
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        input.Text = "Hello World!";
        Object[] arguments = control.GetArguments();
        Assert.AreEqual("Hello World!", (string)arguments[0]);
        control.Hide();
    }
    public void GetEnumArgumentType()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(EnumType), "enum");
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        input.Text = "Feb";
        Object[] arguments = control.GetArguments();
        Assert.AreEqual(EnumType.Feb, (EnumType)arguments[0]);
        control.Hide();
    }
    public void GetPrimitiveArgumentType()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(int), "int");
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        input.Text = "-456789";
        Object[] arguments = control.GetArguments();
        Assert.AreEqual(-456789, (int)arguments[0]);
        control.Hide();
    }
    public void GetBoolArgumentType()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(bool), "bool");
        CheckBox input = (CheckBox)control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        Object[] arguments = control.GetArguments();
        Assert.IsFalse((Boolean)arguments[0]);
        input.Checked = true;
        arguments     = control.GetArguments();
        Assert.IsTrue((Boolean)arguments[0]);
        control.Hide();
    }
    public void PopulateArgumentRowForUnsupportedTypes()
    {
        MethodControlPanel control = new MethodControlPanel();

        control.Show();
        control.PopulateNextArgumentRow(typeof(UnsupportedRefType <int>), "dontcare");
        CheckBox box = control.arguments_control.tableLayoutPanel.Controls[0] as CheckBox;

        Assert.IsFalse(box.Enabled);
        Assert.IsFalse(box.Checked);
        Control input = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT];

        Assert.IsFalse(input.Enabled);
        control.Hide();
    }