public void State_Index_Should_Increment()
        {
            Collection       collection = CreateCollection(10);
            List <MediaItem> contents   = Episodes(10);
            var state = new CollectionEnumeratorState();

            var customOrderContent = new CustomOrderCollectionEnumerator(collection, contents, state);

            for (var i = 0; i < 10; i++)
            {
                customOrderContent.State.Index.Should().Be(i % 10);
                customOrderContent.MoveNext();
            }
        }
        public void MediaItems_Should_Sort_By_CustomOrder()
        {
            Collection       collection = CreateCollection(10);
            List <MediaItem> contents   = Episodes(10);
            var state = new CollectionEnumeratorState();

            var customOrderContent = new CustomOrderCollectionEnumerator(collection, contents, state);

            for (var i = 10; i >= 1; i--)
            {
                customOrderContent.Current.IsSome.Should().BeTrue();
                customOrderContent.Current.Map(x => x.Id).IfNone(-1).Should().Be(i);
                customOrderContent.MoveNext();
            }
        }
        public void State_Should_Impact_Iterator_Start()
        {
            Collection       collection = CreateCollection(10);
            List <MediaItem> contents   = Episodes(10);
            var state = new CollectionEnumeratorState {
                Index = 5
            };

            var customOrderContent = new CustomOrderCollectionEnumerator(collection, contents, state);

            for (var i = 5; i >= 1; i--)
            {
                customOrderContent.Current.IsSome.Should().BeTrue();
                customOrderContent.Current.Map(x => x.Id).IfNone(-1).Should().Be(i);
                customOrderContent.State.Index.Should().Be(5 - i + 5); // 5 through 10
                customOrderContent.MoveNext();
            }
        }