public void ShimmedMethod_Generates_From_Instance_Call_With_Params_And_Returns_Reference_Type() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod <List <int> >(typeof(InstanceMethodsTestClass).GetMethod("MethodWithParamsAndReferenceTypeReturn")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; List <int> value = null; PoseContext.Isolate(() => { value = a.MethodWithParamsAndReferenceTypeReturn(2, 4); }, new[] { shimmedMethod.Shim }); Assert.IsNotNull(value); Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); Assert.AreEqual(2, (int)callResult.Parameters[1]); Assert.AreEqual(4, (int)callResult.Parameters[2]); }
public void ShimmedMethod_Generates_From_Empty_Instance_Virtual_Method_Call() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod(typeof(InstanceMethodsTestClass).GetMethod("EmptyVirtualMethod")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; PoseContext.Isolate(() => { a.EmptyVirtualMethod(); }, new[] { shimmedMethod.Shim }); Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); }
public void ShimmedMethod_Generates_From_Instance_Call_Records_String_Parameters() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod(typeof(InstanceMethodsTestClass).GetMethod("MethodWithStringParam")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; PoseContext.Isolate(() => { a.MethodWithStringParam("bird"); }, new[] { shimmedMethod.Shim }); Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); var expectedParam = callResult.Parameters[1]; Assert.AreEqual("bird", (string)expectedParam); }
public void ShimmedMethod_Generates_From_Instance_Call_And_Returns_Value() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod <int>(typeof(InstanceMethodsTestClass).GetMethod("MethodWithReturn")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; int value = -1; PoseContext.Isolate(() => { value = a.MethodWithReturn(); }, new[] { shimmedMethod.Shim }); Assert.AreEqual(0, value); // Shimmy will set to default for that value type Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); }
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 GetReturnValueAndClearRunningMethod_Returns_Correct_Custom_Value_for_Constructor() { var a = new InstanceMethodsTestClass(); ShimLibrary.ClearRunningMethod(); var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes); _currentShimmedMethod = new ShimmedConstructor <InstanceMethodsTestClass>(constructorInfo); _currentReferenceGuid = ShimLibrary.Add(_currentShimmedMethod); ShimLibrary.SetRunningMethod(_currentReferenceGuid.ToString()); _currentShimmedMethod.ReturnValue = a; var result = ShimLibrary.GetReturnValueAndClearRunningMethod <InstanceMethodsTestClass>(); Assert.AreEqual(a.InstanceGuid, result.InstanceGuid); Assert.AreEqual(a, result); }
public void PoseWrapper_Sets_Custom_Value_On_Constructors_When_Flag_Is_Set() { var a = new InstanceMethodsTestClass(); var wrapper = new PoseWrapper <InstanceMethodsTestClass>((Func <InstanceMethodsTestClass>)TestClass.ConstructTestClass, null, WrapperOptions.ShimConstructors); var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes); wrapper.SetReturn(constructorInfo, a); 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)); Assert.AreEqual(a, result); Assert.AreEqual(a.InstanceGuid, result.InstanceGuid); }
public void ShimmedConstructor_Returns_New_Instance_If_Parameterless_Constructor_Available() { var constructorInfo = typeof(InstanceMethodsTestClass).GetConstructor(Type.EmptyTypes); var shimmedConstructor = new ShimmedConstructor <InstanceMethodsTestClass>(constructorInfo); Assert.IsNotNull(shimmedConstructor); Assert.IsNotNull(shimmedConstructor.Constructor); Assert.IsNotNull(shimmedConstructor.Member); Assert.IsNotNull(shimmedConstructor.Shim); InstanceMethodsTestClass a = null; PoseContext.Isolate(() => { a = new InstanceMethodsTestClass(); }, shimmedConstructor.Shim); Assert.AreEqual(1, shimmedConstructor.CallResults.Count); Assert.IsNotNull(shimmedConstructor.CallResults.FirstOrDefault()); Assert.IsNotNull(a); }
public void ShimmedMethod_Generates_From_Instance_Call_Records_Multi_Parameters() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod(typeof(InstanceMethodsTestClass).GetMethod("MethodWithMultiParams")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; PoseContext.Isolate(() => { a.MethodWithMultiParams(5, 6, "bird", new List <bool> { true, false, true }); }, new[] { shimmedMethod.Shim }); Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); Assert.AreEqual(5, (int)callResult.Parameters[1]); Assert.AreEqual(6, (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 ShimmedMethod_Generates_From_Virtual_Instance_Call_With_Multi_Params_And_Returns_Reference_Type() { var a = new InstanceMethodsTestClass(); var shimmedMethod = new ShimmedMethod <List <int> >(typeof(InstanceMethodsTestClass).GetMethod("VirtualMethodWithMultiReferenceTypeParamsAndReturn")); Assert.IsNotNull(shimmedMethod); Assert.IsNotNull(shimmedMethod.Method); Assert.IsNotNull(shimmedMethod.Shim); var beforeDateTime = DateTime.Now; List <int> value = null; PoseContext.Isolate(() => { value = a.VirtualMethodWithMultiReferenceTypeParamsAndReturn(new List <int> { 3, 2, 1 }, "bird", DateTime.Today); }, new[] { shimmedMethod.Shim }); Assert.IsNotNull(value); Assert.AreEqual(1, shimmedMethod.CallResults.Count); var callResult = shimmedMethod.CallResults.First(); Assert.IsNotNull(callResult.Parameters); var afterDateTime = DateTime.Now; Assert.IsNotNull(callResult.CalledAt); Assert.IsTrue(beforeDateTime < callResult.CalledAt && callResult.CalledAt < afterDateTime); // first parameter should be instance var instanceParam = callResult.Parameters[0] as InstanceMethodsTestClass; Assert.IsNotNull(instanceParam); Assert.AreEqual(a.InstanceGuid, instanceParam.InstanceGuid); Assert.IsTrue(((List <int>)callResult.Parameters[1]).SequenceEqual(new List <int> { 3, 2, 1 })); Assert.AreEqual("bird", (string)callResult.Parameters[2]); Assert.AreEqual(DateTime.Today, (DateTime)callResult.Parameters[3]); }
public void MethodWithValueTypeParam(int a) { var inst = new InstanceMethodsTestClass(); inst.MethodWithValueTypeParam(a); }
public List <int> MethodWithMultiReferenceTypeParamsAndReturn(List <int> a, string b, DateTime c) { var inst = new InstanceMethodsTestClass(); return(inst.MethodWithMultiReferenceTypeParamsAndReturn(a, b, c)); }
public List <int> MethodWithReferenceTypeParamsAndReturn(List <int> args) { var inst = new InstanceMethodsTestClass(); return(inst.MethodWithReferenceTypeParamsAndReturn(args)); }
public List <int> MethodWithParamsAndReferenceTypeReturn(int param1, int param2) { var inst = new InstanceMethodsTestClass(); return(inst.MethodWithParamsAndReferenceTypeReturn(param1, param2)); }
public int MethodWithParamsAndReturn(int param1, int param2) { var inst = new InstanceMethodsTestClass(); return(inst.MethodWithParamsAndReturn(param1, param2)); }
public int MethodWithReturn() { var inst = new InstanceMethodsTestClass(); return(inst.MethodWithReturn()); }
public void MethodWithMultiParams(int a, int b, string c, List <bool> d) { var inst = new InstanceMethodsTestClass(); inst.MethodWithMultiParams(a, b, c, d); }
public void MethodWithObjectParam(List <bool> l) { var inst = new InstanceMethodsTestClass(); inst.MethodWithObjectParam(l); }
public void EmptyMethod() { var inst = new InstanceMethodsTestClass(); inst.EmptyMethod(); }
public void MethodWithStringParam(string b) { var inst = new InstanceMethodsTestClass(); inst.MethodWithStringParam(b); }
public static int MethodWithParamAndReturn(int param1) { var inst = new InstanceMethodsTestClass(); return inst.MethodWithParamAndReturn(param1); }