public void Test_ViewModelByName_Finds_Expected_ViewModel()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var finder = new MvxViewModelByNameLookup();
            finder.AddAll(assembly);
            Type result;
            Assert.IsTrue(finder.TryLookupByName("Test1ViewModel", out result));
            Assert.AreEqual(typeof (Test1ViewModel), result);
            Assert.IsTrue(finder.TryLookupByName("Test2ViewModel", out result));
            Assert.AreEqual(typeof (Test2ViewModel), result);
            Assert.IsTrue(finder.TryLookupByName("Test3ViewModel", out result));
            Assert.AreEqual(typeof (Test3ViewModel), result);
            Assert.IsFalse(finder.TryLookupByName("AbstractTest1ViewModel", out result));
            Assert.IsNull(result);
            Assert.IsFalse(finder.TryLookupByName("NoWayTestViewModel", out result));
            Assert.IsNull(result);
            Assert.IsTrue(finder.TryLookupByFullName("Cirrious.MvvmCross.Test.Mocks.TestViewModels.Test1ViewModel",
                                                     out result));
            Assert.AreEqual(typeof (Test1ViewModel), result);
            Assert.IsTrue(finder.TryLookupByFullName("Cirrious.MvvmCross.Test.Mocks.TestViewModels.Test2ViewModel",
                                                     out result));
            Assert.AreEqual(typeof (Test2ViewModel), result);
            Assert.IsTrue(finder.TryLookupByFullName("Cirrious.MvvmCross.Test.Mocks.TestViewModels.Test3ViewModel",
                                                     out result));
            Assert.AreEqual(typeof (Test3ViewModel), result);
            Assert.IsFalse(
                finder.TryLookupByFullName("Cirrious.MvvmCross.Test.Mocks.TestViewModels.AbstractTest1ViewModel",
                                           out result));
            Assert.IsNull(result);
            Assert.IsFalse(finder.TryLookupByFullName(
                "Cirrious.MvvmCross.Test.Mocks.TestViewModels.NoWayTestViewModel", out result));
            Assert.IsNull(result);
        }
        public void Test_Round_Trip_Works_For_Normal_ViewModel_Requests()
        {
            ClearAll();

            var viewModelNameLookup = new MvxViewModelByNameLookup();
            viewModelNameLookup.AddAll(GetType().Assembly);
            Mvx.RegisterSingleton<IMvxViewModelByNameLookup>(viewModelNameLookup);

            var parameterBundle = new MvxBundle(new Dictionary<string, string> { { "On'e", "1'\\" }, { "Two", "2" } });
            var presentationBundle =
                new MvxBundle(new Dictionary<string, string> { { "Thre\"\'\\e", "3\"\'\\" }, { "Four", null } });
            var request = new MvxViewModelRequest<Test1ViewModel>(parameterBundle, presentationBundle,
                                                                  new MvxRequestedBy(
                                                                      MvxRequestedByType.AutomatedService, "HelloWorld"));

            var serializer = new MvxViewModelRequestCustomTextSerializer();
            var output = serializer.SerializeObject(request);

            var deserializer = new MvxViewModelRequestCustomTextSerializer();
            var deserialized = deserializer.DeserializeObject<MvxViewModelRequest>(output);

            Assert.AreEqual(typeof(Test1ViewModel), deserialized.ViewModelType);
            Assert.AreEqual(MvxRequestedByType.AutomatedService, deserialized.RequestedBy.Type);
            Assert.AreEqual("HelloWorld", deserialized.RequestedBy.AdditionalInfo);
            Assert.AreEqual(2, deserialized.PresentationValues.Count);
            Assert.AreEqual(2, deserialized.ParameterValues.Count);
            Assert.AreEqual("1'\\", deserialized.ParameterValues["On'e"]);
            Assert.AreEqual("2", deserialized.ParameterValues["Two"]);
            Assert.AreEqual("3\"\'\\", deserialized.PresentationValues["Thre\"\'\\e"]);
            Assert.AreEqual(null, deserialized.PresentationValues["Four"]);
        }
        public void Test_MvxViewModelViewTypeFinder()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var viewModelNameLookup = new MvxViewModelByNameLookup();
            viewModelNameLookup.AddAll(assembly);
            var nameMapping = new MvxPostfixAwareViewToViewModelNameMapping("View", "Oddness");
            var test = new MvxViewModelViewTypeFinder(viewModelNameLookup, nameMapping);

            // test for positives
            var result = test.FindTypeOrNull(typeof(Test1View));
            Assert.AreEqual(typeof(Test1ViewModel), result);
            result = test.FindTypeOrNull(typeof(NotTest2View));
            Assert.AreEqual(typeof(Test2ViewModel), result);
            result = test.FindTypeOrNull(typeof(NotTest3View));
            Assert.AreEqual(typeof(Test3ViewModel), result);
            result = test.FindTypeOrNull(typeof(OddNameOddness));
            Assert.AreEqual(typeof(OddNameViewModel), result);

            // test for negatives
            result = test.FindTypeOrNull(typeof(AbstractTest1View));
            Assert.IsNull(result);
            result = test.FindTypeOrNull(typeof(NotReallyAView));
            Assert.IsNull(result);
        }
        public void Test_Builder()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var viewModelNameLookup = new MvxViewModelByNameLookup(new[] {assembly});
            var finder = new MvxViewModelViewTypeFinder(viewModelNameLookup);
            Ioc.RegisterSingleton<IMvxViewModelTypeFinder>(finder);

            var builder = new MvxViewModelViewLookupBuilder();
            var result = builder.Build(new[] {assembly});

            Assert.AreEqual(3, result.Count);
            Assert.AreEqual(typeof (Test1View), result[typeof (Test1ViewModel)]);
            Assert.AreEqual(typeof (NotTest2View), result[typeof (Test2ViewModel)]);
            Assert.AreEqual(typeof (NotTest3View), result[typeof (Test3ViewModel)]);
        }
        public void Test_ViewModelByName_Finds_Expected_ViewModel()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var finder = new MvxViewModelByNameLookup(new[] {assembly});
            Type result;
            Assert.IsTrue(finder.TryLookup("Test1ViewModel", out result));
            Assert.AreEqual(typeof (Test1ViewModel), result);
            Assert.IsTrue(finder.TryLookup("Test2ViewModel", out result));
            Assert.AreEqual(typeof (Test2ViewModel), result);
            Assert.IsTrue(finder.TryLookup("Test3ViewModel", out result));
            Assert.AreEqual(typeof (Test3ViewModel), result);
            Assert.IsFalse(finder.TryLookup("AbstractTest1ViewModel", out result));
            Assert.IsNull(result);
            Assert.IsFalse(finder.TryLookup("NoWayTestViewModel", out result));
            Assert.IsNull(result);
        }
        public void Test_Builder()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var viewModelNameLookup = new MvxViewModelByNameLookup();
            viewModelNameLookup.AddAll(assembly);
            var nameMapping = new MvxPostfixAwareViewToViewModelNameMapping("View", "Oddness");
            var finder = new MvxViewModelViewTypeFinder(viewModelNameLookup, nameMapping);
            Ioc.RegisterSingleton<IMvxViewModelTypeFinder>(finder);

            var builder = new MvxViewModelViewLookupBuilder();
            var result = builder.Build(new[] {assembly});

            Assert.AreEqual(4, result.Count);
            Assert.AreEqual(typeof (Test1View), result[typeof (Test1ViewModel)]);
            Assert.AreEqual(typeof (NotTest2View), result[typeof (Test2ViewModel)]);
            Assert.AreEqual(typeof (NotTest3View), result[typeof (Test3ViewModel)]);
            Assert.AreEqual(typeof(OddNameOddness), result[typeof(OddNameViewModel)]);
        }
        public void Test_MvxViewModelViewTypeFinder()
        {
            ClearAll();

            var assembly = this.GetType().Assembly;
            var viewModelNameLookup = new MvxViewModelByNameLookup(new[] {assembly});
            var test = new MvxViewModelViewTypeFinder(viewModelNameLookup);

            // test for positives
            var result = test.FindTypeOrNull(typeof (Test1View));
            Assert.AreEqual(typeof (Test1ViewModel), result);
            result = test.FindTypeOrNull(typeof (NotTest2View));
            Assert.AreEqual(typeof (Test2ViewModel), result);
            result = test.FindTypeOrNull(typeof (NotTest3View));
            Assert.AreEqual(typeof (Test3ViewModel), result);

            // test for negatives
            result = test.FindTypeOrNull(typeof (AbstractTest1View));
            Assert.IsNull(result);
            result = test.FindTypeOrNull(typeof (NotReallyAView));
            Assert.IsNull(result);
        }
        /*
        protected virtual Assembly[] GetPluginOwningAssemblies()
        {
            var assemblies = new List<Assembly>();
            assemblies.AddRange(GetViewAssemblies());
            //ideally we would also add ViewModelAssemblies here too :/
            //assemblies.AddRange(GetViewModelAssemblies());
            return assemblies.Distinct().ToArray();
        }
         */

        protected virtual void InitialiseViewModelTypeFinder()
        {
            var viewModelAssemblies = GetViewModelAssemblies();
            var viewModelByNameLookup = new MvxViewModelByNameLookup(viewModelAssemblies);
            Mvx.RegisterSingleton<IMvxViewModelByNameLookup>(viewModelByNameLookup);
            var finder = new MvxViewModelViewTypeFinder(viewModelByNameLookup);
            Mvx.RegisterSingleton<IMvxViewModelTypeFinder>(finder);
        }
Пример #9
0
        protected virtual void InitializeViewModelTypeFinder()
        {
            var viewModelByNameLookup = new MvxViewModelByNameLookup();

            var viewModelAssemblies = GetViewModelAssemblies();
            foreach (var assembly in viewModelAssemblies)
            {
                viewModelByNameLookup.AddAll(assembly);
            }

            Mvx.RegisterSingleton<IMvxViewModelByNameLookup>(viewModelByNameLookup);
            Mvx.RegisterSingleton<IMvxViewModelByNameRegistry>(viewModelByNameLookup);

            var nameMappingStrategy = CreateViewToViewModelNaming();
            var finder = new MvxViewModelViewTypeFinder(viewModelByNameLookup, nameMappingStrategy);
            Mvx.RegisterSingleton<IMvxViewModelTypeFinder>(finder);
        }