public void GetViewInstance_From_Non_STA_Throws()
        {
            var           model        = new ViewModels.SomeViewModel();
            IViewProvider viewProvider = new DefaultViewProvider();

            Assert.Throws <ViewProviderException>(() => viewProvider.GetViewInstance(model));
        }
        public void GetViewTypes_Fails()
        {
            var viewProvider = new DefaultViewProvider();
            var viewFullName = Guid.NewGuid().ToString();
            var viewTypes    = viewProvider.GetViewTypes(viewFullName, new[] { Assembly.GetExecutingAssembly() });

            Assert.That(viewTypes, Is.Empty);
        }
        public void GetViewAssemblies_Succeeds()
        {
            var viewProvider   = new DefaultViewProvider();
            var viewAssemblies = viewProvider.GetViewAssemblies(typeof(SomeViewModel));

            Assert.AreEqual(1, viewAssemblies.Length);
            Assert.AreEqual(Assembly.GetExecutingAssembly(), viewAssemblies.First());
        }
        public void GetViewName_With_Default_Values_Succeeds()
        {
            var viewProvider  = new DefaultViewProvider();
            var viewModelType = typeof(SomeViewModel);

            var viewName = viewProvider.GetViewName(viewModelType, viewProvider.ViewModelNameSuffix, viewProvider.ViewNameSuffix);

            Assert.That(viewName, Is.EqualTo(nameof(SomeView)));
        }
        public void GetViewInstance_Succeeds()
        {
            var           model          = new ViewModels.SomeViewModel();
            var           targetViewType = typeof(Views.SomeView);
            IViewProvider viewProvider   = new DefaultViewProvider();
            var           view           = viewProvider.GetViewInstance(model);

            Assert.AreEqual(targetViewType, view.GetType());
        }
        public void GetViewTypes_Succeeds()
        {
            var viewProvider   = new DefaultViewProvider();
            var targetViewType = typeof(SomeView);
            var viewFullName   = $"{targetViewType.Namespace}.{targetViewType.Name}";
            var viewTypes      = viewProvider.GetViewTypes(viewFullName, new[] { Assembly.GetExecutingAssembly() });

            Assert.That(viewTypes.Length, Is.EqualTo(1));
            Assert.That(viewTypes.First(), Is.EqualTo(typeof(SomeView)));
        }
        public void GetViewNamespace_With_Default_NamespaceSuffix_Succeeds()
        {
            var viewModelType       = typeof(ViewModels.SomeViewModel);
            var targetViewNamespace = typeof(Views.SomeView).Namespace;
            var viewProvider        = new DefaultViewProvider();

            var viewNamespace = viewProvider.GetViewNamespace(viewModelType, viewProvider.ViewModelNamespaceSuffix, viewProvider.ViewNamespaceSuffix);

            Assert.That(viewNamespace, Is.EqualTo(targetViewNamespace));
        }
        public void GetViewNamespace_Throws()
        {
            var viewModelType = typeof(SomeViewModel);
            var viewProvider  = new DefaultViewProvider
                                (
                viewModelNamespaceSuffix: Guid.NewGuid().ToString(),                 // This is not the namespace you are looking for.
                viewNamespaceSuffix: "",
                viewModelNameSuffix: "",
                viewNameSuffix: ""
                                );

            // The defined namespace of the view models does not match.
            Assert.Throws <ViewProviderException>(() => viewProvider.GetViewNamespace(viewModelType, viewProvider.ViewModelNamespaceSuffix, viewProvider.ViewNamespaceSuffix));
        }
        public void GetViewName_With_Custom_Values_Succeeds()
        {
            var viewModelType = typeof(SomeViewModel);
            var viewProvider  = new DefaultViewProvider
                                (
                viewModelNamespaceSuffix: "",
                viewNamespaceSuffix: "",
                viewModelNameSuffix: "del",
                viewNameSuffix: "hawk"
                                );

            var viewName = viewProvider.GetViewName(viewModelType, viewProvider.ViewModelNameSuffix, viewProvider.ViewNameSuffix);

            Assert.That(viewName, Is.EqualTo("SomeViewMohawk"));
        }
        public void GetViewName_Without_ViewModelNameSuffix_Succeeds()
        {
            var viewModelType = typeof(SomeViewModel);
            var viewProvider  = new DefaultViewProvider
                                (
                viewModelNamespaceSuffix: "",
                viewNamespaceSuffix: "",
                viewModelNameSuffix: "",
                viewNameSuffix: ""
                                );

            var viewName = viewProvider.GetViewName(viewModelType, viewProvider.ViewModelNameSuffix, viewProvider.ViewNameSuffix);

            Assert.That(viewName, Is.EqualTo(viewModelType.Name));
        }
        public void GetViewNamespace_Without_NamespaceSuffix_Succeeds()
        {
            var viewModelType       = typeof(SomeViewModel);
            var targetViewNamespace = viewModelType.Namespace;
            var viewProvider        = new DefaultViewProvider
                                      (
                viewModelNamespaceSuffix: String.Empty,
                viewNamespaceSuffix: String.Empty,
                viewModelNameSuffix: "",
                viewNameSuffix: ""
                                      );

            var viewNamespace = viewProvider.GetViewNamespace(viewModelType, viewProvider.ViewModelNamespaceSuffix, viewProvider.ViewNamespaceSuffix);

            Assert.AreEqual(targetViewNamespace, viewNamespace);
        }