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]); }
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]); }
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])); }
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); }
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); }
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]); }
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()); }
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]); }
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; } }
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])); }
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); }
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()); }
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); }
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)); }
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)); }
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); }
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); } }
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)); } }
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"))); }
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); }
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 }
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); }