public void WhenNotifyingOnAnInstancePropertyThenAnEventIsFired()
    {
      var testObject = new TestValidationObject();
      var changeTracker = new PropertyChangeTracker(testObject);

      testObject.InstanceProperty = "newValue";

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));
    }
        public void WhenNotifyingOnAnInstancePropertyThenAnEventIsFired()
        {
            var testObject    = new TestValidationObject();
            var changeTracker = new PropertyChangeTracker(testObject);

            testObject.InstanceProperty = "newValue";

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));
        }
        public void message_shall_be_ignored_if_exception_occurs_during_validation_or_message()
        {
            TestValidationObject Object = new TestValidationObject();

            Object.ExceptionProperty = TestValidationObject.ExceptionTest.DontThrow;
            Assert.AreEqual(new[] { "Message" }, ((INotifyDataErrorInfo)Object).GetErrors("ExceptionProperty").Cast <ValidationMessage>().Select(_ => _.Message));

            Object.ExceptionProperty = TestValidationObject.ExceptionTest.ThrowInValidation;
            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("ExceptionProperty").Cast <object>().Count());

            Object.ExceptionProperty = TestValidationObject.ExceptionTest.ThrowInMessage;
            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("ExceptionProperty").Cast <object>().Count());
        }
        public void WhenValidationOnAnInstancePropertyWithEmptyError()
        {
            var testObject    = new TestValidationObject();
            var changeTracker = new PropertyChangeTracker(testObject);

            testObject.InstanceProperty = null;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));
            Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

            var errorInfo = (IDataErrorInfo)testObject;

            Assert.AreEqual("The InstanceProperty field is required.", errorInfo["InstanceProperty"]);
        }
    public void WhenValidationOnAnInstancePropertyWithEmptyError()
    {
      var testObject = new TestValidationObject();
      var changeTracker = new PropertyChangeTracker(testObject);

      testObject.InstanceProperty = null;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));
      Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

      var errorInfo = (INotifyDataErrorInfo)testObject;
      var list = errorInfo.GetErrors("InstanceProperty").Cast<string>().ToList();
      CollectionAssert.Contains(list, "The InstanceProperty field is required.");
    }
        public void WhenValidationOnAnInstancePropertyWithEmptyError()
        {
            var testObject    = new TestValidationObject();
            var changeTracker = new PropertyChangeTracker(testObject);

            testObject.InstanceProperty = null;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));
            Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

            var errorInfo = (INotifyDataErrorInfo)testObject;
            var list      = errorInfo.GetErrors("InstanceProperty").Cast <string>().ToList();

            CollectionAssert.Contains(list, "The InstanceProperty field is required.");
        }
        public void ValidationShouldBeXmlSerializable()
        {
            var serializer = new XmlSerializer(typeof(TestValidationObject));

            var writeStream = new System.IO.StringWriter();

            var testObject = new TestValidationObject();

            serializer.Serialize(writeStream, testObject);


            var readStream          = new System.IO.StringReader(writeStream.ToString());
            var reconstitutedObject = serializer.Deserialize(readStream) as TestValidationObject;

            Assert.IsNotNull(reconstitutedObject);
        }
        public void ValidationShouldBeDataContractSerializable()
        {
            var  serializer = new DataContractSerializer(typeof(TestValidationObject));
            var  stream     = new System.IO.MemoryStream();
            bool invoked    = false;

            var testObject = new TestValidationObject();

            testObject.PropertyChanged += (o, e) => { invoked = true; };

            serializer.WriteObject(stream, testObject);

            stream.Seek(0, System.IO.SeekOrigin.Begin);

            var reconstitutedObject = serializer.ReadObject(stream) as TestValidationObject;

            Assert.IsNotNull(reconstitutedObject);
        }
        public void ValidationShouldBeSerializable()
        {
            var  serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            var  stream     = new System.IO.MemoryStream();
            bool invoked    = false;

            var testObject = new TestValidationObject();

            testObject.PropertyChanged += (o, e) => { invoked = true; };

            serializer.Serialize(stream, testObject);

            stream.Seek(0, System.IO.SeekOrigin.Begin);

            var reconstitutedObject = serializer.Deserialize(stream) as TestValidationObject;

            Assert.IsNotNull(reconstitutedObject);
        }
 public TestValidationObject()
 {
     this.AddValidationForProperty(() => this.Property1)
     .AddValidation(
         property1 => property1 == this.Property2,
         _ => $"not equal{this.MessagePart}"
         );
     this.AddValidationForProperty(() => this.Property2)
     .AddValidation(
         property2 => property2 == this.Property1,
         _ => $"not equal{this.MessagePart}"
         );
     this.AddValidationForProperty(() => this.ExceptionProperty)
     .AddValidation(
         value => TestValidationObject.Validate(value),
         value => TestValidationObject.Message(value)
         );
 }
Esempio n. 11
0
        public void WhenValidate()
        {
            var testObject = new TestValidationObject();

            Assert.IsFalse(testObject.Validate());
            Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

            var errorInfo = (IDataErrorInfo)testObject;

            Assert.AreEqual("The field MaxValue must be between 1 and 10.", errorInfo["MaxValue"]);
            Assert.AreEqual("The InstanceProperty field is required.", errorInfo["InstanceProperty"]);

            testObject.InstanceProperty = "test";
            testObject.MaxValue         = 2;

            Assert.IsTrue(testObject.Validate());
            Assert.AreEqual(null, errorInfo["MaxValue"]);
            Assert.AreEqual(null, errorInfo["InstanceProperty"]);
        }
Esempio n. 12
0
        public void WhenValidationOnMaxPropertyErrorThenNoError()
        {
            var testObject    = new TestValidationObject();
            var changeTracker = new PropertyChangeTracker(testObject);

            testObject.MaxValue = 0;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
            Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

            var errorInfo = (IDataErrorInfo)testObject;

            Assert.AreEqual("The field MaxValue must be between 1 and 10.", errorInfo["MaxValue"]);

            changeTracker.Reset();
            testObject.MaxValue = 2;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
            Assert.AreEqual(null, errorInfo["MaxValue"]);
        }
    public void WhenValidationOnMaxPropertyErrorThenNoError()
    {
      var testObject = new TestValidationObject();
      var changeTracker = new PropertyChangeTracker(testObject);

      testObject.MaxValue = 0;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
      Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

      var errorInfo = (INotifyDataErrorInfo)testObject;
      var list = errorInfo.GetErrors("MaxValue").Cast<string>().ToList();
      CollectionAssert.Contains(list, "The field MaxValue must be between 1 and 10.");

      changeTracker.Reset();
      testObject.MaxValue = 2;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
      list = errorInfo.GetErrors("MaxValue").Cast<string>().ToList();
      Assert.AreEqual(0, list.Count);
    }
Esempio n. 14
0
        public void WhenValidationOnMaxPropertyErrorThenNoError()
        {
            var testObject    = new TestValidationObject();
            var changeTracker = new PropertyChangeTracker(testObject);

            testObject.MaxValue = 0;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
            Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

            var errorInfo = (INotifyDataErrorInfo)testObject;
            var list      = errorInfo.GetErrors("MaxValue").Cast <string>().ToList();

            CollectionAssert.Contains(list, "The field MaxValue must be between 1 and 10.");

            changeTracker.Reset();
            testObject.MaxValue = 2;

            Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
            list = errorInfo.GetErrors("MaxValue").Cast <string>().ToList();
            Assert.AreEqual(0, list.Count);
        }
        public void DataErrorInfo_shall_be_reevaluated_when_properties_change()
        {
            TestValidationObject Object = new TestValidationObject();

            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("Property1").Cast <object>().Count());
            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("Property2").Cast <object>().Count());

            Object.Property1 = 42;

            Assert.AreEqual(new[] { "not equal" }, ((INotifyDataErrorInfo)Object).GetErrors("Property1").Cast <ValidationMessage>().Select(_ => _.Message));
            Assert.AreEqual(new[] { "not equal" }, ((INotifyDataErrorInfo)Object).GetErrors("Property2").Cast <ValidationMessage>().Select(_ => _.Message));

            Object.MessagePart = ": must be both 42";

            Assert.AreEqual(new[] { "not equal: must be both 42" }, ((INotifyDataErrorInfo)Object).GetErrors("Property1").Cast <ValidationMessage>().Select(_ => _.Message));
            Assert.AreEqual(new[] { "not equal: must be both 42" }, ((INotifyDataErrorInfo)Object).GetErrors("Property2").Cast <ValidationMessage>().Select(_ => _.Message));

            Object.Property2 = 42;

            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("Property1").Cast <object>().Count());
            Assert.AreEqual(0, ((INotifyDataErrorInfo)Object).GetErrors("Property2").Cast <object>().Count());
        }
    public void WhenValidate()
    {
      var testObject = new TestValidationObject();

      Assert.IsFalse(testObject.Validate());
      Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

      var errorInfo = (INotifyDataErrorInfo)testObject;
      var list1 = errorInfo.GetErrors("MaxValue").Cast<string>().ToList();
      CollectionAssert.Contains(list1, "The field MaxValue must be between 1 and 10.");
      var list2 = errorInfo.GetErrors("InstanceProperty").Cast<string>().ToList();
      CollectionAssert.Contains(list2, "The InstanceProperty field is required.");

      testObject.InstanceProperty = "test";
      testObject.MaxValue = 2;

      Assert.IsTrue(testObject.Validate());
      list1 = errorInfo.GetErrors("MaxValue").Cast<string>().ToList();
      Assert.AreEqual(0, list1.Count);
      list2 = errorInfo.GetErrors("InstanceProperty").Cast<string>().ToList();
      Assert.AreEqual(0, list2.Count);

    }
Esempio n. 17
0
        public void WhenValidate()
        {
            var testObject = new TestValidationObject();

            Assert.IsFalse(testObject.Validate());
            Assert.IsInstanceOfType(testObject, typeof(INotifyDataErrorInfo));

            var errorInfo = (INotifyDataErrorInfo)testObject;
            var list1     = errorInfo.GetErrors("MaxValue").Cast <string>().ToList();

            CollectionAssert.Contains(list1, "The field MaxValue must be between 1 and 10.");
            var list2 = errorInfo.GetErrors("InstanceProperty").Cast <string>().ToList();

            CollectionAssert.Contains(list2, "The InstanceProperty field is required.");

            testObject.InstanceProperty = "test";
            testObject.MaxValue         = 2;

            Assert.IsTrue(testObject.Validate());
            list1 = errorInfo.GetErrors("MaxValue").Cast <string>().ToList();
            Assert.AreEqual(0, list1.Count);
            list2 = errorInfo.GetErrors("InstanceProperty").Cast <string>().ToList();
            Assert.AreEqual(0, list2.Count);
        }
    public void WhenValidationOnAnInstancePropertyWithEmptyError()
    {
      var testObject = new TestValidationObject();
      var changeTracker = new PropertyChangeTracker(testObject);

      testObject.InstanceProperty = null;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("InstanceProperty"));      
      Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

      var errorInfo = (IDataErrorInfo)testObject;
      Assert.AreEqual("The InstanceProperty field is required.", errorInfo["InstanceProperty"]);
    }
    public void ValidationShouldBeDataContractSerializable()
    {
      var serializer = new DataContractSerializer(typeof(TestValidationObject));
      var stream = new System.IO.MemoryStream();
      bool invoked = false;

      var testObject = new TestValidationObject();
      testObject.PropertyChanged += (o, e) => { invoked = true; };

      serializer.WriteObject(stream, testObject);

      stream.Seek(0, System.IO.SeekOrigin.Begin);

      var reconstitutedObject = serializer.ReadObject(stream) as TestValidationObject;

      Assert.IsNotNull(reconstitutedObject);
    }
    public void WhenValidate()
    {
      var testObject = new TestValidationObject();

      Assert.IsFalse(testObject.Validate());
      Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

      var errorInfo = (IDataErrorInfo)testObject;
      Assert.AreEqual("The field MaxValue must be between 1 and 10.", errorInfo["MaxValue"]);
      Assert.AreEqual("The InstanceProperty field is required.", errorInfo["InstanceProperty"]);

      testObject.InstanceProperty = "test";
      testObject.MaxValue = 2;

      Assert.IsTrue(testObject.Validate());
      Assert.AreEqual(null, errorInfo["MaxValue"]);
      Assert.AreEqual(null, errorInfo["InstanceProperty"]);
    }
    public void ValidationShouldBeSerializable()
    {
      var serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
      var stream = new System.IO.MemoryStream();
      bool invoked = false;

      var testObject = new TestValidationObject();
      testObject.PropertyChanged += (o, e) => { invoked = true; };

      serializer.Serialize(stream, testObject);

      stream.Seek(0, System.IO.SeekOrigin.Begin);

      var reconstitutedObject = serializer.Deserialize(stream) as TestValidationObject;

      Assert.IsNotNull(reconstitutedObject);
    }
    public void WhenValidationOnMaxPropertyErrorThenNoError()
    {
      var testObject = new TestValidationObject();
      var changeTracker = new PropertyChangeTracker(testObject);

      testObject.MaxValue = 0;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
      Assert.IsInstanceOfType(testObject, typeof(IDataErrorInfo));

      var errorInfo = (IDataErrorInfo)testObject;
      Assert.AreEqual("The field MaxValue must be between 1 and 10.", errorInfo["MaxValue"]);

      changeTracker.Reset();
      testObject.MaxValue = 2;

      Assert.IsTrue(changeTracker.ChangedProperties.Contains("MaxValue"));
      Assert.AreEqual(null, errorInfo["MaxValue"]);
    }
    public void ValidationShouldBeXmlSerializable()
    {
      var serializer = new XmlSerializer(typeof(TestValidationObject));

      var writeStream = new System.IO.StringWriter();

      var testObject = new TestValidationObject();

      serializer.Serialize(writeStream, testObject);


      var readStream = new System.IO.StringReader(writeStream.ToString());
      var reconstitutedObject = serializer.Deserialize(readStream) as TestValidationObject;

      Assert.IsNotNull(reconstitutedObject);
    }