示例#1
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]);
        }
示例#2
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]);
        }
示例#3
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_With_Reference_Type_Param_And_Returns_Reference_Type_Calling_Static_Method()
        {
            var a       = new TestClassCallingStatic();
            var wrapper = new PoseWrapper <List <int> >((Func <List <int>, List <int> >)a.MethodWithReferenceTypeParamsAndReturn);

            var beforeDateTime = DateTime.Now;
            var result         = wrapper.Execute(new object[] { new List <int> {
                                                                    4, 3, 2
                                                                } });
            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("MethodWithReferenceTypeParamsAndReturn", executionResult.Key.Name);
            Assert.AreEqual(typeof(StaticMethodsTestClass), 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(1, callResult.Parameters.Count());

            Assert.IsTrue(new List <int> {
                4, 3, 2
            }.SequenceEqual((List <int>)callResult.Parameters[0]));
        }
示例#4
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);
        }
示例#5
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_Records_Value_Type_Parameters_Calling_Static_Method()
        {
            var a       = new TestClassCallingStatic();
            var wrapper = new PoseWrapper((Action <int>)a.MethodWithValueTypeParam);

            var beforeDateTime = DateTime.Now;

            wrapper.Execute(new object[] { 5 });
            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("MethodWithValueTypeParam", executionResult.Key.Name);
            Assert.AreEqual(typeof(StaticMethodsTestClass), 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(1, callResult.Parameters.Count());

            var parameter = callResult.Parameters.First();

            Assert.AreEqual(5, (int)parameter);
        }
示例#6
0
        public void PoseWrapper_Shims_And_Executes_From_Instance_Call_And_Returns_Value_Calling_Static_Method()
        {
            var a       = new TestClassCallingStatic();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodWithReturn, null, WrapperOptions.None);

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

            Assert.AreEqual(0, result); // todo: custom values return

            var lastCallResults = wrapper.LastExecutionResults;

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

            var executionResult = wrapper.LastExecutionResults.First();

            Assert.AreEqual("MethodWithReturn", executionResult.Key.Name);
            Assert.AreEqual(typeof(StaticMethodsTestClass), 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(0, callResult.Parameters.Count());
        }
        public void PoseWrapper_Shims_And_Executes_From_Static_Call_With_Multi_Params_And_Returns_Reference_Type_Calling_Instance_Method()
        {
            var wrapper = new PoseWrapper<List<int>>((Func<List<int>, string, DateTime, List<int>>)TestClassCallingInstance.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]);
        }
示例#8
0
        public void PoseWrapper_Shims_And_Executes_From_Empty_Method_Call_Calling_Static_Method()
        {
            var a       = new TestClassCallingStatic();
            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(StaticMethodsTestClass), 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(0, callResult.Parameters.Count());
        }
示例#9
0
        public void PoseWrapper_SetReturn_Changes_Value_Of_Correct_Shim_On_Function_Call()
        {
            var a           = new TestClass();
            var wrapper     = new PoseWrapper <bool>((Func <bool>)a.CallTwoDifferentMethods, null, WrapperOptions.None);
            var methodInfo1 = typeof(StaticMethodsTestClass).GetMethod("MethodWithParamAndReturn");
            var methodInfo2 = typeof(StaticMethodsTestClass).GetMethod("MethodWithParamsAndReturn");

            wrapper.SetReturn(() => StaticMethodsTestClass.MethodWithParamAndReturn(Pose.Is.A <int>()), 3);
            wrapper.SetReturn(() => StaticMethodsTestClass.MethodWithParamsAndReturn(Pose.Is.A <int>(), Pose.Is.A <int>()), 7);

            var preCallDateTime = DateTime.Now;
            var result          = wrapper.Execute();

            Assert.IsTrue(result);

            Assert.AreEqual(2, wrapper.LastExecutionResults.Count);
            var resultsMethodWithParamAndReturn  = wrapper.LastExecutionResults.First(ler => ler.Key.Equals(methodInfo1)).Value;
            var resultsMethodWithParamsAndReturn = wrapper.LastExecutionResults.First(ler => ler.Key.Equals(methodInfo2)).Value;

            Assert.AreEqual(1, resultsMethodWithParamAndReturn.Count);
            Assert.AreEqual(1, resultsMethodWithParamsAndReturn.Count);
            var resultsMethodWithParamAndReturnData  = resultsMethodWithParamAndReturn[0];
            var resultsMethodWithParamsAndReturnData = resultsMethodWithParamsAndReturn[0];

            Assert.IsTrue(resultsMethodWithParamAndReturnData.CalledAt > preCallDateTime);
            Assert.IsTrue(resultsMethodWithParamsAndReturnData.CalledAt > resultsMethodWithParamAndReturnData.CalledAt);
            Assert.AreEqual(5, (int)resultsMethodWithParamAndReturnData.Parameters[0]);
            Assert.AreEqual(7, (int)resultsMethodWithParamsAndReturnData.Parameters[0]);
            Assert.AreEqual(1, (int)resultsMethodWithParamsAndReturnData.Parameters[1]);
        }
        public void PoseWrapper_Shims_And_Executes_From_Static_Call_With_Multi_Params_And_Returns_Value_Calling_Static_Method()
        {
            var wrapper = new PoseWrapper<int>((Func<int, int, int>)TestClassCallingStatic.MethodWithParamsAndReturn);

            var beforeDateTime = DateTime.Now;
            var result = wrapper.Execute(new object[] { 5, 6 });
            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("MethodWithParamsAndReturn", executionResult.Key.Name);
            Assert.AreEqual(typeof(StaticMethodsTestClass), 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());

            Assert.AreEqual(5, (int)callResult.Parameters[0]);
            Assert.AreEqual(6, (int)callResult.Parameters[1]);
        }
示例#11
0
        public void PoseWrapper_Multiple_Calls_To_Same_Method_Record_Separate_Call_Results()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.CallSameMethodMultipleTimes, null, WrapperOptions.None);

            wrapper.SetReturn("StaticMethodsTestClass.MethodWithParamAndReturn", 1);
            var currentCallDateTime = DateTime.Now;
            var result = wrapper.Execute();

            Assert.AreEqual(5, result); // method is called 5 times, returning 1 each time

            // verify all call results are correct
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count); // one method was called
            var methodInfo = typeof(StaticMethodsTestClass).GetMethod("MethodWithParamAndReturn");

            Assert.AreEqual(methodInfo, wrapper.LastExecutionResults.First().Key);

            var callResults = wrapper.LastExecutionResults.First().Value;

            Assert.AreEqual(5, callResults.Count); // that method was called five times
            for (var i = 0; i < 5; i++)
            {
                var callResult = callResults[i];
                Assert.IsTrue(currentCallDateTime < callResult.CalledAt);
                // params count backwards from 10
                Assert.AreEqual(10 - i, (int)callResult.Parameters[0]);
                currentCallDateTime = callResult.CalledAt;
            }
        }
示例#12
0
        public void PoseWrapper_Multiple_Calls_To_Different_Instances_Of_Method_Record_Separate_Call_Results()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.CallDifferentInstancesOfSameMethod, null, WrapperOptions.None);

            wrapper.SetReturn("TestClass.InstanceMethodWithParamAndReturn", 1);
            var preCallDateTime = DateTime.Now;
            var result          = wrapper.Execute();

            Assert.AreEqual(2, result);

            // verify all call results are correct
            Assert.AreEqual(1, wrapper.LastExecutionResults.Count); // one method was called
            var methodInfo = typeof(TestClass).GetMethod("InstanceMethodWithParamAndReturn");

            Assert.AreEqual(methodInfo, wrapper.LastExecutionResults.First().Key);

            var callResults = wrapper.LastExecutionResults.First().Value;

            Assert.AreEqual(2, callResults.Count);
            var call1 = callResults[0];
            var call2 = callResults[1];

            Assert.IsTrue(call1.CalledAt > preCallDateTime);
            Assert.IsTrue(call2.CalledAt > call1.CalledAt);
            Assert.IsInstanceOfType(call1.Parameters[0], typeof(TestClass));
            Assert.IsInstanceOfType(call2.Parameters[0], typeof(TestClass));
            Assert.AreNotEqual((TestClass)call1.Parameters[0], (TestClass)call2.Parameters[0]);
            Assert.AreNotEqual(((TestClass)call1.Parameters[0]).ReferenceGuid, ((TestClass)call2.Parameters[0]).ReferenceGuid);
            Assert.AreEqual(1, (int)call1.Parameters[1]);
            Assert.AreEqual(2, (int)call2.Parameters[1]);
        }
        public void PoseWrapper_Shims_And_Executes_From_Static_Call_Records_Multi_Parameters_Calling_Instance_Method()
        {
            var wrapper = new PoseWrapper((Action<int, int, string, List<bool>>)TestClassCallingInstance.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]));
        }
示例#14
0
        public void PoseWrapper_SetReturn_Changes_Value_Of_Correct_Shim_Via_Method_Name_With_Class_Specifier()
        {
            var a           = new TestClass();
            var wrapper     = new PoseWrapper <bool>((Func <bool>)a.CallTwoDifferentMethodsWithSameName, null, WrapperOptions.None);
            var methodInfo1 = typeof(TestStaticMethodSameNameOne).GetMethod("MethodWithSameName");
            var methodInfo2 = typeof(TestStaticMethodSameNameTwo).GetMethod("MethodWithSameName");

            wrapper.SetReturn("TestStaticMethodSameNameOne.MethodWithSameName", 3);
            wrapper.SetReturn("TestStaticMethodSameNameTwo.MethodWithSameName", 7);

            var preCallDateTime = DateTime.Now;
            var result          = wrapper.Execute();

            Assert.IsTrue(result);

            Assert.AreEqual(2, wrapper.LastExecutionResults.Count);
            var resultsMethodWithSameNameOne = wrapper.LastExecutionResults.First(ler => ler.Key.Equals(methodInfo1)).Value;
            var resultsMethodWithSameNameTwo = wrapper.LastExecutionResults.First(ler => ler.Key.Equals(methodInfo2)).Value;

            Assert.AreEqual(1, resultsMethodWithSameNameOne.Count);
            Assert.AreEqual(1, resultsMethodWithSameNameTwo.Count);
            var resultsMethodWithSameNameOneData = resultsMethodWithSameNameOne[0];
            var resultsMethodWithSameNameTwoData = resultsMethodWithSameNameTwo[0];

            Assert.IsTrue(resultsMethodWithSameNameOneData.CalledAt > preCallDateTime);
            Assert.IsTrue(resultsMethodWithSameNameTwoData.CalledAt > resultsMethodWithSameNameOneData.CalledAt);
        }
示例#15
0
        public void PoseWrapper_Does_Not_Shim_String_Concat()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <string>((Func <string>)a.MethodWithStringConcat, null, WrapperOptions.None);
            var result  = wrapper.Execute();

            Assert.AreEqual("birdstone", result);
            Assert.IsFalse(wrapper.LastExecutionResults.Any());
        }
示例#16
0
        public void PoseWrapper_Does_Not_Shim_Constructors_When_Flag_Not_Set()
        {
            var wrapper         = new PoseWrapper <InstanceMethodsTestClass>((Func <InstanceMethodsTestClass>)TestClass.ConstructTestClass, null, WrapperOptions.None);
            var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes);

            var result = wrapper.Execute();

            var callResults = wrapper.ResultsFor(constructorInfo);

            Assert.IsNull(callResults);
        }
示例#17
0
        public void PoseWrapper_Shims_Constructors_When_Flag_Is_Set()
        {
            var wrapper         = new PoseWrapper <InstanceMethodsTestClass>((Func <InstanceMethodsTestClass>)TestClass.ConstructTestClass, null, WrapperOptions.ShimConstructors);
            var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes);

            var result = wrapper.Execute();

            var callResults = wrapper.ResultsFor(constructorInfo);

            Assert.IsNotNull(callResults);
            Assert.AreEqual(1, callResults.Count);
            Assert.IsTrue(callResults.SequenceEqual(wrapper.LastExecutionResults.FirstOrDefault(m => m.Key == constructorInfo).Value));
        }
示例#18
0
        public void PoseWrapper_Returns_Results_Per_Method_By_Expression()
        {
            var a          = new TestClass();
            var wrapper    = new PoseWrapper <bool>((Func <bool>)a.CallTwoDifferentMethods, null, WrapperOptions.None);
            var methodInfo = typeof(StaticMethodsTestClass).GetMethod("MethodWithParamsAndReturn");

            var result = wrapper.Execute();

            var callResults = wrapper.ResultsFor(() => StaticMethodsTestClass.MethodWithParamsAndReturn(Pose.Is.A <int>(), Pose.Is.A <int>()));

            Assert.IsNotNull(callResults);
            Assert.AreEqual(1, callResults.Count);
            Assert.IsTrue(callResults.SequenceEqual(wrapper.LastExecutionResults.FirstOrDefault(m => m.Key == methodInfo).Value));
        }
示例#19
0
        public void PoseWrapper_Shims_Private_Methods_When_Option_Is_Set()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodThatCallsPrivateMethod, null, WrapperOptions.ShimPrivateMembers);

            wrapper.SetReturn("APrivateMethod", 6);
            var result = wrapper.Execute();

            Assert.AreEqual(6, result);
            var callResults = wrapper.LastExecutionResults.First(l => l.Key.Name.Equals("APrivateMethod")).Value;

            Assert.IsNotNull(callResults);
            Assert.AreEqual(1, callResults.Count);
        }
示例#20
0
        public void PoseWrapper_Excepts_On_Custom_Value_For_Constructors_When_Flag_Not_Set()
        {
            var a               = new InstanceMethodsTestClass();
            var wrapper         = new PoseWrapper <InstanceMethodsTestClass>((Func <InstanceMethodsTestClass>)TestClass.ConstructTestClass, null, WrapperOptions.None);
            var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes);

            try
            {
                wrapper.SetReturn(constructorInfo, a);
                Assert.Fail("Expected an InvalidOperationException.");
            }
            catch (InvalidOperationException e)
            {
                Assert.AreEqual(string.Format(PoseWrapper.CouldNotFindMatchingShimError, constructorInfo), e.Message);
            }
        }
示例#21
0
        public void PoseWrapper_Does_Not_Shim_Getter_Setter_When_Option_Not_Set()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodCallingGetterSetter);

            try
            {
                wrapper.SetReturn(() => a.GetterSetter, 5);
                Assert.Fail("Expected exception.");
            }
            catch (InvalidOperationException e)
            {
                var methodInfo = a.GetType().GetMethod("get_GetterSetter");
                Assert.AreEqual(e.Message, string.Format(PoseWrapper.CouldNotFindMatchingShimError, methodInfo));
            }
        }
示例#22
0
        public void PoseWrapper_Does_Not_Shim_Private_Methods_When_Option_Not_Set()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodThatCallsPrivateMethod, null, WrapperOptions.None);

            try
            {
                wrapper.SetReturn("APrivateMethod", 6);
                Assert.Fail("Expected exception.");
            }
            catch (InvalidOperationException)
            {
                // expected
            }

            var result = wrapper.Execute();

            Assert.AreEqual(5, result);
            Assert.IsFalse(wrapper.LastExecutionResults.Any(l => l.Key.Name.Equals("APrivateMethod")));
        }
示例#23
0
        public void PoseWrapper_SetReturn_Changes_Value_Of_Correct_Shim_On_Getter_Setter_When_Option_Is_Set()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodCallingGetterSetter, null, WrapperOptions.ShimSpecialNames);

            wrapper.SetReturn(() => a.GetterSetter, 5);

            var preCallDateTime = DateTime.Now;
            var result          = wrapper.Execute();

            Assert.AreEqual(result, 5);

            Assert.AreEqual(2, wrapper.LastExecutionResults.Count);
            var resultsInstanceMethodWithParamAndReturn = wrapper.LastExecutionResults.First(ler => ler.Key.Name.Equals("InstanceMethodWithParamAndReturn")).Value;
            var resultsGetterSetter = wrapper.LastExecutionResults.First(ler => ler.Key.Name.Equals("get_GetterSetter")).Value;

            Assert.AreEqual(1, resultsGetterSetter.Count);
            Assert.IsTrue(resultsGetterSetter.First().CalledAt > preCallDateTime);
            Assert.AreEqual(1, resultsInstanceMethodWithParamAndReturn.Count);
            Assert.IsTrue(resultsGetterSetter.First().CalledAt > resultsInstanceMethodWithParamAndReturn.First().CalledAt);
        }
示例#24
0
        public void PoseWrapper_Shims_Calls_Within_Private_Methods_When_Option_Not_Set()
        {
            var a       = new TestClass();
            var wrapper = new PoseWrapper <int>((Func <int>)a.MethodThatCallsPrivateMethodWithCalls, null, WrapperOptions.None);

            try
            {
                wrapper.SetReturn("APrivateMethodWithCalls", 6);
                Assert.Fail("Expected exception.");
            }
            catch (InvalidOperationException)
            {
                // expected
            }

            wrapper.SetReturn("MethodWithParamAndReturn", 6);
            var result = wrapper.Execute();

            Assert.AreEqual(6, result);
            Assert.IsFalse(wrapper.LastExecutionResults.Any(l => l.Key.Name.Equals("APrivateMethodWithCalls")));
            var callResult = wrapper.ResultsFor("MethodWithParamAndReturn").First();

            Assert.AreEqual(5, callResult.Parameters[0]); // the value passed in private method
        }
示例#25
0
        public void PoseWrapper_Creates_One_Shim_Per_Unique_Method_Called_Multiple_Times()
        {
            var wrapper = new PoseWrapper(new TestClass().CallTheSameMethodTwice);

            Assert.AreEqual(1, wrapper.ShimmedMembers.Count);
        }