Ejemplo n.º 1
0
        public void SetsIsActivePropertyOnBothIActiveAwareViewAndDataContext()
        {
            var region   = new MockPresentationRegion();
            var behavior = new RegionActiveAwareBehavior {
                Region = region
            };

            behavior.Attach();
            var collection = region.MockActiveViews.Items;

            var activeAwareMock = new Mock <IActiveAware>();

            activeAwareMock.SetupProperty(o => o.IsActive);
            var activeAwareObject = activeAwareMock.Object;

            var frameworkElementMock = new Mock <FrameworkElement>();

            frameworkElementMock.As <IActiveAware>().SetupProperty(o => o.IsActive);
            var frameworkElement = frameworkElementMock.Object;

            frameworkElement.DataContext = activeAwareObject;

            Assert.IsFalse(((IActiveAware)frameworkElement).IsActive);
            Assert.IsFalse(activeAwareObject.IsActive);
            collection.Add(frameworkElement);

            Assert.IsTrue(((IActiveAware)frameworkElement).IsActive);
            Assert.IsTrue(activeAwareObject.IsActive);

            collection.Remove(frameworkElement);
            Assert.IsFalse(((IActiveAware)frameworkElement).IsActive);
            Assert.IsFalse(activeAwareObject.IsActive);
        }
Ejemplo n.º 2
0
        public void RegionGetsRemovedFromRegionManagerWhenRemovedFromScope()
        {
            var regionManager      = new MockRegionManager();
            var control            = new MockFrameworkElement();
            var regionScopeControl = new ContentControl();
            var accessor           = new MockRegionManagerAccessor
            {
                GetRegionManager = d => d == regionScopeControl ? regionManager : null
            };

            var region = new MockPresentationRegion()
            {
                Name = "myRegionName"
            };
            var behavior = new RegionManagerRegistrationBehavior()
            {
                RegionManagerAccessor = accessor,
                Region      = region,
                HostControl = control
            };

            behavior.Attach();

            regionScopeControl.Content = control;
            accessor.UpdateRegions();
            Assert.IsTrue(regionManager.MockRegionCollection.AddCalled);
            Assert.AreSame(region, regionManager.MockRegionCollection.AddArgument);

            regionScopeControl.Content = null;
            accessor.UpdateRegions();

            Assert.IsTrue(regionManager.MockRegionCollection.RemoveCalled);
        }
Ejemplo n.º 3
0
        public void CanAttachBeforeSettingName()
        {
            var control       = new ItemsControl();
            var regionManager = new MockRegionManager();
            var accessor      = new MockRegionManagerAccessor
            {
                GetRegionManager = d => regionManager
            };
            var region = new MockPresentationRegion()
            {
                Name = null
            };
            var behavior = new RegionManagerRegistrationBehavior()
            {
                RegionManagerAccessor = accessor,
                Region      = region,
                HostControl = control
            };

            behavior.Attach();
            Assert.IsFalse(regionManager.MockRegionCollection.AddCalled);

            region.Name = "myRegionName";

            Assert.IsTrue(regionManager.MockRegionCollection.AddCalled);
            Assert.AreSame(region, regionManager.MockRegionCollection.AddArgument);
        }
Ejemplo n.º 4
0
        public void SetsIsActivePropertyOnIActiveAwareDataContexts()
        {
            var region   = new MockPresentationRegion();
            var behavior = new RegionActiveAwareBehavior {
                Region = region
            };

            behavior.Attach();
            var collection = region.MockActiveViews.Items;

            ActiveAwareObject activeAwareObject = new ActiveAwareObject();

            var frameworkElementMock = new Mock <FrameworkElement>();
            var frameworkElement     = frameworkElementMock.Object;

            frameworkElement.DataContext = activeAwareObject;

            Assert.IsFalse(activeAwareObject.IsActive);
            collection.Add(frameworkElement);

            Assert.IsTrue(activeAwareObject.IsActive);

            collection.Remove(frameworkElement);
            Assert.IsFalse(activeAwareObject.IsActive);
        }
        public void CanAttachBeforeSettingName()
        {
            var region = new MockPresentationRegion()
            {
                Name = null
            };
            var viewFactory = new MockRegionContentRegistry();
            var view        = new object();

            viewFactory.GetContentsReturnValue.Add(view);
            var behavior = new AutoPopulateRegionBehavior(viewFactory)
            {
                Region = region
            };

            behavior.Attach();
            Assert.IsFalse(viewFactory.GetContentsCalled);

            region.Name = "MyRegion";

            Assert.IsTrue(viewFactory.GetContentsCalled);
            Assert.AreEqual("MyRegion", viewFactory.GetContentsArgumentRegionName);
            Assert.AreEqual(1, region.MockViews.Items.Count);
            Assert.AreEqual(view, region.MockViews.Items[0]);
        }
Ejemplo n.º 6
0
        public void AttachShouldNotThrowWhenHostControlNull()
        {
            MockPresentationRegion region = new MockPresentationRegion();

            SyncRegionContextWithHostBehavior behavior = new SyncRegionContextWithHostBehavior();

            behavior.Region = region;
            behavior.Attach();
        }
Ejemplo n.º 7
0
        public void AddPassesItselfAsTheRegionManagerOfTheRegion()
        {
            var regionManager = new RegionManager();
            var region        = new MockPresentationRegion();

            region.Name = "region";
            regionManager.Regions.Add(region);

            Assert.AreSame(regionManager, region.RegionManager);
        }
        public void ViewInRegionCanBeObject()
        {
            var behavior = new BindRegionContextToDependencyObjectBehavior();
            var region   = new MockPresentationRegion();

            behavior.Region = region;
            behavior.Attach();

            region.Add(new object());
            region.Context = "new context";
        }
Ejemplo n.º 9
0
        public void ShouldAddRegionWhenAddingBehavior()
        {
            var region = new MockPresentationRegion();
            RegionBehaviorCollection behaviorCollection = new RegionBehaviorCollection(region);
            var behavior = new MockRegionBehavior();

            behaviorCollection.Add("Mock", behavior);

            Assert.IsNotNull(behavior.Region);
            Assert.AreSame(region, behavior.Region);
        }
Ejemplo n.º 10
0
        public void DoesNotThrowWhenAddingNonActiveAwareObjects()
        {
            var region   = new MockPresentationRegion();
            var behavior = new RegionActiveAwareBehavior {
                Region = region
            };

            behavior.Attach();
            var collection = region.MockActiveViews.Items;

            collection.Add(new object());
        }
Ejemplo n.º 11
0
        public void CanRemoveRegion()
        {
            var     regionManager = new RegionManager();
            IRegion region        = new MockPresentationRegion();

            region.Name = "TestRegion";
            regionManager.Regions.Add(region);

            regionManager.Regions.Remove("TestRegion");

            Assert.IsFalse(regionManager.Regions.ContainsRegionWithName("TestRegion"));
        }
Ejemplo n.º 12
0
        public void AddRegionShouldHaveDefaultBehavior()
        {
            IRegion region1 = new MockPresentationRegion();

            region1.Name = "MainRegion";

            var regionManager = new RegionManager(CreateMockRegionBehaviorFactory());

            regionManager.Regions.Add(region1);
            Assert.AreEqual(1, region1.Behaviors.Count());
            Assert.IsInstanceOfType(region1.Behaviors[MockRegionBehavior.BehaviorKey], typeof(MockRegionBehavior));
        }
Ejemplo n.º 13
0
        public void ShouldRemoveRegionManagerWhenRemoving()
        {
            var regionManager = new RegionManager();
            var region        = new MockPresentationRegion();

            region.Name = "TestRegion";
            regionManager.Regions.Add(region);

            regionManager.Regions.Remove("TestRegion");

            Assert.IsNull(region.RegionManager);
        }
        public void AddedItemShouldBeActivated()
        {
            var            control = new ContentControl();
            IRegionAdapter adapter = new TestableContentControlRegionAdapter();

            MockPresentationRegion region = (MockPresentationRegion)adapter.Initialize(control, "Region1");

            var mockView = new object();

            region.Add(mockView);

            Assert.AreEqual(1, region.ActiveViews.Count());
            Assert.IsTrue(region.ActiveViews.Contains(mockView));
        }
        public void CanRemoveViewWhenNoneActive()
        {
            var            control = new ContentControl();
            IRegionAdapter adapter = new TestableContentControlRegionAdapter();

            MockPresentationRegion region = (MockPresentationRegion)adapter.Initialize(control, "Region1");

            var mockView1 = new object();

            region.Add(mockView1);
            region.Deactivate(mockView1);
            region.Remove(mockView1);
            Assert.AreEqual(0, region.ActiveViews.Count());
        }
Ejemplo n.º 16
0
        public void CanAddRegion()
        {
            IRegion region1 = new MockPresentationRegion();

            region1.Name = "MainRegion";

            RegionManager regionManager = new RegionManager();

            regionManager.Regions.Add(region1);

            IRegion region2 = regionManager.Regions["MainRegion"];

            Assert.AreSame(region1, region2);
        }
        public void AddedItemShouldBeActivated()
        {
            var            control = new ContentView();
            IRegionAdapter adapter = new TestableContentControlRegionAdapter();

            MockPresentationRegion region = (MockPresentationRegion)adapter.Initialize(control, "Region1");

            var mockView = new StackLayout();

            region.Add(mockView);

            Assert.Single(region.ActiveViews);
            Assert.True(region.ActiveViews.Contains(mockView));
        }
        public void CanRemoveViewWhenNoneActive()
        {
            var            control = new ContentView();
            IRegionAdapter adapter = new TestableContentControlRegionAdapter();

            MockPresentationRegion region = (MockPresentationRegion)adapter.Initialize(control, "Region1");

            var mockView1 = new StackLayout();

            region.Add(mockView1);
            region.Deactivate(mockView1);
            region.Remove(mockView1);
            Assert.Empty(region.ActiveViews);
        }
Ejemplo n.º 19
0
        public void CanAddRegion()
        {
            IRegion region1 = new MockPresentationRegion();

            region1.Name = "MainRegion";

            var regionManager = new RegionManager(CreateMockRegionBehaviorFactory());

            regionManager.Regions.Add(region1);

            IRegion region2 = regionManager.Regions["MainRegion"];

            Assert.AreSame(region1, region2);
        }
        public void ShouldNotActivateAdditionalViewsAdded()
        {
            var            control = new ContentControl();
            IRegionAdapter adapter = new TestableContentControlRegionAdapter();

            MockPresentationRegion region = (MockPresentationRegion)adapter.Initialize(control, "Region1");

            var mockView = new object();

            region.Add(mockView);
            region.Add(new object());

            Assert.Single(region.ActiveViews);
            Assert.True(region.ActiveViews.Contains(mockView));
        }
Ejemplo n.º 21
0
        public void CanCheckTheExistenceOfARegion()
        {
            RegionManager regionManager = new RegionManager();
            bool          result        = regionManager.Regions.ContainsRegionWithName("noRegion");

            Assert.IsFalse(result);

            IRegion region = new MockPresentationRegion();

            region.Name = "noRegion";
            regionManager.Regions.Add(region);

            result = regionManager.Regions.ContainsRegionWithName("noRegion");

            Assert.IsTrue(result);
        }
Ejemplo n.º 22
0
        public void ShouldSetObservableRegionContextWhenRegionContextChanges()
        {
            var region = new MockPresentationRegion();
            var view   = new MockDependencyObject();

            var observableObject = RegionContext.GetObservableContext(view);

            bool propertyChangedCalled = false;

            observableObject.PropertyChanged += (sender, args) => propertyChangedCalled = true;

            Assert.IsNull(observableObject.Value);
            RegionManager.SetRegionContext(view, "MyContext");
            Assert.IsTrue(propertyChangedCalled);
            Assert.AreEqual("MyContext", observableObject.Value);
        }
Ejemplo n.º 23
0
        public void DetachStopsListeningForChanges()
        {
            var region   = new MockPresentationRegion();
            var behavior = new RegionActiveAwareBehavior {
                Region = region
            };
            var collection = region.MockActiveViews.Items;

            behavior.Attach();
            behavior.Detach();
            ActiveAwareObject activeAwareObject = new ActiveAwareObject();

            collection.Add(activeAwareObject);

            Assert.IsFalse(activeAwareObject.IsActive);
        }
Ejemplo n.º 24
0
        public void AttachShouldChangeRegionContextDependencyProperty()
        {
            MockPresentationRegion region = new MockPresentationRegion();

            SyncRegionContextWithHostBehavior behavior = new SyncRegionContextWithHostBehavior();

            behavior.Region = region;
            DependencyObject hostControl = new MockDependencyObject();

            behavior.HostControl = hostControl;

            RegionContext.GetObservableContext(hostControl).Value = "NewValue";

            Assert.IsNull(RegionManager.GetRegionContext(hostControl));
            behavior.Attach();
            Assert.AreEqual("NewValue", RegionManager.GetRegionContext(hostControl));
        }
        public void ShouldSetRegionContextOnAlreadyAddedViews()
        {
            var behavior = new BindRegionContextToDependencyObjectBehavior();
            var region   = new MockPresentationRegion();
            var view     = new MockDependencyObject();

            region.Add(view);
            behavior.Region = region;
            region.Context  = "MyContext";

            behavior.Attach();

            var context = RegionContext.GetObservableContext(view);

            Assert.IsNotNull(context.Value);
            Assert.AreEqual("MyContext", context.Value);
        }
        public void ShouldSetRegionContextOnContextChange()
        {
            var behavior = new BindRegionContextToDependencyObjectBehavior();
            var region   = new MockPresentationRegion();
            var view     = new MockDependencyObject();

            region.Add(view);
            behavior.Region = region;
            region.Context  = "MyContext";
            behavior.Attach();
            Assert.AreEqual("MyContext", RegionContext.GetObservableContext(view).Value);

            region.Context = "MyNewContext";
            region.OnPropertyChange("Context");

            Assert.AreEqual("MyNewContext", RegionContext.GetObservableContext(view).Value);
        }
Ejemplo n.º 27
0
        public void ShouldForwardRegionContextValueToHostControl()
        {
            MockPresentationRegion region = new MockPresentationRegion();

            SyncRegionContextWithHostBehavior behavior = new SyncRegionContextWithHostBehavior();

            behavior.Region = region;
            Visual mockDependencyObject = new MockDependencyObject();

            behavior.HostControl = mockDependencyObject;

            behavior.Attach();
            Assert.IsNull(region.Context);
            RegionContext.GetObservableContext(mockDependencyObject).Value = "NewValue";

            Assert.AreEqual("NewValue", region.Context);
        }
        public void WhenAViewIsRemovedFromARegion_ThenRegionContextIsNotClearedInRegion()
        {
            var behavior = new BindRegionContextToDependencyObjectBehavior();
            var region   = new MockPresentationRegion();

            behavior.Region = region;
            behavior.Attach();

            var myView = new MockFrameworkElement();

            region.Add(myView);
            region.Context = "new context";

            region.Remove(myView);

            Assert.IsNotNull(region.Context);
        }
Ejemplo n.º 29
0
        public void ShouldGetInitialValueFromHostAndSetOnRegion()
        {
            MockPresentationRegion region = new MockPresentationRegion();

            SyncRegionContextWithHostBehavior behavior = new SyncRegionContextWithHostBehavior();

            behavior.Region = region;
            DependencyObject mockDependencyObject = new MockDependencyObject();

            behavior.HostControl = mockDependencyObject;

            RegionContext.GetObservableContext(mockDependencyObject).Value = "NewValue";

            Assert.IsNull(region.Context);
            behavior.Attach();
            Assert.AreEqual("NewValue", region.Context);
        }
        public void ShouldRemoveContextToViewRemovedFromRegion()
        {
            var behavior = new BindRegionContextToDependencyObjectBehavior();
            var region   = new MockPresentationRegion();
            var view     = new MockDependencyObject();

            region.Add(view);
            behavior.Region = region;
            region.Context  = "MyContext";
            behavior.Attach();

            region.Remove(view);

            var context = RegionContext.GetObservableContext(view);

            Assert.IsNull(context.Value);
        }