public void EditWithReverterTest()
        {
            var msg           = "test validation error";
            var defValue      = -1;
            var preValue      = -1;
            var revertedValue = 10;

            var validator = new TestValidator <int, string>(msg);
            var reverter  = new TestReverter <int, string>((def, prev) => {
                defValue = def;
                preValue = prev;

                return(revertedValue);
            });

            var input = new InputViewModel <int, string>(Converters.IntStringWithExeption, validator, reverter);

            validator.SetIsValid(true);
            input.Model        = 1;
            input.DefaultModel = 11;
            validator.SetIsValid(false);
            input.EditValueAndUpdateModel(2.ToString());

            Assert.AreEqual(revertedValue, input.Model);
            Assert.AreEqual(11, defValue);
            Assert.AreEqual(1, preValue);

            Assert.AreEqual(revertedValue.ToString(), input.View);
            Assert.IsFalse(input.IsValid);
            Assert.AreEqual(msg, input.ErrorMessage);
        }
        public void EditWithValidatorNegativeTest()
        {
            var msg       = "test validation error";
            var validator = new TestValidator <int, string>(msg);
            var input     = new InputViewModel <int, string>(Converters.IntStringWithExeption, validator);

            input.Model = 1;
            validator.SetIsValid(false);
            input.EditValueAndUpdateModel(2.ToString());

            Assert.AreEqual(1, input.Model);
            Assert.AreEqual(2.ToString(), input.View);
            Assert.IsFalse(input.IsValid);
            Assert.AreEqual(msg, input.ErrorMessage);
        }