Represents a delegate proxy definition.
Inheritance: ProxyDefinitionBase
        public void AcceptVisitorTest()
        {
            // Arrange
            var proxyDefinition = new DelegateProxyDefinition(typeof (Action), new[] {typeof (IOne), typeof (ITwo), typeof (IOneTwo)});

            // Act
            var proxyDefinitionVisitor = new CollectingProxyDefinitionVisitor();

            proxyDefinition.AcceptVisitor(proxyDefinitionVisitor);

            // Assert
            Assert.That(proxyDefinition.DeclaringType, Is.EqualTo(typeof (Action)));
            Assert.That(proxyDefinition.ParentType, Is.EqualTo(typeof (object)));
            Assert.That(proxyDefinition.ImplementedInterfaces.Count(), Is.EqualTo(4));
            Assert.That(proxyDefinition.ImplementedInterfaces, Contains.Item(typeof (IBase)));
            Assert.That(proxyDefinition.ImplementedInterfaces, Contains.Item(typeof (IOne)));
            Assert.That(proxyDefinition.ImplementedInterfaces, Contains.Item(typeof (ITwo)));
            Assert.That(proxyDefinition.ImplementedInterfaces, Contains.Item(typeof (IOneTwo)));
            Assert.That(proxyDefinitionVisitor.InterfaceTypes.Count, Is.EqualTo(4));
            Assert.That(proxyDefinitionVisitor.InterfaceTypes, Contains.Item(typeof (IBase)));
            Assert.That(proxyDefinitionVisitor.InterfaceTypes, Contains.Item(typeof (IOne)));
            Assert.That(proxyDefinitionVisitor.InterfaceTypes, Contains.Item(typeof (ITwo)));
            Assert.That(proxyDefinitionVisitor.InterfaceTypes, Contains.Item(typeof (IOneTwo)));

            Assert.That(proxyDefinitionVisitor.ConstructorInfos.Count, Is.EqualTo(1));

            Assert.That(proxyDefinitionVisitor.EventInfos.Count, Is.EqualTo(3));

            Assert.That(proxyDefinitionVisitor.PropertyInfos.Count, Is.EqualTo(6));

            Assert.That(proxyDefinitionVisitor.MethodInfos.Count, Is.EqualTo(8));
        }
        public void EqualsWithDeclaringInterfaceTest()
        {
            // Arrange
            var firstProxyDefinition = new DelegateProxyDefinition(typeof (Action), Type.EmptyTypes);
            var secondProxyDefinition = new DelegateProxyDefinition(typeof (Action), new[] {typeof (ICloneable)});

            // Act
            var equals = firstProxyDefinition.Equals(secondProxyDefinition);

            // Assert
            Assert.That(equals, Is.True);
        }
        public void EqualsWithoutInterfacesTest()
        {
            // Arrange
            var firstProxyDefinition = new DelegateProxyDefinition(typeof (Action), Type.EmptyTypes);
            var secondProxyDefinition = new DelegateProxyDefinition(typeof (Action), Type.EmptyTypes);

            // Act
            var equals = firstProxyDefinition.Equals(secondProxyDefinition);

            // Assert
            Assert.That(equals, Is.True);
        }
        public void EqualsWithSwappedInterfacesTest()
        {
            // Arrange
            var firstProxyDefinition = new DelegateProxyDefinition(typeof (Action), new[] {typeof (IOne), typeof (ITwo)});
            var secondProxyDefinition = new DelegateProxyDefinition(typeof (Action), new[] {typeof (ITwo), typeof (IOne)});

            // Act
            var equals = firstProxyDefinition.Equals(secondProxyDefinition);

            // Assert
            Assert.That(equals, Is.True);
        }