コード例 #1
0
        public void ShouldCreateDifferentWindowsForEachView()
        {
            var view  = new UserControl();
            var view2 = new UserControl();

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);
            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2);

            Assert.AreEqual(2, behavior.ViewMappings.Count);

            var windowForView  = behavior.ViewMappings.ElementAt(0).Value;
            var windowForView2 = behavior.ViewMappings.ElementAt(1).Value;

            Assert.AreNotSame(windowForView, windowForView2);

            Assert.IsTrue(((MockWindow)windowForView).ShowCalled);
            Assert.IsTrue(((MockWindow)windowForView2).ShowCalled);
        }
コード例 #2
0
        public void ShouldUpdateTitleWhenTitlePropertyChanges()
        {
            var view = new UserControl();

            var viewModel = new MockWindowMetadataProvider();

            viewModel.TitleForWindow = "Window Title";

            view.DataContext = viewModel;

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            var windowForView = behavior.ViewMappings.ElementAt(0).Value;

            Assert.AreEqual("Window Title", windowForView.Title);

            viewModel.TitleForWindow = "Different Window Title";

            viewModel.InvokeTitleUpdated(view);

            Assert.AreEqual("Different Window Title", windowForView.Title);
        }
コード例 #3
0
        public void ShouldSetTopPositionToHalfOfHeightWhenValueProvidedByWindowInfoProviderInViewDataContextIsBottom()
        {
            var view = new UserControl();

            var viewModel = new MockWindowMetadataProvider();

            view.DataContext = viewModel;

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

            parentCanvas.Height = 300;

            viewModel.Vertical = VerticalWindowPosition.Bottom;

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            var windowForView = behavior.ViewMappings.ElementAt(0).Value;

            Assert.AreEqual(150, windowForView.Top);
        }
コード例 #4
0
        public void ShouldSetWindowSizeBasedOnWindowInfoProvider()
        {
            var view = new UserControl();

            var viewModel = new MockWindowMetadataProvider();

            view.DataContext = viewModel;

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

            viewModel.SizeForWindow = new Size(10, 20);

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            var windowForView = behavior.ViewMappings.ElementAt(0).Value;

            Assert.AreEqual(20, windowForView.Size.Height);
            Assert.AreEqual(10, windowForView.Size.Width);
        }
コード例 #5
0
        public void ShouldSetLeftPositionToPointFiftyFiveOfWidthWhenValueProvidedByWindowInfoProviderInViewDataContextIsRight()
        {
            var view = new UserControl();

            var viewModel = new MockWindowMetadataProvider();

            view.DataContext = viewModel;

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas {
                Width = 300
            };

            viewModel.Horizontal = HorizontalWindowPosition.Right;

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            var windowForView = behavior.ViewMappings.ElementAt(0).Value;

            Assert.AreEqual(165, windowForView.Left);
        }
        public void ShouldDeactivateViewWhenClosed()
        {
            var view = new UserControl();
            var region = new MockRegion();
            var behavior = new TestableDialogActivationBehavior();
            behavior.HostControl = new MockDependencyObject();
            behavior.Region = region;
            behavior.Attach();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            behavior.CreatedWindow.InvokeClosed();

            Assert.IsTrue(region.DeactivateCalled);
        }
コード例 #7
0
        public void ShouldDeactivateViewWhenClosed()
        {
            var view     = new UserControl();
            var region   = new MockRegion();
            var behavior = new TestableDialogActivationBehavior();

            behavior.HostControl = new MockDependencyObject();
            behavior.Region      = region;
            behavior.Attach();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            behavior.CreatedWindow.InvokeClosed();

            Assert.IsTrue(region.DeactivateCalled);
        }
        public void ShouldAlwaysShowOnlyLastActiveView()
        {
            var region = new MockRegion();
            var behavior = new TestableDialogActivationBehavior();
            behavior.HostControl = new MockDependencyObject();
            behavior.Region = region;
            behavior.Attach();

            var view1 = new UserControl();
            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view1);
            Assert.AreSame(view1, behavior.CreatedWindow.Content);

            var view2 = new UserControl();
            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2);
            Assert.AreSame(view2, behavior.CreatedWindow.Content);
        }
コード例 #9
0
        public void ShouldRemoveViewWhenClosed()
        {
            var view     = new UserControl();
            var region   = new MockRegion();
            var behavior = new TestableDialogActivationBehavior(this.windowManager);

            behavior.HostControl = new Canvas();
            behavior.Region      = region;
            behavior.Attach();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            ((MockWindow)behavior.ViewMappings.First().Value).InvokeClosed();

            Assert.IsTrue(region.RemoveCalled);
        }
コード例 #10
0
        public void ShouldCreateWindowOnViewActivation()
        {
            var parentCanvas = new Canvas();
            var region       = new MockRegion();
            var view         = new UserControl();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.IsNotNull(behavior.ViewMappings.First().Value);
            Assert.IsTrue(((MockWindow)behavior.ViewMappings.First().Value).ShowCalled);
            Assert.AreSame(view, behavior.ViewMappings.First().Value.Content);
        }
コード例 #11
0
        public void ShouldCreateWindowOnViewActivation()
        {
            var parentWindow = new MockDependencyObject();
            var region = new MockRegion();
            var view = new UserControl();
            var behavior = new TestableDialogActivationBehavior();
            behavior.HostControl = parentWindow;
            behavior.Region = region;
            behavior.Attach();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.IsNotNull(behavior.CreatedWindow);
            Assert.IsTrue(behavior.CreatedWindow.ShowCalled);
            Assert.AreSame(view, behavior.CreatedWindow.Content);
            Assert.AreSame(parentWindow, behavior.CreatedWindow.Owner);
        }
コード例 #12
0
        public void ShouldCreateWindowOnViewActivation()
        {
            var parentWindow = new MockDependencyObject();
            var region       = new MockRegion();
            var view         = new UserControl();
            var behavior     = new TestableDialogActivationBehavior();

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.IsNotNull(behavior.CreatedWindow);
            Assert.IsTrue(behavior.CreatedWindow.ShowCalled);
            Assert.AreSame(view, behavior.CreatedWindow.Content);
            Assert.AreSame(parentWindow, behavior.CreatedWindow.Owner);
        }
コード例 #13
0
        public void ShouldAlwaysShowOnlyLastActiveView()
        {
            var region   = new MockRegion();
            var behavior = new TestableDialogActivationBehavior();

            behavior.HostControl = new MockDependencyObject();
            behavior.Region      = region;
            behavior.Attach();

            var view1 = new UserControl();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view1);
            Assert.AreSame(view1, behavior.CreatedWindow.Content);

            var view2 = new UserControl();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2);
            Assert.AreSame(view2, behavior.CreatedWindow.Content);
        }
コード例 #14
0
        public void ShouldSetStyleToRegionWindow()
        {
            var parentWindow = new MockDependencyObject();
            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior();

            behavior.HostControl = parentWindow;
            behavior.Region      = region;

            var regionStyle = new Style();

            parentWindow.SetValue(RegionPopupBehaviors.ContainerWindowStyleProperty, regionStyle);

            behavior.Attach();
            var view = new UserControl();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.AreEqual(regionStyle, behavior.CreatedWindow.Style);
        }
コード例 #15
0
        public void ShouldSetStyleToRegionWindow()
        {
            var parentControl = new Canvas();
            var region        = new MockRegion();
            var behavior      = new TestableDialogActivationBehavior(this.windowManager);

            behavior.HostControl = parentControl;
            behavior.Region      = region;

            var regionStyle = new Style();

            parentControl.SetValue(RegionWindowBehaviors.ContainerWindowStyleProperty, regionStyle);

            behavior.Attach();
            var view = new UserControl();

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.AreEqual(regionStyle, behavior.ViewMappings.First().Value.Style);
        }
コード例 #16
0
        public void ShouldCloseCorrectWindowWhenRemovingViewFromRegion()
        {
            var view  = new UserControl();
            var view2 = new UserControl();

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);
            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view2);

            var windowForView  = behavior.ViewMappings.ElementAt(0).Value;
            var windowForView2 = behavior.ViewMappings.ElementAt(1).Value;

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Remove, view2);

            Assert.IsFalse(((MockWindow)windowForView).CloseCalled);
            Assert.IsTrue(((MockWindow)windowForView2).CloseCalled);
        }
コード例 #17
0
        public void ShouldSetResizeModeToBothIfWindowInfoProviderResizeDirectionsIsBoth()
        {
            var view = new UserControl();

            var viewModel = new MockWindowMetadataProvider();

            view.DataContext = viewModel;

            var region       = new MockRegion();
            var behavior     = new TestableDialogActivationBehavior(this.windowManager);
            var parentCanvas = new Canvas();

            viewModel.Resize = ResizeDirection.Both;

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

            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            var windowForView = behavior.ViewMappings.ElementAt(0).Value;

            Assert.AreEqual(ResizeDirection.Both, windowForView.ResizeDirection);
        }
コード例 #18
0
        public void ShouldSetStyleToRegionWindow()
        {
            var parentWindow = new MockDependencyObject();
            var region = new MockRegion();
            var behavior = new TestableDialogActivationBehavior();
            behavior.HostControl = parentWindow;
            behavior.Region = region;

            var regionStyle = new Style();
            parentWindow.SetValue(RegionPopupBehaviors.ContainerWindowStyleProperty, regionStyle);

            behavior.Attach();
            var view = new UserControl();
            region.MockActiveViews.TriggerNotifyCollectionChangedEvent(NotifyCollectionChangedAction.Add, view);

            Assert.AreEqual(regionStyle, behavior.CreatedWindow.Style);
        }