public void AutoWireDataContextNoXNameNeg()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext !=> UnitTest.ViewModels.AutoWireDataContext
                //                                   !=> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                object dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext();
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);
            });
        }
        public void OwrAutoWireDataContextXNamePriority1()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext   !=> UnitTest.ViewModels.AutoWireDataContext
                // x:Name=AutoWireDataContextViewModel ==> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                dependencyObject.Name = "AutoWireDataContextViewModel";
                object dataContext    = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext();
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.NotNull(dataContext);
            });
        }
        public void OwrAutoWireDataContextNoXNameSubMatch()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext ==> UnitTest.ViewModels.AutoWireDataContext because (sub match)
                //                                   !=> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                object dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext()
                {
                    UseMaxNameSubMatch = true, ViewModelNamespaceOverwrite = "Abracadabra.Where.It.Placed"
                };
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.NotNull(dataContext);
            });
        }
        public void OwrAutoWireDataContextNoXNameNeg()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext !=> UnitTest.ViewModels.AutoWireDataContext
                //                                   !=> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                object dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext()
                {
                    ViewModelNamespaceOverwrite = "Abracadabra.Where.It.Placed"
                };
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);
            });
        }
        public void AutoWireDataContextXNamePriority2()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext   !=> UnitTest.ViewModels.AutoWireDataContext
                // x:Name=AutoWireDataContextView      ==> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                dependencyObject.Name = "AutoWireDataContextView";
                object dataContext    = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext();
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.NotNull(dataContext);

                object awVM = BindXAML.GetAutoWiredViewModel(dependencyObject);
                Assert.True(object.ReferenceEquals(awVM, dataContext));
            });
        }
        public void AutoWireDataContextNoXNameSubMatch()
        {
            ExecuteInStaMode.Invoke(() =>
            {
                // case UnitTest.AutoWireDataContext ==> UnitTest.ViewModels.AutoWireDataContext because (sub match)
                //                                   !=> UnitTest.ViewModels.AutoWireDataContextViewModel

                AutoWireDataContext dependencyObject = new AutoWireDataContext();
                object dataContext = dependencyObject.DataContext;
                Assert.Null(dataContext);

                AutoWireVmDataContext wireProvider = new AutoWireVmDataContext()
                {
                    UseMaxNameSubMatch = true
                };
                wireProvider.Execute(dependencyObject);
                dataContext = dependencyObject.DataContext;
                Assert.NotNull(dataContext);

                object awVM = BindXAML.GetAutoWiredViewModel(dependencyObject);
                Assert.True(object.ReferenceEquals(awVM, dataContext));
            });
        }