Exemple #1
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_With_Param_And_Returns_Value_Calling_Instance_Method()
        {
            var a       = new TestClassCallingInstance();
            var wrapper = new PoseWrapper <int>((Func <int, int>)a.MethodWithParamAndReturn);

            var beforeDateTime = DateTime.Now;
            var result         = wrapper.Execute(new object[] { 5 });
            var afterDateTime  = DateTime.Now;

            Assert.AreEqual(0, result);

            var lastCallResults = wrapper.LastExecutionResults;

            Assert.IsNotNull(wrapper.LastExecutionResults);
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count);

            var executionResult = wrapper.LastExecutionResults.First();

            Assert.AreEqual("MethodWithParamAndReturn", executionResult.Key.Name);
            Assert.AreEqual(typeof(InstanceMethodsTestClass), executionResult.Key.DeclaringType);
            Assert.IsNotNull(executionResult.Value);
            Assert.AreEqual(1, executionResult.Value.Count);

            var callResult = executionResult.Value.First();

            Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime);
            Assert.IsNotNull(callResult.Parameters);
            Assert.AreEqual(2, callResult.Parameters.Count());

            var callResultInstance = (InstanceMethodsTestClass)callResult.Parameters[0];

            Assert.AreEqual(InstanceMethodsTestClassTracker.LastCreated.InstanceGuid, callResultInstance.InstanceGuid);

            Assert.AreEqual(5, (int)callResult.Parameters[1]);
        }
Exemple #2
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_Records_String_Parameters_Calling_Instance_Method()
        {
            var a       = new TestClassCallingInstance();
            var wrapper = new PoseWrapper((Action <string>)a.MethodWithStringParam);

            var beforeDateTime = DateTime.Now;

            wrapper.Execute(new object[] { "bird" });
            var afterDateTime = DateTime.Now;

            var lastCallResults = wrapper.LastExecutionResults;

            Assert.IsNotNull(wrapper.LastExecutionResults);
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count);

            var executionResult = wrapper.LastExecutionResults.First();

            Assert.AreEqual("MethodWithStringParam", executionResult.Key.Name);
            Assert.AreEqual(typeof(InstanceMethodsTestClass), executionResult.Key.DeclaringType);
            Assert.IsNotNull(executionResult.Value);
            Assert.AreEqual(1, executionResult.Value.Count);

            var callResult = executionResult.Value.First();

            Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime);
            Assert.IsNotNull(callResult.Parameters);
            Assert.AreEqual(2, callResult.Parameters.Count());

            var callResultInstance = (InstanceMethodsTestClass)callResult.Parameters[0];

            Assert.AreEqual(InstanceMethodsTestClassTracker.LastCreated.InstanceGuid, callResultInstance.InstanceGuid);

            Assert.AreEqual("bird", (string)callResult.Parameters[1]);
        }
Exemple #3
0
        public void PoseWrapper_Shims_And_Executes_From_Empty_Method_Call_Calling_Instance_Method()
        {
            var a       = new TestClassCallingInstance();
            var wrapper = new PoseWrapper(a.EmptyMethod);

            var beforeDateTime = DateTime.Now;

            wrapper.Execute();
            var afterDateTime = DateTime.Now;

            var lastCallResults = wrapper.LastExecutionResults;

            Assert.IsNotNull(wrapper.LastExecutionResults);
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count);

            var result = wrapper.LastExecutionResults.First();

            Assert.AreEqual("EmptyMethod", result.Key.Name);
            Assert.AreEqual(typeof(InstanceMethodsTestClass), result.Key.DeclaringType);
            Assert.IsNotNull(result.Value);
            Assert.AreEqual(1, result.Value.Count);

            var callResult = result.Value.First();

            Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime);
            Assert.IsNotNull(callResult.Parameters);
            Assert.AreEqual(1, callResult.Parameters.Count());

            // verify this instance was the one most recently created
            // and therefore, was the one created in the method call
            // (which will work until/unless constructors are shimmed)
            var callResultInstance = (InstanceMethodsTestClass)callResult.Parameters[0];

            Assert.AreEqual(InstanceMethodsTestClassTracker.LastCreated.InstanceGuid, callResultInstance.InstanceGuid);
        }
Exemple #4
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_With_Multi_Params_And_Returns_Reference_Type_Calling_Instance_Method()
        {
            var a       = new TestClassCallingInstance();
            var wrapper = new PoseWrapper <List <int> >((Func <List <int>, string, DateTime, List <int> >)a.MethodWithMultiReferenceTypeParamsAndReturn);

            var beforeDateTime = DateTime.Now;
            var result         = wrapper.Execute(new object[] { new List <int> {
                                                                    4, 3, 2
                                                                }, "bird", DateTime.Today });
            var afterDateTime = DateTime.Now;

            Assert.IsTrue(new List <int>().SequenceEqual(result));

            var lastCallResults = wrapper.LastExecutionResults;

            Assert.IsNotNull(wrapper.LastExecutionResults);
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count);

            var executionResult = wrapper.LastExecutionResults.First();

            Assert.AreEqual("MethodWithMultiReferenceTypeParamsAndReturn", executionResult.Key.Name);
            Assert.AreEqual(typeof(InstanceMethodsTestClass), executionResult.Key.DeclaringType);
            Assert.IsNotNull(executionResult.Value);
            Assert.AreEqual(1, executionResult.Value.Count);

            var callResult = executionResult.Value.First();

            Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime);
            Assert.IsNotNull(callResult.Parameters);
            Assert.AreEqual(4, callResult.Parameters.Count());

            var callResultInstance = (InstanceMethodsTestClass)callResult.Parameters[0];

            Assert.AreEqual(InstanceMethodsTestClassTracker.LastCreated.InstanceGuid, callResultInstance.InstanceGuid);

            Assert.IsTrue(new List <int> {
                4, 3, 2
            }.SequenceEqual((List <int>)callResult.Parameters[1]));
            Assert.AreEqual("bird", (string)callResult.Parameters[2]);
            Assert.AreEqual(DateTime.Today, (DateTime)callResult.Parameters[3]);
        }
Exemple #5
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_Records_Multi_Parameters_Calling_Instance_Method()
        {
            var a       = new TestClassCallingInstance();
            var wrapper = new PoseWrapper((Action <int, int, string, List <bool> >)a.MethodWithMultiParams);

            var beforeDateTime = DateTime.Now;

            wrapper.Execute(new object[] { 1, 2, "bird", new List <bool> {
                                               true, false, true
                                           } });
            var afterDateTime = DateTime.Now;

            var lastCallResults = wrapper.LastExecutionResults;

            Assert.IsNotNull(wrapper.LastExecutionResults);
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count);

            var executionResult = wrapper.LastExecutionResults.First();

            Assert.AreEqual("MethodWithMultiParams", executionResult.Key.Name);
            Assert.AreEqual(typeof(InstanceMethodsTestClass), executionResult.Key.DeclaringType);
            Assert.IsNotNull(executionResult.Value);
            Assert.AreEqual(1, executionResult.Value.Count);

            var callResult = executionResult.Value.First();

            Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime);
            Assert.IsNotNull(callResult.Parameters);
            Assert.AreEqual(5, callResult.Parameters.Count());

            var callResultInstance = (InstanceMethodsTestClass)callResult.Parameters[0];

            Assert.AreEqual(InstanceMethodsTestClassTracker.LastCreated.InstanceGuid, callResultInstance.InstanceGuid);

            Assert.AreEqual(1, (int)callResult.Parameters[1]);
            Assert.AreEqual(2, (int)callResult.Parameters[2]);
            Assert.AreEqual("bird", (string)callResult.Parameters[3]);
            Assert.IsTrue(new List <bool> {
                true, false, true
            }.SequenceEqual((List <bool>)callResult.Parameters[4]));
        }