using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using Lima; namespace UnitTesting { public class MessageMockerTests : UnitTestSharp.TestFixture { Form form; Control control; System.Drawing.Point controlLoc = new System.Drawing.Point(25, 25); public override void TestSetup() { form = new Form(); form.Width = 100; form.Height = 100; form.Location = new System.Drawing.Point(0, 0); form.ClientSize = new System.Drawing.Size(100, 100); control = new Control(); control.Width = 50; control.Height = 50; control.Location = controlLoc; form.Controls.Add(control); } public override void TestTeardown() { form.Dispose(); } public void CanFakeFormMessages() { Form form = new Form(); bool fired = false; form.MouseWheel += delegate(object sender, MouseEventArgs args) { fired = true; }; MessageMocker.FireScrollWheel(form, 0, 0); Check(fired); } public void CanFakeMouseEnterEvents_Forms() { bool fired = false; form.MouseEnter += delegate(object sender, EventArgs args) { fired = true; }; MessageMocker.FireMouseMove(form, 0, 0); Check(fired); } public void CanFakeMouseEnterEvents_Controls() { bool fired = false; control.MouseEnter += delegate(object sender, EventArgs args) { fired = true; }; MessageMocker.FireMouseMove(control, 0, 0); Check(fired); } public void CanFakeMouseLeaveEvents_Controls() { bool fired = false; control.MouseLeave += delegate(object sender, EventArgs args) { fired = true; }; MessageMocker.FireMouseMove(control, 0, 0); MessageMocker.FireMouseLeave(control); Check(fired); } class TestForm : Form, IMessageFilter { public bool hit = false; public TestForm() { Application.AddMessageFilter(this); } public bool PreFilterMessage(ref Message m) { if (m.HWnd != Handle) { return false; } if (m.Msg == MessageMocker.WM_MOUSEWHEEL) { return true; } return false; } } public void ReflectMessageMessageFilter() { TestForm form = new TestForm(); form.MouseWheel += delegate(object sender, MouseEventArgs args) { form.hit = true; }; MessageMocker.FireScrollWheel(form, 0, 0); CheckFalse(form.hit); Application.RemoveMessageFilter(form); } } }