public void IDataWarningInfo_FieldWithWarning()
            {
                var obj        = new ValidationTestModel();
                var validation = (IValidatableModel)obj;

                obj.WarningWhenEmpty = string.Empty;

                Assert.IsTrue(validation.HasWarnings);
                Assert.IsFalse(string.IsNullOrEmpty(((IDataWarningInfo)obj)["WarningWhenEmpty"]));

                obj.WarningWhenEmpty = "undo";

                Assert.IsFalse(validation.HasWarnings);
                Assert.IsTrue(string.IsNullOrEmpty(((IDataWarningInfo)obj)["WarningWhenEmpty"]));
            }
            public void IDataErrorInfo_FieldWithError()
            {
                var obj        = new ValidationTestModel();
                var validation = (IValidatableModel)obj;

                obj.ErrorWhenEmpty = string.Empty;

                Assert.IsTrue(validation.HasErrors);
                Assert.IsFalse(string.IsNullOrEmpty(((IDataErrorInfo)obj)["ErrorWhenEmpty"]));

                obj.ErrorWhenEmpty = "undo";

                Assert.IsFalse(validation.HasErrors);
                Assert.IsTrue(string.IsNullOrEmpty(((IDataErrorInfo)obj)["ErrorWhenEmpty"]));
            }
            public void HidesTheBusinessRuleWarningsWhenTrue()
            {
                var obj        = new ValidationTestModel();
                var validation = obj;

                obj.HideValidationResults = true;

                obj.BusinessRuleWarningWhenEmpty = string.Empty;

                Assert.IsFalse(validation.HasWarnings);
                Assert.AreEqual(string.Empty, ((IDataWarningInfo)obj).Warning);

                obj.HideValidationResults = false;

                Assert.AreNotEqual(string.Empty, ((IDataWarningInfo)obj).Warning);
            }
            public void HidesTheFieldErrorsWhenTrue()
            {
                var obj        = new ValidationTestModel();
                var validation = obj;

                obj.HideValidationResults = true;

                obj.ErrorWhenEmpty = string.Empty;

                Assert.IsFalse(validation.HasErrors);
                Assert.AreEqual(string.Empty, ((IDataErrorInfo)obj)["ErrorWhenEmpty"]);

                obj.HideValidationResults = false;

                Assert.AreNotEqual(string.Empty, ((IDataErrorInfo)obj)["ErrorWhenEmpty"]);
            }
            public void INotifyDataWarningInfo_EmptyString()
            {
                var  obj        = new ValidationTestModel();
                var  validation = (IValidatableModel)obj;
                bool isInvoked  = false;
                int  count      = 0;

                ((INotifyDataWarningInfo)obj).WarningsChanged += (sender, e) =>
                {
                    Assert.AreEqual(string.Empty, e.PropertyName);
                    isInvoked = true;
                };

                isInvoked = false;
                obj.BusinessRuleWarningWhenEmpty = string.Empty;

                Assert.IsTrue(validation.HasWarnings);
                Assert.IsTrue(isInvoked);
                count = 0;
                foreach (string warning in ((INotifyDataWarningInfo)obj).GetWarnings(string.Empty))
                {
                    count++;
                    Assert.IsFalse(string.IsNullOrEmpty(warning));
                }
                Assert.AreEqual(1, count);

                isInvoked = false;
                obj.BusinessRuleWarningWhenEmpty = "undo";

                Assert.IsFalse(validation.HasWarnings);
                Assert.IsTrue(isInvoked);
                count = 0;
                foreach (string warning in ((INotifyDataWarningInfo)obj).GetWarnings(string.Empty))
                {
                    count++;
                    Assert.IsFalse(string.IsNullOrEmpty(warning));
                }
                Assert.AreEqual(0, count);
            }
            public void INotifyDataErrorInfo_Null()
            {
                var  obj        = new ValidationTestModel();
                var  validation = (IValidatableModel)obj;
                bool isInvoked  = false;
                int  count      = 0;

                ((INotifyDataErrorInfo)obj).ErrorsChanged += (sender, e) =>
                {
                    Assert.AreEqual(string.Empty, e.PropertyName);
                    isInvoked = true;
                };

                isInvoked = false;
                obj.BusinessRuleErrorWhenEmpty = string.Empty;

                Assert.IsTrue(validation.HasErrors);
                Assert.IsTrue(isInvoked);
                count = 0;
                foreach (string error in ((INotifyDataErrorInfo)obj).GetErrors(null))
                {
                    count++;
                    Assert.IsFalse(string.IsNullOrEmpty(error));
                }
                Assert.AreEqual(1, count);

                isInvoked = false;
                obj.BusinessRuleErrorWhenEmpty = "undo";

                Assert.IsFalse(validation.HasErrors);
                Assert.IsTrue(isInvoked);
                count = 0;
                foreach (string error in ((INotifyDataErrorInfo)obj).GetErrors(null))
                {
                    count++;
                    Assert.IsFalse(string.IsNullOrEmpty(error));
                }
                Assert.AreEqual(0, count);
            }