Пример #1
0
        public void Test_WeakCollectionBinding_TwoWay()
        {
            var viewModel  = new TestViewModel();
            var viewModel3 = new TestViewModel3();

            new WeakCollectionBinding(viewModel3, "TestViewModelCollection", viewModel, "TestViewModelCollection")
            .Initialize <WeakCollectionBinding>()
            .SetMode(BindMode.TwoWay);

            viewModel3.TestViewModelCollection = new ObservableCollection <TestViewModel2>();
            viewModel.TestViewModelCollection  = new ObservableCollection <TestViewModel2>();

            var viewModel2 = new TestViewModel2();

            viewModel3.TestViewModelCollection.Add(viewModel2);

            Assert.AreEqual(1, viewModel.TestViewModelCollection.Count);
            Assert.AreEqual(viewModel2, viewModel.TestViewModelCollection[0]);

            viewModel2 = new TestViewModel2();
            viewModel.TestViewModelCollection.Add(viewModel2);

            Assert.AreEqual(2, viewModel3.TestViewModelCollection.Count);
            Assert.AreEqual(viewModel2, viewModel3.TestViewModelCollection[1]);

            viewModel.TestViewModelCollection.Clear();
            Assert.AreEqual(0, viewModel3.TestViewModelCollection.Count);

            viewModel2 = new TestViewModel2();
            viewModel3.TestViewModelCollection.Add(viewModel2);
            Assert.AreEqual(1, viewModel.TestViewModelCollection.Count);

            viewModel3.TestViewModelCollection.RemoveAt(0);
            Assert.AreEqual(0, viewModel.TestViewModelCollection.Count);
        }
Пример #2
0
        public void Test_BindSource_IndexPropertyInt()
        {
            var viewModel  = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.TestViewModel3.IntValues[1]");

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            Assert.AreEqual(null, bindSource.PropertyType);
            Assert.AreEqual(null, bindSource.Value);

            var list = new ObservableCollection <int>();

            viewModel3.IntValues = list;
            Assert.AreEqual(list, bindSource.Source);
            Assert.AreEqual(typeof(int), bindSource.PropertyType);
            Assert.AreEqual(default(int), bindSource.Value);

            list.Add(1);
            list.Add(2);

            Assert.AreEqual(2, bindSource.Value);

            bindSource.Value = 2;
            Assert.AreEqual(2, list[1]);

            list.RemoveAt(1);

            Assert.AreEqual(default(int), bindSource.Value);
        }
Пример #3
0
        public void Test_BindSource_RecurisonProperty2()
        {
            var viewModel  = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.TestViewModel3.Name");

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);
            Assert.AreEqual(null, bindSource.PropertyType);

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);
            Assert.AreEqual(null, bindSource.PropertyType);

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            Assert.AreEqual(viewModel3, bindSource.Source);
            Assert.AreEqual(typeof(string), bindSource.PropertyType);

            viewModel3.Name = Name;
            Assert.AreEqual(Name, bindSource.Value);
        }
Пример #4
0
        public void ViewModelValidator_ServerOnlyRules()
        {
            var testViewModel = new TestViewModel3() { Email = "aaa" };
            var validator = new ViewModelValidator();
            var results = validator.ValidateViewModel(testViewModel).OrderBy(n => n.PropertyPath).ToList();

            Assert.AreEqual(1, results.Count);
            Assert.AreEqual("Email", results[0].PropertyPath);
        }
Пример #5
0
        public void ViewModelValidator_ServerOnlyRules()
        {
            var testViewModel = new TestViewModel3()
            {
                Email = "aaa"
            };
            var validator = CreateValidator();
            var results   = validator.ValidateViewModel(testViewModel).OrderBy(n => n.PropertyPath).ToList();

            Assert.AreEqual(1, results.Count);
            Assert.AreEqual("Email", results[0].PropertyPath);
        }
Пример #6
0
        public TestPage3()
        {
            BindingContext = new TestViewModel3();

            Content = new StackLayout
            {
                Children =
                {
                    new Label {
                        Text = "Hello ContentPage"
                    }
                }
            };
        }
        public void Test_WeakPropertyBinding_Index_Indexer()
        {
            var view      = new TestViewModel();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            new WeakPropertyBinding(view, "TestViewModel2.TestViewModel3.TestViewModels[0]", viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1]")
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.OneWay)
            .AttachTargetEvent("TestViewEvent");


            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            t41.Name = Name1;

            viewModel2          = new TestViewModel2();
            view.TestViewModel2 = viewModel2;

            viewModel3 = new TestViewModel3();
            viewModel2.TestViewModel3 = viewModel3;

            testViewModels            = new ObservableCollection <TestViewModel4>();
            viewModel3.TestViewModels = testViewModels;

            t41 = new TestViewModel4();
            testViewModels.Add(new TestViewModel4());

            Assert.AreEqual(1, view.TestViewModel2.TestViewModel3.TestViewModels.Count);
            viewModel.TestViewModel2.TestViewModel3.TestViewModels.Add(t41);

            Assert.AreEqual(1, view.TestViewModel2.TestViewModel3.TestViewModels.Count);
            Assert.AreEqual(view.TestViewModel2.TestViewModel3.TestViewModels[0], t41);
        }
Пример #8
0
        public void Test_WeakCollectionBinding_TargetDataGenerator()
        {
            var viewModel  = new TestViewModel();
            var viewmodel3 = new TestViewModel3();

            new WeakCollectionBinding(viewmodel3, "StringValues", viewModel, "TestViewModelCollection")
            .Initialize <WeakCollectionBinding>()
            .SetSourceDataGenerator(new TestDataGenerator())
            .SetMode <WeakCollectionBinding>(BindMode.TwoWay)
            .SetSourceDataParameter("_END");

            var collections = new ObservableCollection <TestViewModel2>();

            viewModel.TestViewModelCollection = collections;

            viewmodel3.StringValues.Add(Name1);
            Assert.AreEqual(1, viewModel.TestViewModelCollection.Count);
            Assert.AreEqual(Name1 + "_END", viewModel.TestViewModelCollection[0].Name);
        }
        public void Test_WeakPropertyBinding_Index_Observable()
        {
            var view      = new TestView();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            new WeakPropertyBinding(view, "Text1", viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1].Name")
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");


            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            testViewModels.Add(t41);
            t41.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, t41.Name);

            var t42 = new TestViewModel4();

            testViewModels[1] = t42;
            Assert.AreEqual(null, view.Text1);
        }
        public void DefaultViewModelSerializer_SignedAndEncryptedValue()
        {
            var oldViewModel = new TestViewModel3()
            {
                Property1 = "a",
                Property2 = 4,
                Property3 = new DateTime(2000, 1, 1),
                Property4 = new List <TestViewModel4>()
                {
                    new TestViewModel4()
                    {
                        PropertyA = "t", PropertyB = 15
                    },
                    new TestViewModel4()
                    {
                        PropertyA = "xxx", PropertyB = 16
                    }
                }
            };

            context.ViewModel = oldViewModel;

            serializer.BuildViewModel(context);
            var result = context.GetSerializedViewModel();

            result = UnwrapSerializedViewModel(result);
            result = WrapSerializedViewModel(result);

            var newViewModel = new TestViewModel3();

            context.ViewModel = newViewModel;
            serializer.PopulateViewModel(context, result);

            Assert.AreEqual(oldViewModel.Property1, newViewModel.Property1);
            Assert.AreEqual(oldViewModel.Property2, newViewModel.Property2);
            Assert.AreEqual(oldViewModel.Property3, newViewModel.Property3);
            Assert.AreEqual(oldViewModel.Property4[0].PropertyA, newViewModel.Property4[0].PropertyA);
            Assert.AreEqual(oldViewModel.Property4[0].PropertyB, newViewModel.Property4[0].PropertyB);
            Assert.AreEqual(oldViewModel.Property4[1].PropertyA, newViewModel.Property4[1].PropertyA);
            Assert.AreEqual(oldViewModel.Property4[1].PropertyB, newViewModel.Property4[1].PropertyB);
        }
Пример #11
0
        public void Test_BindSource_IndexPropertyInt2()
        {
            var viewModel  = new TestViewModel();
            var bindSource = new BindContext(viewModel, "TestViewModel2.TestViewModel3.TestViewModels[1].Name");

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            Assert.AreEqual(null, bindSource.Value);
            Assert.AreEqual(null, bindSource.Source);

            var testViewModels = new ObservableCollection <TestViewModel4>();

            viewModel3.TestViewModels = testViewModels;

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);

            var t4  = new TestViewModel4();
            var t41 = new TestViewModel4();

            testViewModels.Add(t4);
            testViewModels.Add(t41);

            Assert.AreEqual(t41, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);

            t41.Name = Name;
            Assert.AreEqual(Name, bindSource.Value);

            testViewModels.RemoveAt(1);

            Assert.AreEqual(null, bindSource.Source);
            Assert.AreEqual(null, bindSource.Value);
        }
        public void Test_WeakPropertyBinding_Index_Expression_String()
        {
            var view      = new TestView();
            var viewModel = new TestViewModel();

            // 1. OneWay binding.
            BindingEngine.SetPropertyBinding(view, v => v.Text1, viewModel, vm => vm.TestViewModel2.TestViewModel3.TestViewModel4s["12"].Name)
            .Initialize <WeakPropertyBinding>().OfType <WeakPropertyBinding>()
            .SetMode(BindMode.TwoWay)
            .AttachTargetEvent("TestViewEvent");

            var viewModel2 = new TestViewModel2();

            viewModel.TestViewModel2 = viewModel2;

            var viewModel3 = new TestViewModel3();

            viewModel2.TestViewModel3 = viewModel3;

            var testViewModels = new ObservableDictionary <string, TestViewModel4>();

            viewModel3.TestViewModel4s = testViewModels;

            var t4 = new TestViewModel4();

            testViewModels.Add("12", t4);
            t4.Name = Name1;

            Assert.AreEqual(Name1, view.Text1);

            view.Text1 = Name2;
            view.RaiseTestViewEvent();
            Assert.AreEqual(Name2, t4.Name);

            var t42 = new TestViewModel4();

            testViewModels["12"] = t42;
            Assert.AreEqual(null, view.Text1);
        }
        public void DefaultViewModelSerializer_SignedAndEncryptedValue()
        {
            var oldViewModel = new TestViewModel3()
            {
                Property1 = "a",
                Property2 = 4,
                Property3 = new DateTime(2000, 1, 1),
                Property4 = new List<TestViewModel4>()
                {
                    new TestViewModel4() { PropertyA = "t", PropertyB = 15 },
                    new TestViewModel4() { PropertyA = "xxx", PropertyB = 16 }
                }
            };
            context.ViewModel = oldViewModel;

            serializer.BuildViewModel(context);
            var result = context.GetSerializedViewModel();
            result = UnwrapSerializedViewModel(result);
            result = WrapSerializedViewModel(result);

            var newViewModel = new TestViewModel3();
            context.ViewModel = newViewModel;
            serializer.PopulateViewModel(context, result);

            Assert.AreEqual(oldViewModel.Property1, newViewModel.Property1);
            Assert.AreEqual(oldViewModel.Property2, newViewModel.Property2);
            Assert.AreEqual(oldViewModel.Property3, newViewModel.Property3);
            Assert.AreEqual(oldViewModel.Property4[0].PropertyA, newViewModel.Property4[0].PropertyA);
            Assert.AreEqual(oldViewModel.Property4[0].PropertyB, newViewModel.Property4[0].PropertyB);
            Assert.AreEqual(oldViewModel.Property4[1].PropertyA, newViewModel.Property4[1].PropertyA);
            Assert.AreEqual(oldViewModel.Property4[1].PropertyB, newViewModel.Property4[1].PropertyB);
        }