public void CannotInterceptFinalMethodThatDoesNotBelongToAnInterface() { DoesNotImplementInterfaceTestObject target = new DoesNotImplementInterfaceTestObject(); target.Location = "Paris"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); // Location is final and doesn't belong to an interface so can't proxy. // method call goes directly to the proxy // and will not have access to the valid _location field Assert.IsNull(proxy.Location); Assert.AreEqual(0, ni.Count); }
public void InterceptInheritedVirtualMethods() { DoesNotImplementInterfaceTestObject target = new DerivedDoesNotImplementInterfaceTestObject(); target.Name = "Bruno"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); // GetName() calls underlying protected "GetNameInternal()" which calls get_Name Assert.AreEqual(target.Name, proxy.GetName(), "Incorrect name"); proxy.Name = "Bruno Baia"; Assert.AreEqual("Bruno Baia", proxy.Name, "Incorrect name"); Assert.AreEqual(3, ni.Count); }
public void InterceptVirtualMethod() { DoesNotImplementInterfaceTestObject target = new DoesNotImplementInterfaceTestObject(); target.Name = "Bruno"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); Assert.AreEqual(target.Name, proxy.Name, "Incorrect name"); proxy.Name = "Bruno Baia"; Assert.AreEqual("Bruno Baia", proxy.Name, "Incorrect name"); Assert.AreEqual(3, ni.Count); }
public void CannotInterceptFinalMethodThatDoesNotBelongToAnInterface() { DoesNotImplementInterfaceTestObject target = new DoesNotImplementInterfaceTestObject(); target.Location = "Paris"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); // Location is final and doesn't belong to an interface so can't proxy. // method call goes directly to the proxy // and will not have access to the valid _location field Assert.IsNull(proxy.Location); Assert.AreEqual(0, ni.Count); }
public void InterceptProtectedVirtualMethod() { DoesNotImplementInterfaceTestObject target = new DoesNotImplementInterfaceTestObject(); target.Name = "Bruno"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); // GetName() calls underlying protected "GetNameInternal()" which calls get_Name Assert.AreEqual(target.Name, proxy.GetName(), "Incorrect name"); target.Name = "Bruno Baia"; Assert.AreEqual("Bruno Baia", proxy.GetName(), "Incorrect name"); Assert.AreEqual(2, ni.Count); }
public void InterceptVirtualMethod() { DoesNotImplementInterfaceTestObject target = new DoesNotImplementInterfaceTestObject(); target.Name = "Bruno"; mockTargetSource.SetTarget(target); NopInterceptor ni = new NopInterceptor(); AdvisedSupport advised = new AdvisedSupport(); advised.TargetSource = mockTargetSource; advised.AddAdvice(ni); DoesNotImplementInterfaceTestObject proxy = CreateProxy(advised) as DoesNotImplementInterfaceTestObject; Assert.IsNotNull(proxy); Assert.AreEqual(target.Name, proxy.Name, "Incorrect name"); proxy.Name = "Bruno Baia"; Assert.AreEqual("Bruno Baia", proxy.Name, "Incorrect name"); Assert.AreEqual(3, ni.Count); }