public void AssignToLastresultFiresEvent()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.ObjectCreated += OnObjectCreated;
        control.Lastresult     = "hello world";
        Assert.AreSame("hello world", object_created);
    }
    public void UpdateInvokeCountWhenInputValid()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.invoke_box.Text = uint.MaxValue.ToString();
        control.invoke_box_Validating(null, null);
        Assert.AreEqual(uint.MaxValue, control.InvokeCount);
    }
    public void ProcessLastresultUpdatesDrilldownButtonText()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();
        Button button = new Button();

        control.ProcessLastresult("foo", 10.9, button, new Button(), 100, 20, new ComboBox());
        Assert.AreEqual("Double...", button.Text);
    }
    public void AssignNullToLastresultDoesNotFireEvent()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.ObjectCreated += OnObjectCreated;
        this.object_created    = "something";
        control.Lastresult     = null;
        Assert.AreSame("something", object_created);
    }
    public void ProcessLastResultIncludesInvokeCountWhenMoreThanOne()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.InvokeCount = 100;
        ComboBox combobox = new ComboBox();

        control.ProcessLastresult("Invoke", "object", new Button(), new Button(), 500, 20, combobox);
        Assert.AreEqual("500 ticks (20 ms) to Invoke 100 times.", combobox.Items[0]);
    }
    public void ValidationErrorWhenInvokeCountNegative()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.InvokeCount     = 888;
        control.invoke_box.Text = "-1";
        control.invoke_box_Validating(null, null);
        Assert.AreEqual("Enter a valid whole number greater than 0.", control.validation_error_message);
        Assert.AreEqual(888, control.InvokeCount);
    }
    public void ProcessLastresultStacksUpMessages()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();
        ComboBox combobox = new ComboBox();

        control.ProcessLastresult("first", 10.9, new Button(), new Button(), 100, 20, combobox);
        control.ProcessLastresult("next", 10.9, new Button(), new Button(), 100, 20, combobox);
        Assert.AreEqual("100 ticks (20 ms) to next.", combobox.Items[0]);
        Assert.AreEqual("100 ticks (20 ms) to first.", combobox.Items[1]);
    }
    public void NullResultHidesDrillDownButtons()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();
        Button buttonDrilldown             = new Button();
        Button buttonAddToPool             = new Button();

        buttonDrilldown.Visible = true;
        control.ProcessLastresult("bar", null, buttonDrilldown, buttonAddToPool, 100, 20, new ComboBox());
        Assert.IsFalse(buttonDrilldown.Visible);
        Assert.IsFalse(buttonAddToPool.Visible);
    }
    public void ProcessLastResultIncludesAveragesAfterFirstInvoke()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();
        ComboBox combobox = new ComboBox();

        control.ProcessLastresult("JIT call", "object", new Button(), new Button(), 10000, 600, combobox);
        control.ProcessLastresult("Op", "object", new Button(), new Button(), 500, 20, combobox);
        Assert.AreEqual("500 ticks (20 ms) to Op.", combobox.Items[0]);
        control.ProcessLastresult("Op", "object", new Button(), new Button(), 600, 10, combobox);
        Assert.AreEqual("600 ticks (10 ms) to Op. Average 550 ticks (15 ms) over 2 invocations.", combobox.Items[0]);
    }
    public void OnlyLogMessageIfInstanceWasAddedToPool()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.Lastresult = "hello world";
        ComboBox messages = new ComboBox();

        control.AddInstanceToPool(messages);
        control.AddInstanceToPool(messages);
        Assert.AreEqual(1, messages.Items.Count);
    }
    public void Reset()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        control.average_count = 100;
        control.average_ms    = 1000;
        control.average_ticks = 2000;
        control.Reset();
        Assert.AreEqual(0, control.average_count);
        Assert.AreEqual(0, control.average_ms);
        Assert.AreEqual(0, control.average_ticks);
    }
    public void ProcessResultEnablesStatsListingControlWhenMoreThanOneEntryAdded()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();
        ComboBox combobox = new ComboBox();

        control.ProcessLastresult("first", 10.9, new Button(), new Button(), 100, 20, combobox);
        Assert.IsFalse(combobox.Enabled);
        control.ProcessLastresult("second", 10.9, new Button(), new Button(), 100, 20, combobox);
        Assert.IsTrue(combobox.Enabled);
        control.ProcessLastresult("second", 10.9, new Button(), new Button(), 100, 20, combobox);
        control.ProcessLastresult("second", 10.9, new Button(), new Button(), 100, 20, combobox);
        control.ProcessLastresult("second", 10.9, new Button(), new Button(), 100, 20, combobox);
        Assert.IsTrue(combobox.Enabled);
    }
    public void Defaults()
    {
        TestableMemberControlPanel control = new TestableMemberControlPanel();

        Assert.AreEqual(1, control.InvokeCount);
    }