public void ResetButtonClearsCountersAndListBox()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         info    = typeof(TestClass).GetMethod("PublicStaticVoid", new Type[] { });

        control.Initialize(info);
        control.InvokeCount = 18;
        control.buttonCall_Click(null, null);
        control.buttonCall_Click(null, null);
        control.buttonCall_Click(null, null);
        control.buttonCall_Click(null, null);
        control.buttonReset_Click(null, null);
        Assert.AreEqual(0, control.average_count);
        Assert.AreEqual(0, control.comboBoxMessageBar.Items.Count);
        Assert.IsFalse(control.comboBoxMessageBar.Enabled);
    }
    public void InvokingInstanceMethod()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         info    = typeof(String).GetMethod("ToUpper", new Type[] { });

        control.Initialize("abc", info);
        control.buttonCall_Click(null, null);
        Assert.AreEqual("ABC", control.previewControl.textBoxToString.Text);
    }
    public void InvokingMethodUpdatesPreview()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         info    = typeof(TestClass).GetMethod("PublicStaticVoid", new Type[] { });

        control.Initialize(info);
        control.buttonCall_Click(null, null);
        Assert.AreEqual("Hello World", control.previewControl.textBoxToString.Text);
    }
    public void InvokingMethodUpdatesStats()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         info    = typeof(TestClass).GetMethod("PublicStaticVoid", new Type[] { });

        control.Initialize(info);
        control.buttonCall_Click(null, null);
        Assert.IsTrue(control.comboBoxMessageBar.Items[0].ToString().EndsWith("to Call."));
    }
    public void InvokingStaticMethod()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         method  = typeof(String).GetMethod("Copy", new Type[] { typeof(String) });

        control.Initialize(method);
        control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT].Text = "abc";
        control.buttonCall_Click(null, null);
        Assert.AreEqual("abc", control.previewControl.textBoxToString.Text);
    }
    public void InvokingMethodCatchesAndReportsExceptions()
    {
        MethodControlPanel control = new MethodControlPanel();
        MethodInfo         info    = typeof(String).GetMethod("Substring", new Type[] { typeof(Int32) });

        control.Initialize("string object", info);
        TextBox box = control.arguments_control.tableLayoutPanel.Controls[ArgumentsControl.Control.Index.INPUT] as TextBox;

        box.Text = "-1";
        control.buttonCall_Click(null, null);
        Assert.AreEqual("TargetInvocationException...", control.buttonDrillDown.Text);
    }