public void ThrowingFromInterceptedMethodStillRunsAllHandlers() { MethodInfo thrower = typeof(ClassWithDefaultCtor).GetMethod("NotImplemented"); ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); IInterceptingProxy pm = (IInterceptingProxy)instance; CallCountHandler handler = new CallCountHandler(); PostCallCountHandler postHandler = new PostCallCountHandler(); HandlerPipeline pipeline = new HandlerPipeline(new ICallHandler[] { postHandler, handler }); PipelineManager manager = new PipelineManager(); manager.SetPipeline(thrower, pipeline); pm.AddInterceptionBehavior(new PolicyInjectionBehavior(manager)); try { instance.NotImplemented(); Assert.Fail("Should have thrown before getting here"); } catch (NotImplementedException) { // We're expecting this one } Assert.AreEqual(1, handler.CallCount); Assert.AreEqual(1, postHandler.CallsCompleted); }
public void CanInterceptVoidNoArgMethods() { ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); instance.MethodOne(); Assert.IsTrue(instance.OneWasCalled); }
public void CanAddInterceptionBehaviorsToPipeline() { ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); IInterceptingProxy pm = (IInterceptingProxy)instance; CallCountInterceptionBehavior interceptor = new CallCountInterceptionBehavior(); pm.AddInterceptionBehavior(interceptor); }
public void CanInterceptEventsMethods() { CallCountInterceptionBehavior interceptor = new CallCountInterceptionBehavior(); ClassWithAVirtualEvent instance = WireupHelper.GetInterceptingInstance <ClassWithAVirtualEvent>(); ((IInterceptingProxy)instance).AddInterceptionBehavior(interceptor); instance.SomeEvent += (sender, args) => { }; Assert.AreEqual(1, interceptor.CallCount); }
public void FiringAnEventIsNotIntercepted() { CallCountInterceptionBehavior interceptor = new CallCountInterceptionBehavior(); ClassWithAVirtualEvent instance = WireupHelper.GetInterceptingInstance <ClassWithAVirtualEvent>(); ((IInterceptingProxy)instance).AddInterceptionBehavior(interceptor); instance.SomeEvent += (sender, args) => { }; instance.TriggerIt(); Assert.AreEqual(1, interceptor.CallCount); }
public void CanAddHandlersToPipeline() { MethodInfo methodOne = typeof(ClassWithDefaultCtor).GetMethod("MethodOne"); ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); IInterceptingProxy pm = (IInterceptingProxy)instance; CallCountHandler handler = new CallCountHandler(); HandlerPipeline pipeline = new HandlerPipeline(new CallCountHandler[] { handler }); pm.SetPipeline(methodOne, pipeline); }
public void CanInterceptClassThatHasMultipleConstructors() { ClassWithMultipleCtors defaultInstance = WireupHelper.GetInterceptingInstance <ClassWithMultipleCtors>(); Assert.IsTrue(defaultInstance.DefaultCalled); ClassWithMultipleCtors intInstance = WireupHelper.GetInterceptingInstance <ClassWithMultipleCtors>(42); Assert.AreEqual(42, intInstance.IntValue); Assert.IsFalse(intInstance.DefaultCalled); ClassWithMultipleCtors bothInstance = WireupHelper.GetInterceptingInstance <ClassWithMultipleCtors>(51, "Hello"); Assert.AreEqual(51, bothInstance.IntValue); Assert.AreEqual("Hello", bothInstance.StringValue); Assert.IsFalse(bothInstance.DefaultCalled); }
public void CallingMethodInvokesHandlers() { MethodInfo methodOne = typeof(ClassWithDefaultCtor).GetMethod("MethodOne"); ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); IInterceptingProxy pm = (IInterceptingProxy)instance; CallCountHandler handler = new CallCountHandler(); PostCallCountHandler postHandler = new PostCallCountHandler(); HandlerPipeline pipeline = new HandlerPipeline(new ICallHandler[] { postHandler, handler }); pm.SetPipeline(methodOne, pipeline); instance.MethodOne(); Assert.AreEqual(1, handler.CallCount); Assert.AreEqual(1, postHandler.CallsCompleted); }
public void InterceptingClassImplementsIInterceptingProxy() { ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); Assert.IsTrue(instance is IInterceptingProxy); }
public void CanCreateInterceptingClassOverClassWithoutDefaultConstructor() { ClassWithOneParamCtor instance = WireupHelper.GetInterceptingInstance <ClassWithOneParamCtor>(37); Assert.AreEqual(37, instance.CtorValue); }
public void InterceptingClassCallsBaseClassConstructor() { ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); Assert.IsTrue(instance.CtorWasCalled); }
public void CanCreateInterceptingClassOverClassWithDefaultConstructor() { ClassWithDefaultCtor instance = WireupHelper.GetInterceptingInstance <ClassWithDefaultCtor>(); Assert.AreNotSame(typeof(ClassWithDefaultCtor), instance.GetType()); }