public void GetValidators()
        {
            // Arrange
            ModelMetadata     metadata          = GetMetadata();
            ControllerContext controllerContext = new ControllerContext();

            SimpleModelValidator[] allValidators = new SimpleModelValidator[] {
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator()
            };

            Mock <ModelValidatorProvider> provider1 = new Mock <ModelValidatorProvider>();

            provider1.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[0], allValidators[1]
            });

            Mock <ModelValidatorProvider> provider2 = new Mock <ModelValidatorProvider>();

            provider2.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[2], allValidators[3], allValidators[4]
            });

            ModelValidatorProviderCollection collection = new ModelValidatorProviderCollection();

            collection.Add(provider1.Object);
            collection.Add(provider2.Object);

            // Act
            IEnumerable <ModelValidator> returnedValidators = collection.GetValidators(metadata, controllerContext);

            // Assert
            CollectionAssert.AreEqual(allValidators, returnedValidators.ToArray());
        }
        public void GetValidatorsDelegatesToResolver()
        {
            // Arrange
            SimpleModelValidator[] allValidators = new SimpleModelValidator[] {
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator()
            };

            ModelMetadata     metadata          = GetMetadata();
            ControllerContext controllerContext = new ControllerContext();

            Mock <ModelValidatorProvider> resolverProvider1 = new Mock <ModelValidatorProvider>();

            resolverProvider1.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[0], allValidators[1]
            });

            Mock <ModelValidatorProvider> resolverprovider2 = new Mock <ModelValidatorProvider>();

            resolverprovider2.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[2], allValidators[3]
            });

            Resolver <IEnumerable <ModelValidatorProvider> > resolver = new Resolver <IEnumerable <ModelValidatorProvider> >();

            resolver.Current = new ModelValidatorProvider[] { resolverProvider1.Object, resolverprovider2.Object };

            ModelValidatorProviderCollection collection = new ModelValidatorProviderCollection(resolver);

            // Act
            IEnumerable <ModelValidator> returnedValidators = collection.GetValidators(metadata, controllerContext);

            // Assert
            CollectionAssert.AreEqual(allValidators, returnedValidators.ToArray());
        }
        public void GetValidators() {
            // Arrange
            ModelMetadata metadata = GetMetadata();
            ControllerContext controllerContext = new ControllerContext();

            SimpleModelValidator[] allValidators = new SimpleModelValidator[] {
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator()
            };

            Mock<ModelValidatorProvider> provider1 = new Mock<ModelValidatorProvider>();
            provider1.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[0], allValidators[1]
            });

            Mock<ModelValidatorProvider> provider2 = new Mock<ModelValidatorProvider>();
            provider2.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[2], allValidators[3], allValidators[4]
            });

            ModelValidatorProviderCollection collection = new ModelValidatorProviderCollection();
            collection.Add(provider1.Object);
            collection.Add(provider2.Object);

            // Act
            IEnumerable<ModelValidator> returnedValidators = collection.GetValidators(metadata, controllerContext);

            // Assert
            CollectionAssert.AreEqual(allValidators, returnedValidators.ToArray());
        }
        public void GetValidatorsDelegatesToResolver() {
            // Arrange
            SimpleModelValidator[] allValidators = new SimpleModelValidator[] {
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator(),
                new SimpleModelValidator()
            };

            ModelMetadata metadata = GetMetadata();
            ControllerContext controllerContext = new ControllerContext();

            Mock<ModelValidatorProvider> resolverProvider1 = new Mock<ModelValidatorProvider>();
            resolverProvider1.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[0], allValidators[1]
            });

            Mock<ModelValidatorProvider> resolverprovider2 = new Mock<ModelValidatorProvider>();
            resolverprovider2.Setup(p => p.GetValidators(metadata, controllerContext)).Returns(new ModelValidator[] {
                allValidators[2], allValidators[3]
            });
         
            Resolver<IEnumerable<ModelValidatorProvider>> resolver = new Resolver<IEnumerable<ModelValidatorProvider>>();
            resolver.Current = new ModelValidatorProvider[]{resolverProvider1.Object, resolverprovider2.Object };

            ModelValidatorProviderCollection collection = new ModelValidatorProviderCollection(resolver);

            // Act
            IEnumerable<ModelValidator> returnedValidators = collection.GetValidators(metadata, controllerContext);

            // Assert
            CollectionAssert.AreEqual(allValidators, returnedValidators.ToArray());
        }