public static object ResultOfAction(IAction action)
        {
            object receiver = new NamedObject("receiver");
            var methodInfo = new MethodInfoStub("method");
            var invocation = new Invocation(receiver, methodInfo, new object[0]);

            action.Invoke(invocation);

            return invocation.Result;
        }
        public void SetsExceptionOfInvocation()
        {
            var exception = new Exception();
            var action = new ThrowAction(exception);

            var receiver = new object();
            var methodInfo = new MethodInfoStub("method");
            var invocation = new Invocation(receiver, methodInfo, new object[0]);

            action.Invoke(invocation);

            Assert.AreSame(exception, invocation.Exception, "exception");
        }
        public void SetsNamedParameterOnInvocationWrong()
        {
            var receiver = new object();
            var methodInfo = new MethodInfoStub("method",
                                                new ParameterInfoStub("p1", ParameterAttributes.In),
                                                new ParameterInfoStub("p2", ParameterAttributes.Out));
            string name = "p2_wrong";
            var value = new object();
            var invocation = new Invocation(receiver, methodInfo, new object[] {null, null});

            var action = new SetNamedParameterAction(name, value);

            action.Invoke(invocation);

            Assert.AreSame(value, invocation.Parameters[1], "set value");
        }
        public void SetsIndexedParameterOnInvocation()
        {
            var receiver = new object();
            var methodInfo = new MethodInfoStub("method",
                                                new ParameterInfoStub("p1", ParameterAttributes.In),
                                                new ParameterInfoStub("p2", ParameterAttributes.Out));
            int index = 1;
            var value = new object();
            var invocation = new Invocation(receiver, methodInfo, new object[] {null, null});

            var action = new SetIndexedParameterAction(index, value);

            action.Invoke(invocation);

            Assert.AreSame(value, invocation.Parameters[index], "set value");
        }
 public void SetUp()
 {
     receiver = "receiver";
     result = "result";
     method = new MethodInfoStub("method");
     invocation = new Invocation(receiver, method, new object[0]);
     exception = new Exception();
 }
        private static object ValueReturnedForType(IAction action, Type returnType)
        {
            var method = new MethodInfoStub("method", new ParameterInfo[0]);
            method.StubReturnType = returnType;

            var invocation = new Invocation(RECEIVER, method, new object[0]);

            action.Invoke(invocation);

            return invocation.Result;
        }