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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }