예제 #1
0
        public void ShouldUpdateMediaDataPosition1()
        {
            var aggregateMediaModel = CreateTestableAggregateMediaModel();

            var timelineElement = new TimelineElement
            {
                Asset       = new VideoAsset(),
                Position    = TimeCode.FromSeconds(0d, SmpteFrameRate.Smpte2398),
                InPosition  = TimeCode.FromSeconds(0d, SmpteFrameRate.Smpte2398),
                OutPosition = TimeCode.FromSeconds(600d, SmpteFrameRate.Smpte2398),
            };

            var mockMediaData = new MockMediaData {
                MockedTimelineElement = timelineElement
            };

            mockMediaData.Position = TimeSpan.FromSeconds(0);
            mockMediaData.In       = TimeSpan.FromSeconds(timelineElement.InPosition.TotalSeconds);
            mockMediaData.Out      = TimeSpan.FromSeconds(timelineElement.OutPosition.TotalSeconds);

            aggregateMediaModel.BaseMediaData.Add(mockMediaData);

            aggregateMediaModel.Position = TimeSpan.FromSeconds(300);

            Assert.AreEqual(aggregateMediaModel.Position, mockMediaData.Position);
        }
예제 #2
0
        public void ShouldNotCallToPlayAndShowOnMediaWhenIsAlreadyPlaying()
        {
            var aggregateMediaModel = CreateTestableAggregateMediaModel();

            var timelineElement = new TimelineElement {
                Asset = new VideoAsset()
            };

            var mockMediaData = new MockMediaData
            {
                MockedTimelineElement = timelineElement,
                In  = TimeSpan.FromSeconds(0),
                Out = TimeSpan.FromSeconds(300)
            };

            aggregateMediaModel.BaseMediaData.Add(mockMediaData);

            Assert.IsFalse(mockMediaData.ShowCalled);

            aggregateMediaModel.Position = TimeSpan.FromSeconds(150);

            Assert.IsTrue(mockMediaData.ShowCalled);

            aggregateMediaModel.Play();

            Assert.IsTrue(mockMediaData.PlayCalled);

            mockMediaData.PlayCalled = false;
            mockMediaData.ShowCalled = false;

            aggregateMediaModel.Play();

            Assert.IsFalse(mockMediaData.PlayCalled);
            Assert.IsFalse(mockMediaData.ShowCalled);
        }
예제 #3
0
        public void ShouldUpdateMediaDataPosition3()
        {
            var aggregateMediaModel = CreateTestableAggregateMediaModel();

            var timelineElement1 = new TimelineElement
            {
                Asset       = new VideoAsset(),
                Position    = TimeCode.FromSeconds(0d, SmpteFrameRate.Smpte2398),
                InPosition  = TimeCode.FromSeconds(0d, SmpteFrameRate.Smpte2398),
                OutPosition = TimeCode.FromSeconds(150d, SmpteFrameRate.Smpte2398),
            };

            var mockMediaData1 = new MockMediaData
            {
                MockedTimelineElement = timelineElement1,
                Position = TimeSpan.FromSeconds(0),
                In       = TimeSpan.FromSeconds(timelineElement1.InPosition.TotalSeconds),
                Out      = TimeSpan.FromSeconds(timelineElement1.OutPosition.TotalSeconds)
            };

            var timelineElement2 = new TimelineElement
            {
                Asset       = new VideoAsset(),
                Position    = TimeCode.FromSeconds(150d, SmpteFrameRate.Smpte2398),
                InPosition  = TimeCode.FromSeconds(50d, SmpteFrameRate.Smpte2398),
                OutPosition = TimeCode.FromSeconds(600d, SmpteFrameRate.Smpte2398),
            };

            var mockMediaData2 = new MockMediaData
            {
                MockedTimelineElement = timelineElement2,
                Position = TimeSpan.FromSeconds(0),
                In       = TimeSpan.FromSeconds(timelineElement2.InPosition.TotalSeconds),
                Out      = TimeSpan.FromSeconds(timelineElement2.OutPosition.TotalSeconds)
            };

            aggregateMediaModel.BaseMediaData.Add(mockMediaData1);
            aggregateMediaModel.BaseMediaData.Add(mockMediaData2);

            aggregateMediaModel.Position = TimeSpan.FromSeconds(300);

            Assert.AreEqual(new TimeSpan(0, 3, 20), mockMediaData2.Position);
        }
예제 #4
0
        public void ShouldRemoveElement()
        {
            var aggregateMediaModel = CreateTestableAggregateMediaModel();
            var timelineElement     = new TimelineElement {
                Asset = new VideoAsset()
            };

            var mockMediaData = new MockMediaData {
                MockedTimelineElement = timelineElement
            };

            aggregateMediaModel.BaseMediaData.Add(mockMediaData);

            var mediaData = aggregateMediaModel.RemoveElement(timelineElement);

            Assert.IsNotNull(mediaData);
            Assert.AreEqual(mockMediaData, mediaData);
            Assert.AreEqual(0, aggregateMediaModel.BaseMediaData.Count);
        }
예제 #5
0
        public void ShouldCallToPauseOnMediaWhenPause()
        {
            var aggregateMediaModel = CreateTestableAggregateMediaModel();

            var timelineElement = new TimelineElement {
                Asset = new VideoAsset()
            };

            var mockMediaData = new MockMediaData
            {
                MockedTimelineElement = timelineElement,
                In  = TimeSpan.FromSeconds(0),
                Out = TimeSpan.FromSeconds(300)
            };

            aggregateMediaModel.BaseMediaData.Add(mockMediaData);
            aggregateMediaModel.Position = TimeSpan.FromSeconds(150);

            Assert.IsFalse(mockMediaData.PauseCalled);

            aggregateMediaModel.Pause();

            Assert.IsTrue(mockMediaData.PauseCalled);
        }