コード例 #1
0
        public void JoinTrackSegmentRightCommandTest(int frameNumber, int trackIndex, int trackSegmentIndex, bool expectedCanExecute, bool expectedRightSelectedSegment)
        {
            SetupViewModel(useRealUndoService: expectedCanExecute);

            IScriptVideoContext svc = _scriptVideoContextMock.Object;

            if (svc.FrameNumber != frameNumber)
            {
                svc.FrameNumber = frameNumber;
            }

            IVideoTimelineTrackViewModel timelineTrack        = _viewModel.TimelineTrackCollection[trackIndex];
            SegmentViewModelBase         segmentLeftViewModel = timelineTrack.TrackSegments[trackSegmentIndex];
            int segmentLeftEndFrame      = segmentLeftViewModel.EndFrame;
            int segmentLeftKeyFrameCount = segmentLeftViewModel.KeyFrameViewModels.Count;

            SegmentViewModelBase segmentRightViewModel;
            int segmentRightKeyFrameCount;

            Assert.Equal(expectedCanExecute, _viewModel.MergeTrackSegmentRightCommand.CanExecute(segmentLeftViewModel));
            if (expectedCanExecute)
            {
                segmentRightViewModel = timelineTrack.TrackSegments[trackSegmentIndex + 1];
                Assert.Equal(expectedRightSelectedSegment, segmentRightViewModel == _viewModel.TimelineSegmentProvidingViewModel.SelectedSegment);
                segmentRightKeyFrameCount = segmentRightViewModel.KeyFrameViewModels.Count;

                _viewModel.MergeTrackSegmentRightCommand.Execute(segmentLeftViewModel);

                RunPreUndoTests();

                _undoRoot.Undo();
                RunPostUndoTests();

                _undoRoot.Redo();
                RunPreUndoTests();
            }

            void RunPreUndoTests()
            {
                Assert.Empty(segmentRightViewModel.KeyFrameViewModels);
                Assert.Empty(segmentRightViewModel.Model.KeyFrames);
                Assert.DoesNotContain(segmentRightViewModel, _viewModel.TimelineSegments);
                Assert.DoesNotContain(segmentRightViewModel, timelineTrack.TrackSegments);

                Assert.Equal(segmentLeftKeyFrameCount + segmentRightKeyFrameCount, segmentLeftViewModel.KeyFrameViewModels.Count);
                Assert.Equal(segmentLeftKeyFrameCount + segmentRightKeyFrameCount, segmentLeftViewModel.Model.KeyFrames.Count);
                Assert.Equal(segmentRightViewModel.EndFrame, segmentLeftViewModel.EndFrame);

                if (expectedRightSelectedSegment)
                {
                    Assert.False(segmentRightViewModel == _viewModel.TimelineSegmentProvidingViewModel.SelectedSegment);
                    Assert.True(segmentLeftViewModel == _viewModel.TimelineSegmentProvidingViewModel.SelectedSegment);
                }

                Assert.True(_undoRoot.CanUndo);
            }

            void RunPostUndoTests()
            {
                Assert.Contains(segmentRightViewModel, _viewModel.TimelineSegments);
                Assert.Contains(segmentRightViewModel, timelineTrack.TrackSegments);

                Assert.Equal(segmentLeftEndFrame, segmentLeftViewModel.EndFrame);
                Assert.Equal(segmentLeftKeyFrameCount, segmentLeftViewModel.KeyFrameViewModels.Count);
                Assert.Equal(segmentLeftKeyFrameCount, segmentLeftViewModel.Model.KeyFrames.Count);

                Assert.Equal(segmentRightKeyFrameCount, segmentRightViewModel.KeyFrameViewModels.Count);
                Assert.Equal(segmentRightKeyFrameCount, segmentRightViewModel.Model.KeyFrames.Count);

                if (expectedRightSelectedSegment)
                {
                    Assert.False(segmentLeftViewModel == _viewModel.TimelineSegmentProvidingViewModel.SelectedSegment);
                    Assert.True(segmentRightViewModel == _viewModel.TimelineSegmentProvidingViewModel.SelectedSegment);
                }

                Assert.True(_undoRoot.CanRedo);
            }
        }
コード例 #2
0
        public void RemoveTrackCommandTest()
        {
            SetupViewModel(useRealUndoService: true);

            Assert.Equal(3, _viewModel.TimelineTrackCollection.Count);
            Assert.Equal(10, _viewModel.TimelineSegments.Count);

            IVideoTimelineTrackViewModel trackToRemove = _viewModel.TimelineTrackCollection[0];

            _viewModel.RemoveTrackCommand.Execute(trackToRemove);

            Assert.Equal(2, _viewModel.TimelineTrackCollection.Count);

            Assert.Equal(5, _viewModel.TimelineSegments.Count);
            Assert.Equal(0, _viewModel.TimelineSegments[0].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[1].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[2].TrackNumber);
            Assert.Equal(1, _viewModel.TimelineSegments[3].TrackNumber);
            Assert.Equal(1, _viewModel.TimelineSegments[4].TrackNumber);

            Assert.Equal(3, _viewModel.TimelineTrackCollection[0].TrackSegments.Count);
            Assert.Equal(_viewModel.TimelineSegments[0], _viewModel.TimelineTrackCollection[0].TrackSegments[0]);
            Assert.Equal(_viewModel.TimelineSegments[1], _viewModel.TimelineTrackCollection[0].TrackSegments[1]);
            Assert.Equal(_viewModel.TimelineSegments[2], _viewModel.TimelineTrackCollection[0].TrackSegments[2]);

            Assert.Equal(2, _viewModel.TimelineTrackCollection[1].TrackSegments.Count);
            Assert.Equal(_viewModel.TimelineSegments[3], _viewModel.TimelineTrackCollection[1].TrackSegments[0]);
            Assert.Equal(_viewModel.TimelineSegments[4], _viewModel.TimelineTrackCollection[1].TrackSegments[1]);

            Assert.True(_undoRoot.CanUndo);
            _undoRoot.Undo();

            Assert.Equal(3, _viewModel.TimelineTrackCollection.Count);

            Assert.Equal(10, _viewModel.TimelineSegments.Count);
            Assert.Equal(0, _viewModel.TimelineSegments[0].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[1].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[2].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[3].TrackNumber);
            Assert.Equal(0, _viewModel.TimelineSegments[4].TrackNumber);
            Assert.Equal(1, _viewModel.TimelineSegments[5].TrackNumber);
            Assert.Equal(1, _viewModel.TimelineSegments[6].TrackNumber);
            Assert.Equal(1, _viewModel.TimelineSegments[7].TrackNumber);
            Assert.Equal(2, _viewModel.TimelineSegments[8].TrackNumber);
            Assert.Equal(2, _viewModel.TimelineSegments[9].TrackNumber);

            Assert.Equal(5, _viewModel.TimelineTrackCollection[0].TrackSegments.Count);
            Assert.Equal(_viewModel.TimelineSegments[0], _viewModel.TimelineTrackCollection[0].TrackSegments[0]);
            Assert.Equal(_viewModel.TimelineSegments[1], _viewModel.TimelineTrackCollection[0].TrackSegments[1]);
            Assert.Equal(_viewModel.TimelineSegments[2], _viewModel.TimelineTrackCollection[0].TrackSegments[2]);
            Assert.Equal(_viewModel.TimelineSegments[3], _viewModel.TimelineTrackCollection[0].TrackSegments[3]);
            Assert.Equal(_viewModel.TimelineSegments[4], _viewModel.TimelineTrackCollection[0].TrackSegments[4]);

            Assert.Equal(3, _viewModel.TimelineTrackCollection[1].TrackSegments.Count);
            Assert.Equal(_viewModel.TimelineSegments[5], _viewModel.TimelineTrackCollection[1].TrackSegments[0]);
            Assert.Equal(_viewModel.TimelineSegments[6], _viewModel.TimelineTrackCollection[1].TrackSegments[1]);
            Assert.Equal(_viewModel.TimelineSegments[7], _viewModel.TimelineTrackCollection[1].TrackSegments[2]);

            Assert.Equal(2, _viewModel.TimelineTrackCollection[2].TrackSegments.Count);
            Assert.Equal(_viewModel.TimelineSegments[8], _viewModel.TimelineTrackCollection[2].TrackSegments[0]);
            Assert.Equal(_viewModel.TimelineSegments[9], _viewModel.TimelineTrackCollection[2].TrackSegments[1]);
        }