public void GetInitializedAndSet_EventHandler_AttachedAndDetached() { var viewModel1 = new ViewModel { Value = "a" }; var viewModel2 = new ViewModel { Value = "r" }; var counter1 = 0; var counter2 = 0; var backingFileds = new BackingFields( s => { if (s == "ViewModelProperty") { counter1++; } }); PropertyChangedEventHandler handler = (source, args) => { if (args.PropertyName == "Value") { counter2++; } }; backingFileds.GetValueAndObserve(() => ViewModelProperty, () => viewModel1, handler); Assert.AreEqual(0, counter1); Assert.AreEqual(0, counter2); viewModel1.Value = "b"; Assert.AreEqual(0, counter1); Assert.AreEqual(1, counter2); backingFileds.SetValueAndObserve(() => ViewModelProperty, viewModel2, handler); Assert.AreEqual(1, counter1); Assert.AreEqual(1, counter2); viewModel1.Value = "c"; Assert.AreEqual(1, counter1); Assert.AreEqual(1, counter2); viewModel2.Value = "s"; Assert.AreEqual(1, counter1); Assert.AreEqual(2, counter2); }
public void GetInitializedAndSet_Observer_AttachedAndDetached() { var viewModel1 = new ViewModel { Value = "a" }; var viewModel2 = new ViewModel { Value = "r" }; var counter = 0; var backingFileds = new BackingFields( s => { if (s == "ViewModelProperty") { counter++; } }); backingFileds.GetValueAndObserve(() => ViewModelProperty, () => viewModel1); Assert.AreEqual(0, counter); viewModel1.Value = "b"; Assert.AreEqual(1, counter); backingFileds.SetValueAndObserve(() => ViewModelProperty, viewModel2); Assert.AreEqual(2, counter); viewModel1.Value = "c"; Assert.AreEqual(2, counter); viewModel2.Value = "s"; Assert.AreEqual(3, counter); }