public void PopulateArgumentRowForAnyType()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(int), "foo");
        Assert.AreSame(typeof(NullCheckBox), control.arguments_control.tableLayoutPanel.Controls[0].GetType());
        NullCheckBox box = control.arguments_control.tableLayoutPanel.Controls[0] as NullCheckBox;
    }
    public void PopulateArgumentRowForReferenceTypeWithNoDefaultConstructor()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(WithNoDefaultConstructor), "no_default_constructor");
        CheckBox box = control.arguments_control.tableLayoutPanel.Controls[0] as CheckBox;

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

        Assert.IsFalse(input.Enabled);
    }
    public void PopulateArgumentRowForDateTime()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(DateTime), "datetime_arg");
        CheckBox box = control.arguments_control.tableLayoutPanel.Controls[0] as CheckBox;

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

        Assert.IsTrue(input.Enabled);
    }
    public void PopulateArgumentRowForEnum()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(EnumType), "enum_arg");
        NullCheckBox nullBox = control.arguments_control.tableLayoutPanel.Controls[0] as NullCheckBox;

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

        Assert.IsTrue(input.Enabled);
    }
    public void PopulateArgumentRowForSingle()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(Single), "single_arg");
        NullCheckBox nullBox = control.arguments_control.tableLayoutPanel.Controls[0] as NullCheckBox;

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

        Assert.IsTrue(input.Enabled);
        Assert.AreEqual("0", input.Text);
    }
    public void PopulateArgumentRowForChar()
    {
        MockMethodControl control = new MockMethodControl();

        control.PopulateNextArgumentRow(typeof(char), "char_arg");
        NullCheckBox nullBox = control.arguments_control.tableLayoutPanel.Controls[0] as NullCheckBox;

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

        Assert.IsTrue(input.Enabled);
        Assert.AreEqual(1, input.MaxLength);
    }