public void ShouldCallRemoveElementOnTimelineModelWhenUnExecute()
        {
            var track = new Track {
                TrackType = TrackType.Visual
            };

            this.timelineModel.Tracks.Add(track);

            var position = TimeCode.FromAbsoluteTime(10, SmpteFrameRate.Smpte30);

            var element = new TimelineElement
            {
                Position = position,
                Asset    = new VideoAsset
                {
                    Duration  = TimeCode.FromAbsoluteTime(30, SmpteFrameRate.Smpte30),
                    FrameRate = SmpteFrameRate.Smpte30,
                    Title     = "Test Video #1"
                }
            };

            var command = new AddElementCommand(this.timelineModel, track, element);

            command.Execute();

            var addedElement = this.timelineModel.AddElementArgument;

            Assert.IsFalse(this.timelineModel.RemoveElementCalled);

            command.UnExecute();

            Assert.IsTrue(this.timelineModel.RemoveElementCalled);
            Assert.AreEqual(addedElement, this.timelineModel.RemoveElementArgument);
        }