public void DefaultCompositeViewTypeFactory_ValidateViewType_ShouldAllowIViewT()
        {
            // Arrange

            // Act
            DefaultCompositeViewTypeFactory.ValidateViewType(typeof(IView <object>));

            // Assert
        }
        public void DefaultCompositeViewTypeFactory_ValidateViewType_ShouldAllowInheritorsOfIViewT()
        {
            // Arrange

            // Act
            DefaultCompositeViewTypeFactory.ValidateViewType(typeof(ValidateViewType_ITestViewT));

            // Assert
        }
        public void DefaultCompositeViewTypeFactory_ValidateViewType_ShouldThrowArgumentExceptionForNonPublicInterfaces()
        {
            // Arrange

            // Act
            DefaultCompositeViewTypeFactory.ValidateViewType(typeof(ValidateViewType_IPrivateView));

            // Assert
        }
        public void DefaultCompositeViewTypeFactory_ValidateViewType_ShouldThrowArgumentExceptionForNonIViewBasedInterfaces()
        {
            // Arrange

            // Act
            DefaultCompositeViewTypeFactory.ValidateViewType(typeof(IAsyncResult));

            // Assert
        }
        public void DefaultCompositeViewTypeFactory_ValidateViewType_ShouldThrowArgumentExceptionForClassTypes()
        {
            // Arrange

            // Act
            DefaultCompositeViewTypeFactory.ValidateViewType(typeof(System.Collections.Hashtable));

            // Assert
        }
        public void DefaultCompositeViewTypeFactory_GetCompositeViewParentType_ShouldReturnCorrectTypeForIView()
        {
            // Arrange

            // Act
            var type = DefaultCompositeViewTypeFactory.GetCompositeViewParentType(typeof(IView));

            // Assert
            Assert.AreEqual(typeof(CompositeView <IView>), type);
        }
        public void DefaultCompositeViewTypeFactory_BuildCompositeViewTypeInternal_ShouldReturnACompositeForIViewTThatImplementsICompositeView()
        {
            // Arrange

            // Act
            var type = DefaultCompositeViewTypeFactory.BuildCompositeViewTypeInternal(typeof(IView <object>));

            // Assert
            Assert.IsTrue(typeof(ICompositeView).IsAssignableFrom(type));
        }
        public void DefaultCompositeViewTypeFactory_BuildCompositeViewType_ShouldReturnCompositeForIView()
        {
            // Arrange
            var factory = new DefaultCompositeViewTypeFactory();

            // Act
            var type = factory.BuildCompositeViewType(typeof(IView));

            // Assert
            Assert.IsTrue(typeof(CompositeView <IView>).IsAssignableFrom(type));
        }
        public void DefaultCompositeViewTypeFactory_BuildCompositeViewTypeInternal_ShouldReturnACompositeForCustomEvents()
        {
            // Arrange

            // Act
            var type = DefaultCompositeViewTypeFactory.BuildCompositeViewTypeInternal(typeof(BuildCompositeViewTypeInternal_CustomEvents));

            // Assert
            Assert.IsTrue(typeof(ICompositeView).IsAssignableFrom(type));
            Assert.IsTrue(typeof(BuildCompositeViewTypeInternal_CustomEvents).IsAssignableFrom(type));
        }
        public void DefaultCompositeViewTypeFactory_BuildCompositeViewType_ShouldReturnSameTypeMultipleTimes()
        {
            // Arrange
            var factory = new DefaultCompositeViewTypeFactory();

            // Act
            var type1 = factory.BuildCompositeViewType(typeof(IView));
            var type2 = factory.BuildCompositeViewType(typeof(IView));

            // Assert
            Assert.IsTrue(type1 == type2);
        }