public void ShouldFirePropertyChangedEventOnViewModelWhenNavigationPanelStateIsChanged()
        {
            // Given
            var    navigationPanelState = new NavigationPanelState();
            var    changeContentRegionCompositeCommand = new Mock <IChangeContentRegionCompositeCommand>();
            var    viewModel              = new NavigationPanelViewModel(navigationPanelState, changeContentRegionCompositeCommand.Object);
            var    timesEventFired        = 0;
            object sender                 = null;
            PropertyChangedEventArgs args = null;

            viewModel.PropertyChanged += (s, a) =>
            {
                timesEventFired++;
                sender = s;
                args   = a;
            };

            // When
            navigationPanelState.CurrentContentRegionView = ContentRegionView.ImageProcessingCustomizationView;

            // Then
            Assert.AreEqual(1, timesEventFired);
            Assert.AreEqual(viewModel, sender);
            Assert.AreEqual(args.PropertyName, nameof(NavigationPanelViewModel.CurrentContentRegionView));
        }
        public void ShouldReturnCurrentContentRegionView()
        {
            // Given
            var navigationPanelState = new NavigationPanelState {
                CurrentContentRegionView = ContentRegionView.ImageProcessingCustomizationView
            };

            // When
            // Then
            Assert.AreEqual(ContentRegionView.ImageProcessingCustomizationView, navigationPanelState.CurrentContentRegionView);
        }
        public void ShouldNotTriggerPropertyChangedEventWhenCurrentContentRegionViewIsSetToOldValue()
        {
            // Given
            var navigationPanelState = new NavigationPanelState();
            var timesEventFired      = 0;

            navigationPanelState.CurrentContentRegionView = ContentRegionView.ImageDisplayView;

            navigationPanelState.PropertyChanged += (s, a) => { timesEventFired++; };

            // When
            navigationPanelState.CurrentContentRegionView = ContentRegionView.ImageDisplayView;

            // Then
            Assert.AreEqual(0, timesEventFired);
        }
        public void ShouldTriggerPropertyChangedEventWhenCurrentContentRegionViewIsSet()
        {
            // Given
            var    navigationPanelState = new NavigationPanelState();
            var    timesEventFired      = 0;
            object sender = null;
            PropertyChangedEventArgs args = null;

            navigationPanelState.PropertyChanged += (s, a) =>
            {
                sender = s;
                args   = a;
                timesEventFired++;
            };

            // When
            navigationPanelState.CurrentContentRegionView = ContentRegionView.ImageProcessingCustomizationView;

            // Then
            Assert.AreEqual(1, timesEventFired);
            Assert.AreEqual(navigationPanelState, sender);
            Assert.AreEqual(nameof(NavigationPanelState.CurrentContentRegionView), args.PropertyName);
        }