public void Invoke_IncorrectParametersWithTargetSet_DoesNothing()
        {
            MethodObjectStub host    = CreateMethodObject();
            CallMethodAction action  = CreateCallMethodAction("IncompatibleParameters");
            StubTrigger      trigger = AttachAction(action, host);

            trigger.FireStubTrigger();
            Assert.AreEqual(host.LastMethodCalled, "None", "No method should be called");
        }
        public void Invoke_NonExistantMethodWithNoTarget_DoesNothing()
        {
            MethodObjectStub host    = CreateMethodObject();
            CallMethodAction action  = CreateCallMethodAction("NonExistantMethodName");
            StubTrigger      trigger = AttachAction(action, host);

            trigger.FireStubTrigger();
            Assert.AreEqual(host.LastMethodCalled, "None", "No method should be called");
        }
        public void Invoke_IncorrectParametersWithTargetSet_ThrowsArgumentException()
        {
            Rectangle        host    = CreateRectangle();
            MethodObjectStub target  = CreateMethodObject();
            CallMethodAction action  = CreateCallMethodAction("IncompatibleParameters");
            StubTrigger      trigger = AttachAction(action, host);

            action.TargetObject = target;
            trigger.FireStubTrigger();
        }
        public void Invoke_NonExistantMethodWithTargetSet_ThrowsArgumentException()
        {
            Rectangle        host    = CreateRectangle();
            MethodObjectStub target  = CreateMethodObject();
            CallMethodAction action  = CreateCallMethodAction("NonExistantMethodName");
            StubTrigger      trigger = AttachAction(action, host);

            action.TargetObject = target;
            trigger.FireStubTrigger();
        }
        public void Invoke_MultipleMethodsWithSpecificParameter_MostDerivedSignatureIsCalled()
        {
            MethodObjectStub methodObject = CreateMethodObject();
            CallMethodAction action       = CreateCallMethodAction("DuplicatedMethod");
            StubTrigger      trigger      = AttachAction(action, methodObject);

            trigger.FireStubTrigger(new StubEventArgs());

            Assert.AreEqual(methodObject.LastMethodCalled, "DuplicatedMethodWithStubEventArgsSignature", "DuplicatedMethodWithStubEventArgsSignature was not called.");
        }
        public void Invoke_MultipleMethodsWithSameName_EventHandlerSignatureIsCalled()
        {
            MethodObjectStub methodObject = CreateMethodObject();
            CallMethodAction action       = CreateCallMethodAction("DuplicatedMethod");
            StubTrigger      trigger      = AttachAction(action, methodObject);

            trigger.FireStubTrigger(EventArgs.Empty);

            Assert.AreEqual(methodObject.LastMethodCalled, "DuplicatedMethodWithEventHandlerSignature", "DuplicatedMethodWithEventHandlerSignature was not called.");
        }
        public void Invoke_UniqueMethodWithNoParameters_IsCalled()
        {
            MethodObjectStub methodObject = CreateMethodObject();
            CallMethodAction action       = CreateCallMethodAction("UniqueMethodWithNoParameters");
            StubTrigger      trigger      = AttachAction(action, methodObject);

            trigger.FireStubTrigger();

            Assert.AreEqual(methodObject.LastMethodCalled, "UniqueMethodWithNoParameters", "UniqueMethodWithNoParameters was not called.");
        }