public void ModelChangedHandlerTest()
        {
            var input = new InputViewModel <int, string>(Converters.IntStringWithExeption);

            input.Model = 1;

            var newValue = -1;
            var oldValue = -1;
            var count    = 0;

            input.HandleModelChanged = (nwv, old) =>
            {
                newValue = nwv;
                oldValue = old;
                count++;
            };

            input.Model = 2;

            Assert.AreEqual(2, newValue);
            Assert.AreEqual(1, oldValue);
            Assert.AreEqual(1, count);

            input.EditValueAndUpdateModel(3.ToString());

            Assert.AreEqual(3, newValue);
            Assert.AreEqual(2, oldValue);
            Assert.AreEqual(2, count);
        }
        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 EditConvertValidationTest()
        {
            var input = new InputViewModel <int, string>(Converters.IntStringWithExeption);

            input.Model = 1;
            input.EditValueAndUpdateModel("error");

            Assert.AreEqual(1, input.Model);
            Assert.IsFalse(input.IsValid);
            Assert.AreEqual("error", input.View);
        }
        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);
        }