private static void TwoWayAssertions(MvxFullBinding binding, MockTargetBinding mockTarget, MockSourceBinding mockSource) { Assert.Equal(1, mockTarget.SubscribeToEventsCalled); Assert.Single(mockTarget.Values); Assert.Equal("TryGetValueValue", mockTarget.Values[0]); mockSource.TryGetValueValue = "SecondValue"; mockSource.FireSourceChanged(); Assert.Equal(2, mockTarget.Values.Count); Assert.Equal("SecondValue", mockTarget.Values[1]); mockSource.TryGetValueValue = "ThirdValue"; mockSource.FireSourceChanged(); Assert.Equal(3, mockTarget.Values.Count); Assert.Equal("ThirdValue", mockTarget.Values[2]); Assert.Empty(mockSource.ValuesSet); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget1")); Assert.Single(mockSource.ValuesSet); Assert.Equal("FromTarget1", mockSource.ValuesSet[0]); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget2")); Assert.Equal(2, mockSource.ValuesSet.Count); Assert.Equal("FromTarget2", mockSource.ValuesSet[1]); Assert.Equal(0, mockSource.DisposeCalled); Assert.Equal(0, mockTarget.DisposeCalled); binding.DataContext = new { ignored = 12 }; Assert.Equal(1, mockSource.DisposeCalled); Assert.Equal(0, mockTarget.DisposeCalled); Assert.Equal(4, mockTarget.Values.Count); Assert.Equal("ThirdValue", mockTarget.Values[3]); binding.DataContext = new { ignored = 13 }; Assert.Equal(2, mockSource.DisposeCalled); Assert.Equal(0, mockTarget.DisposeCalled); Assert.Equal(5, mockTarget.Values.Count); Assert.Equal("ThirdValue", mockTarget.Values[4]); mockSource.TryGetValueValue = "NewValue"; mockSource.FireSourceChanged(); Assert.Equal(6, mockTarget.Values.Count); Assert.Equal("NewValue", mockTarget.Values[5]); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget1")); Assert.Equal(3, mockSource.ValuesSet.Count); Assert.Equal("FromTarget1", mockSource.ValuesSet[2]); mockTarget.FireValueChanged(new MvxTargetChangedEventArgs("FromTarget2")); Assert.Equal(4, mockSource.ValuesSet.Count); Assert.Equal("FromTarget2", mockSource.ValuesSet[3]); binding.Dispose(); Assert.Equal(3, mockSource.DisposeCalled); Assert.Equal(1, mockTarget.DisposeCalled); }
private MvxFullBinding TestSetupCommon(IMvxValueConverter valueConverter, object converterParameter, object fallbackValue, Type targetType, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { ClearAll(); MvxBindingSingletonCache.Initialize(); var mockSourceBindingFactory = new Mock<IMvxSourceBindingFactory>(); Ioc.RegisterSingleton(mockSourceBindingFactory.Object); var mockTargetBindingFactory = new Mock<IMvxTargetBindingFactory>(); Ioc.RegisterSingleton(mockTargetBindingFactory.Object); var realSourceStepFactory = new MvxSourceStepFactory(); realSourceStepFactory.AddOrOverwrite(typeof(MvxPathSourceStepDescription), new MvxPathSourceStepFactory()); Ioc.RegisterSingleton<IMvxSourceStepFactory>(realSourceStepFactory); var sourceText = "sourceText"; var targetName = "targetName"; var source = new { Value = 1 }; var target = new { Value = 2 }; var bindingDescription = new MvxBindingDescription { Source = new MvxPathSourceStepDescription() { Converter = valueConverter, ConverterParameter = converterParameter, FallbackValue = fallbackValue, SourcePropertyPath = sourceText, }, Mode = MvxBindingMode.TwoWay, TargetName = targetName }; mockSource = new MockSourceBinding(); mockTarget = new MockTargetBinding() { TargetType = targetType }; mockTarget.DefaultMode = MvxBindingMode.TwoWay; var localSource = mockSource; mockSourceBindingFactory .Setup(x => x.CreateBinding(It.IsAny<object>(), It.Is<string>(s => s == sourceText))) .Returns((object a, string b) => localSource); var localTarget = mockTarget; mockTargetBindingFactory .Setup(x => x.CreateBinding(It.IsAny<object>(), It.Is<string>(s => s == targetName))) .Returns((object a, string b) => localTarget); mockSource.TryGetValueResult = true; mockSource.TryGetValueValue = "TryGetValueValue"; var request = new MvxBindingRequest(source, target, bindingDescription); var toTest = new MvxFullBinding(request); return toTest; }
private MvxFullBinding TestSetupCommon(IMvxValueConverter valueConverter, object converterParameter, Type targetType, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { return TestSetupCommon(valueConverter, converterParameter, new { Value = 4 }, targetType, out mockSource, out mockTarget); }
private MvxFullBinding TestSetupCommon(IMvxValueConverter valueConverter, object converterParameter, object fallbackValue, Type targetType, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { ClearAll(); MvxBindingSingletonCache.Initialize(); var mockSourceBindingFactory = new Mock <IMvxSourceBindingFactory>(); Ioc.RegisterSingleton(mockSourceBindingFactory.Object); var mockTargetBindingFactory = new Mock <IMvxTargetBindingFactory>(); Ioc.RegisterSingleton(mockTargetBindingFactory.Object); var realSourceStepFactory = new MvxSourceStepFactory(); realSourceStepFactory.AddOrOverwrite(typeof(MvxPathSourceStepDescription), new MvxPathSourceStepFactory()); Ioc.RegisterSingleton <IMvxSourceStepFactory>(realSourceStepFactory); var sourceText = "sourceText"; var targetName = "targetName"; var source = new { Value = 1 }; var target = new { Value = 2 }; var bindingDescription = new MvxBindingDescription { Source = new MvxPathSourceStepDescription() { Converter = valueConverter, ConverterParameter = converterParameter, FallbackValue = fallbackValue, SourcePropertyPath = sourceText, }, Mode = MvxBindingMode.TwoWay, TargetName = targetName }; mockSource = new MockSourceBinding(); mockTarget = new MockTargetBinding() { TargetType = targetType }; mockTarget.DefaultMode = MvxBindingMode.TwoWay; var localSource = mockSource; mockSourceBindingFactory .Setup(x => x.CreateBinding(It.IsAny <object>(), It.Is <string>(s => s == sourceText))) .Returns((object a, string b) => localSource); var localTarget = mockTarget; mockTargetBindingFactory .Setup(x => x.CreateBinding(It.IsAny <object>(), It.Is <string>(s => s == targetName))) .Returns((object a, string b) => localTarget); mockSource.TryGetValueResult = true; mockSource.TryGetValueValue = "TryGetValueValue"; var request = new MvxBindingRequest(source, target, bindingDescription); var toTest = new MvxFullBinding(request); return(toTest); }
private MvxFullBinding TestSetupCommon(IMvxValueConverter valueConverter, object converterParameter, Type targetType, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { return(TestSetupCommon(valueConverter, converterParameter, new { Value = 4 }, targetType, out mockSource, out mockTarget)); }
private MvxFullBinding TestSetupCommon(MvxBindingMode mvxBindingMode, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { return TestSetupCommon(mvxBindingMode, MvxBindingMode.Default, out mockSource, out mockTarget); }
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); }
private MvxFullBinding TestSetupCommon(MvxBindingMode mvxBindingMode, MvxBindingMode defaultMode, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { _fixture.ClearAll(); _fixture.Ioc.RegisterSingleton <IMvxMainThreadDispatcher>(new InlineMockMainThreadDispatcher()); var mockSourceBindingFactory = new Mock <IMvxSourceBindingFactory>(); _fixture.Ioc.RegisterSingleton(mockSourceBindingFactory.Object); var mockTargetBindingFactory = new Mock <IMvxTargetBindingFactory>(); _fixture.Ioc.RegisterSingleton(mockTargetBindingFactory.Object); var realSourceStepFactory = new MvxSourceStepFactory(); realSourceStepFactory.AddOrOverwrite(typeof(MvxPathSourceStepDescription), new MvxPathSourceStepFactory()); _fixture.Ioc.RegisterSingleton <IMvxSourceStepFactory>(realSourceStepFactory); var sourceText = "sourceText"; var targetName = "targetName"; var source = new { Value = 1 }; var target = new { Value = 2 }; var converterParameter = new { Value = 3 }; var fallbackValue = new { Value = 4 }; var bindingDescription = new MvxBindingDescription { Source = new MvxPathSourceStepDescription { Converter = null, ConverterParameter = converterParameter, FallbackValue = fallbackValue, SourcePropertyPath = sourceText, }, Mode = mvxBindingMode, TargetName = targetName }; mockSource = new MockSourceBinding(); mockTarget = new MockTargetBinding { DefaultMode = defaultMode }; var localSource = mockSource; mockSourceBindingFactory .Setup(x => x.CreateBinding(It.IsAny <object>(), It.Is <string>(s => s == sourceText))) .Returns((object a, string b) => localSource); var localTarget = mockTarget; mockTargetBindingFactory .Setup(x => x.CreateBinding(It.IsAny <object>(), It.Is <string>(s => s == targetName))) .Returns((object a, string b) => localTarget); mockSource.TryGetValueResult = true; mockSource.TryGetValueValue = "TryGetValueValue"; var request = new MvxBindingRequest(source, target, bindingDescription); var toTest = new MvxFullBinding(request); return(toTest); }
private MvxFullBinding TestSetupCommon(MvxBindingMode mvxBindingMode, out MockSourceBinding mockSource, out MockTargetBinding mockTarget) { return(TestSetupCommon(mvxBindingMode, MvxBindingMode.Default, out mockSource, out mockTarget)); }