private static void OneTimeAssertions(MvxFullBinding binding, MockTargetBinding mockTarget, MockSourceBinding mockSource) { Assert.AreEqual(0, mockTarget.SubscribeToEventsCalled); Assert.AreEqual(1, mockTarget.Values.Count); Assert.AreEqual("TryGetValueValue", mockTarget.Values[0]); mockSource.TryGetValueValue = "SecondValue"; mockSource.FireSourceChanged(); Assert.AreEqual(1, mockTarget.Values.Count); mockSource.TryGetValueValue = "ThirdValue"; mockSource.FireSourceChanged(); Assert.AreEqual(1, mockTarget.Values.Count); Assert.AreEqual(0, mockSource.ValuesSet.Count); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget1")); Assert.AreEqual(0, mockSource.ValuesSet.Count); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget2")); Assert.AreEqual(0, mockSource.ValuesSet.Count); Assert.AreEqual(0, mockSource.DisposeCalled); Assert.AreEqual(0, mockTarget.DisposeCalled); binding.DataContext = new { ignored = 12 }; Assert.AreEqual(1, mockSource.DisposeCalled); Assert.AreEqual(0, mockTarget.DisposeCalled); Assert.AreEqual(2, mockTarget.Values.Count); Assert.AreEqual("ThirdValue", mockTarget.Values[1]); binding.DataContext = new { ignored = 13 }; Assert.AreEqual(2, mockSource.DisposeCalled); Assert.AreEqual(0, mockTarget.DisposeCalled); Assert.AreEqual(3, mockTarget.Values.Count); Assert.AreEqual("ThirdValue", mockTarget.Values[2]); mockSource.TryGetValueValue = "NewValue"; mockSource.FireSourceChanged(); Assert.AreEqual(3, mockTarget.Values.Count); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget1")); Assert.AreEqual(0, mockSource.ValuesSet.Count); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget2")); Assert.AreEqual(0, mockSource.ValuesSet.Count); binding.Dispose(); Assert.AreEqual(3, mockSource.DisposeCalled); Assert.AreEqual(1, mockTarget.DisposeCalled); }