public void ModifyPropertyNonRepetTest() { var vm = new FakeVM(); var pre = ""; var post = ""; var preI = 0; var postI = 0; vm.PropertyChanging += (sender, args) => { Assert.Equal(nameof(vm.NotChecked), args.PropertyName); Interlocked.Increment(ref preI); pre = vm.NotChecked; }; vm.PropertyChanged += (sender, args) => { Assert.Equal(nameof(vm.NotChecked), args.PropertyName); Interlocked.Increment(ref postI); post = vm.NotChecked; }; vm.NotChecked = "test"; Assert.True(string.IsNullOrEmpty(pre)); Assert.Equal("test", post); Assert.Equal("test", vm.NotChecked); Assert.Equal(1, preI); Assert.Equal(1, postI); vm.NotChecked = "test"; Assert.True(string.IsNullOrEmpty(pre)); Assert.Equal("test", post); Assert.Equal("test", vm.NotChecked); Assert.Equal(1, preI); Assert.Equal(1, postI); }
public void TestChildObjectChange() { bool sawChange = false; FakeVM obj = new FakeVM { Child = new FakeVM { Value = 100 } }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Child.Value" }; path.PropertyChanged += (sender, args) => { if (args.PropertyName == "Value") { sawChange = true; } }; Assert.AreEqual(100, path.Value); Assert.AreEqual(false, sawChange); obj.Child = null; Assert.IsNull(path.Value); Assert.AreEqual(true, sawChange); obj.Child = new FakeVM { Value = 113 }; Assert.AreEqual(113, path.Value); }
public void TestSimpleRead() { FakeVM obj = new FakeVM { Value = 13 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Value" }; Assert.AreEqual(13, path.Value); }
public void TestInvalidRead() { FakeVM obj = new FakeVM { Value = 13 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "value" }; Assert.IsNull(path.Value); }
public void TestSimpleWrite() { FakeVM obj = new FakeVM { Value = 13 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Value" }; path.Value = 17; Assert.AreEqual(17, obj.Value); }
public void TestChildRead() { FakeVM obj = new FakeVM { Child = new FakeVM { Value = 10 } }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Child.Value" }; Assert.AreEqual(10, path.Value); }
public void TestCustomValidationWithoutTextNotPass() { var vm = new FakeVM { CheckedExpression1 = "abcdef" }; Assert.True(vm.Errors.ContainsKey(nameof(vm.CheckedExpression1))); string error = vm.Errors[nameof(vm.CheckedExpression1)]?.FirstOrDefault(); Assert.NotNull(error); Assert.Equal("s => (s.Length > 10) did not pass.", error); Assert.True(vm.HasErrors); }
public void TestCustomValidationWithTextNotPass() { var vm = new FakeVM { CheckedExpression2 = "abcdefghijklmn" }; Assert.True(vm.Errors.ContainsKey(nameof(vm.CheckedExpression2))); string error = vm.Errors[nameof(vm.CheckedExpression2)]?.FirstOrDefault(); Assert.NotNull(error); Assert.Equal("String length must be < 10", error); Assert.True(vm.HasErrors); }
public void TestRegexValidationNotPass() { var vm = new FakeVM { CheckedRegex = "123456" }; Assert.True(vm.Errors.ContainsKey(nameof(vm.CheckedRegex))); string error = vm.Errors[nameof(vm.CheckedRegex)]?.FirstOrDefault(); Assert.NotNull(error); Assert.Equal($"\"{vm.CheckedRegex}\" is not a valid value for {nameof(vm.CheckedRegex)}", error); Assert.True(vm.HasErrors); }
public void TestInvalidWrite() { FakeVM obj = new FakeVM { Value = 13 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "value" }; path.Value = 17; Assert.AreEqual(13, obj.Value); Assert.IsNull(path.Value); }
public void TestNullCheckNotPass() { var vm = new FakeVM { CheckedNull = null }; Assert.True(vm.Errors.ContainsKey(nameof(vm.CheckedNull))); string error = vm.Errors[nameof(vm.CheckedNull)]?.FirstOrDefault(); Assert.NotNull(error); Assert.Equal($"The value of {nameof(vm.CheckedNull)} is null.", error); Assert.True(vm.HasErrors); }
public void TestChildWrite() { FakeVM obj = new FakeVM { Child = new FakeVM { Value = 10 } }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Child.Value" }; path.Value = 17; Assert.AreEqual(17, obj.Child.Value); }
public void TestRegexValidationPass() { var vm = new FakeVM { CheckedRegex = "ABC123" }; if (vm.Errors.ContainsKey(nameof(vm.CheckedRegex))) { IReadOnlyList <string> value = vm.Errors[nameof(vm.CheckedRegex)]; Assert.NotNull(value); Assert.Equal(0, value.Count); } Assert.False(vm.HasErrors); }
public void TestCustomValidationWithTextPass() { var vm = new FakeVM { CheckedExpression2 = "abcdef" }; if (vm.Errors.ContainsKey(nameof(vm.CheckedExpression2))) { IReadOnlyList <string> value = vm.Errors[nameof(vm.CheckedExpression2)]; Assert.NotNull(value); Assert.Equal(0, value.Count); } Assert.False(vm.HasErrors); }
public void TestNullCheckPass() { var vm = new FakeVM { CheckedNull = "test" }; if (vm.Errors.ContainsKey(nameof(vm.CheckedNull))) { IReadOnlyList <string> value = vm.Errors[nameof(vm.CheckedNull)]; Assert.NotNull(value); Assert.Equal(0, value.Count); } Assert.False(vm.HasErrors); }
public void TestLongChain() { FakeVM obj = new FakeVM { Value = 1 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Child.Child.Child.Value" }; Assert.IsNull(path.Value); obj.Child = new FakeVM { Value = 2 }; Assert.IsNull(path.Value); obj.Child.Child = new FakeVM { Value = 3 }; Assert.IsNull(path.Value); obj.Child.Child.Child = new FakeVM { Value = 4 }; Assert.AreEqual(4, path.Value); obj.Child = new FakeVM { Value = 52, Child = new FakeVM { Value = 53, Child = new FakeVM { Value = 54 } } }; Assert.AreEqual(54, path.Value); }
public void TestSimpleChange() { bool sawChange = false; FakeVM obj = new FakeVM { Value = 11 }; SimplePropertyPath path = new SimplePropertyPath { Root = obj, Path = "Value" }; path.PropertyChanged += (sender, args) => { if (args.PropertyName == "Value") { sawChange = true; } }; Assert.AreEqual(11, path.Value); Assert.AreEqual(false, sawChange); obj.Value = 12; Assert.AreEqual(12, path.Value); Assert.AreEqual(true, sawChange); }