public void Should_Not_Touch_Enumerator()
        {
            var collection = new Collection
            {
                Id         = 1,
                Name       = "Filler Items",
                MediaItems = new List <MediaItem>()
            };

            for (var i = 0; i < 5; i++)
            {
                collection.MediaItems.Add(TestMovie(i + 1, TimeSpan.FromHours(i + 1), new DateTime(2020, 2, i + 1)));
            }

            var fillerPreset = new FillerPreset
            {
                FillerKind   = FillerKind.PreRoll,
                FillerMode   = FillerMode.Count,
                Count        = 3,
                Collection   = collection,
                CollectionId = collection.Id
            };

            var enumerator = new ChronologicalMediaCollectionEnumerator(
                collection.MediaItems,
                new CollectionEnumeratorState {
                Index = 0, Seed = 1
            });

            DateTimeOffset result = PlayoutModeSchedulerBase <ProgramScheduleItem>
                                    .CalculateEndTimeWithFiller(
                new Dictionary <CollectionKey, IMediaCollectionEnumerator>
            {
                { CollectionKey.ForFillerPreset(fillerPreset), enumerator }
            },
                new ProgramScheduleItemOne
            {
                PreRollFiller = fillerPreset
            },
                new DateTimeOffset(2020, 2, 1, 12, 0, 0, TimeSpan.FromHours(-5)),
                new TimeSpan(0, 12, 30),
                new List <MediaChapter>());

            result.Should().Be(new DateTimeOffset(2020, 2, 1, 18, 12, 30, TimeSpan.FromHours(-5)));
            enumerator.State.Index.Should().Be(0);
            enumerator.State.Seed.Should().Be(1);
        }
        public void Should_Pad_To_15_Minutes_30()
        {
            DateTimeOffset result = PlayoutModeSchedulerBase <ProgramScheduleItem>
                                    .CalculateEndTimeWithFiller(
                new Dictionary <CollectionKey, IMediaCollectionEnumerator>(),
                new ProgramScheduleItemOne
            {
                MidRollFiller = new FillerPreset
                {
                    FillerKind         = FillerKind.MidRoll,
                    FillerMode         = FillerMode.Pad,
                    PadToNearestMinute = 15
                }
            },
                new DateTimeOffset(2020, 2, 1, 12, 16, 0, TimeSpan.FromHours(-5)),
                new TimeSpan(0, 12, 30),
                new List <MediaChapter>());

            result.Should().Be(new DateTimeOffset(2020, 2, 1, 12, 30, 0, TimeSpan.FromHours(-5)));
        }
        public void Should_Compare_Time_As_Local_Time()
        {
            var enumerator = new Mock <IScheduleItemsEnumerator>();

            var state = new PlayoutBuilderState(
                enumerator.Object,
                None,
                None,
                false,
                false,
                0,
                DateTime.Today.AddHours(6).ToUniversalTime());

            var scheduleItem = new ProgramScheduleItemOne
            {
                StartTime = TimeSpan.FromHours(6)
            };

            DateTimeOffset result =
                PlayoutModeSchedulerBase <ProgramScheduleItem> .GetStartTimeAfter(state, scheduleItem);

            result.Should().Be(DateTime.Today.AddHours(6));
        }