public void should_return_false_and_have_collection()
        {
            var instance = new ValidationTestClass();
            var validator = new DataAnnotationsValidator();

            Assert.IsFalse(validator.TryValidate(instance));
            Assert.That(validator.ErrorCollection.Count > 0);
        }
        public void should_return_true_and_error_collection_should_be_null()
        {
            var instance = new ValidationTestClass
                           	{
                           		RequiredField = "Has Value"
                           	};
            var validator = new DataAnnotationsValidator();

            Assert.IsTrue(validator.TryValidate(instance));
            Assert.That(validator.ErrorCollection.Count == 0);
        }
        public void DataValidationNotificationTest()
        {
            int NotifyCount = 0;
            var testClass   = new ValidationTestClass();

            testClass.ErrorsChanged += (d, e) =>
            {
                if (e.PropertyName == nameof(testClass.ZipCode))
                {
                    NotifyCount++;
                }
            };

            Assert.True(testClass.HasErrors);
            var errors = testClass.GetErrors(nameof(testClass.ZipCode)).OfType <string>().ToArray();

            Assert.Single(errors);
            Assert.Contains("Empty", errors);
            Assert.Equal(0, NotifyCount);

            testClass.ZipCode = " 12345";
            errors            = testClass.GetErrors(nameof(testClass.ZipCode)).OfType <string>().ToArray();
            Assert.True(testClass.HasErrors);
            Assert.Equal(2, errors.Length);
            Assert.Contains("Length", errors);
            Assert.Contains("Invalid", errors);
            Assert.Equal(1, NotifyCount);

            testClass.ZipCode = "12345";
            errors            = testClass.GetErrors(nameof(testClass.ZipCode)).OfType <string>().ToArray();
            Assert.True(testClass.HasErrors);
            Assert.Single(errors);
            Assert.Contains("Length", errors);
            Assert.Equal(2, NotifyCount);

            testClass.ZipCode = "1234";
            errors            = testClass.GetErrors(nameof(testClass.ZipCode))?.OfType <string>().ToArray();
            Assert.False(testClass.HasErrors);
            Assert.Null(errors);
        }