Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        public void TestSimpleRead()
        {
            FakeVM obj = new FakeVM {
                Value = 13
            };
            SimplePropertyPath path = new SimplePropertyPath {
                Root = obj, Path = "Value"
            };

            Assert.AreEqual(13, path.Value);
        }
Пример #4
0
        public void TestInvalidRead()
        {
            FakeVM obj = new FakeVM {
                Value = 13
            };
            SimplePropertyPath path = new SimplePropertyPath {
                Root = obj, Path = "value"
            };

            Assert.IsNull(path.Value);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }