protected virtual void RegisterValueConverterProvider() { var registry = new MvxValueConverterRegistry(); this.RegisterServiceInstance <IMvxValueConverterRegistry>(registry); this.RegisterServiceInstance <IMvxValueConverterProvider>(registry); FillValueConverters(registry); }
protected virtual void RegisterValueConverterProvider() { var registry = new MvxValueConverterRegistry(); Mvx.RegisterSingleton <IMvxValueConverterRegistry>(registry); Mvx.RegisterSingleton <IMvxValueConverterLookup>(registry); FillValueConverters(registry); }
private void DoTest( Action <MockBindingContext> action, Func <MockBindingContext, object> findTargetObjectFunc, MvxBindingDescription expectedDescription) { ClearAll(); MvxBindingSingletonCache.Initialize(); var dataContext = new TestDataContext(); var bindingContext = new Mock <IMvxBindingContext>(); bindingContext.Setup(x => x.RegisterBinding(It.IsAny <object>(), It.IsAny <IMvxUpdateableBinding>())); bindingContext.SetupGet(x => x.DataContext).Returns(dataContext); var callbacksSeen = new List <Callback>(); var binder = new Mock <IMvxBinder>(); binder.Setup( b => b.Bind(It.IsAny <object>(), It.IsAny <object>(), It.IsAny <IEnumerable <MvxBindingDescription> >())) .Callback((object source, object target, IEnumerable <MvxBindingDescription> descriptions) => { if (descriptions.Count() != 1) { throw new Exception("Unexpected description count"); } callbacksSeen.Add(new Callback { Source = source, Target = target, BindingDescription = descriptions.First() }); }); Ioc.RegisterSingleton(binder.Object); Ioc.RegisterSingleton <IMvxPropertyExpressionParser>(new MvxPropertyExpressionParser()); var converterLookup = new MvxValueConverterRegistry(); converterLookup.AddOrOverwrite("SampleConv", new SampleValueConverter()); Ioc.RegisterSingleton <IMvxValueConverterLookup>(converterLookup); var testTarget = new MockBindingContext { Target = new TestTarget(), BindingContext = bindingContext.Object }; action(testTarget); Assert.AreEqual(1, callbacksSeen.Count); var callback = callbacksSeen[0]; var expectedTarget = findTargetObjectFunc(testTarget); Assert.AreEqual(expectedTarget, callback.Target); Assert.AreEqual(dataContext, callback.Source); var desc = callback.BindingDescription; Assert.IsTrue(expectedDescription.Source is MvxPathSourceStepDescription); var path = desc.Source as MvxPathSourceStepDescription; Assert.IsTrue(desc.Source is MvxPathSourceStepDescription); var expectedPath = expectedDescription.Source as MvxPathSourceStepDescription; Assert.AreEqual(expectedPath.ConverterParameter, path.ConverterParameter); Assert.AreEqual(expectedPath.FallbackValue, path.FallbackValue); Assert.AreEqual(expectedPath.SourcePropertyPath, path.SourcePropertyPath); Assert.AreEqual(expectedDescription.Mode, desc.Mode); Assert.AreEqual(expectedDescription.TargetName, desc.TargetName); if (expectedPath.Converter == null) { Assert.IsNull(path.Converter); } else { Assert.AreEqual(expectedPath.Converter.GetType(), path.Converter.GetType()); } }
private void DoTest( Action<MockBindingContext> action, Func<MockBindingContext, object> findTargetObjectFunc, MvxBindingDescription expectedDescription) { ClearAll(); MvxBindingSingletonCache.Initialize(); var dataContext = new TestDataContext(); var bindingContext = new Mock<IMvxBindingContext>(); bindingContext.Setup(x => x.RegisterBinding(It.IsAny<object>(), It.IsAny<IMvxUpdateableBinding>())); bindingContext.SetupGet(x => x.DataContext).Returns(dataContext); var callbacksSeen = new List<Callback>(); var binder = new Mock<IMvxBinder>(); binder.Setup( b => b.Bind(It.IsAny<object>(), It.IsAny<object>(), It.IsAny<IEnumerable<MvxBindingDescription>>())) .Callback((object source, object target, IEnumerable<MvxBindingDescription> descriptions) => { if (descriptions.Count() != 1) throw new Exception("Unexpected description count"); callbacksSeen.Add(new Callback { Source = source, Target = target, BindingDescription = descriptions.First() }); }); Ioc.RegisterSingleton(binder.Object); Ioc.RegisterSingleton<IMvxPropertyExpressionParser>(new MvxPropertyExpressionParser()); var converterLookup = new MvxValueConverterRegistry(); converterLookup.AddOrOverwrite("SampleConv", new SampleValueConverter()); Ioc.RegisterSingleton<IMvxValueConverterLookup>(converterLookup); var testTarget = new MockBindingContext { Target = new TestTarget(), BindingContext = bindingContext.Object }; action(testTarget); Assert.AreEqual(1, callbacksSeen.Count); var callback = callbacksSeen[0]; var expectedTarget = findTargetObjectFunc(testTarget); Assert.AreEqual(expectedTarget, callback.Target); Assert.AreEqual(dataContext, callback.Source); var desc = callback.BindingDescription; Assert.IsTrue(expectedDescription.Source is MvxPathSourceStepDescription); var path = desc.Source as MvxPathSourceStepDescription; Assert.IsTrue(desc.Source is MvxPathSourceStepDescription); var expectedPath = expectedDescription.Source as MvxPathSourceStepDescription; Assert.AreEqual(expectedPath.ConverterParameter, path.ConverterParameter); Assert.AreEqual(expectedPath.FallbackValue, path.FallbackValue); Assert.AreEqual(expectedPath.SourcePropertyPath, path.SourcePropertyPath); Assert.AreEqual(expectedDescription.Mode, desc.Mode); Assert.AreEqual(expectedDescription.TargetName, desc.TargetName); if (expectedPath.Converter == null) Assert.IsNull(path.Converter); else Assert.AreEqual(expectedPath.Converter.GetType(), path.Converter.GetType()); }