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); } }
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]); }