public void BackgroundPageMapper_WithRepeatAll_RepeatsAllPages(int numBackgroundPages, int[] expectedPages)
        {
            _backgroundSettings.Repetition = BackgroundRepetition.RepeatAllPages;

            var pageMapper = new BackgroundPageMapper(numBackgroundPages, _backgroundSettings, 0, 0);

            CollectionAssert.AreEqual(expectedPages, GetPageSequence(expectedPages.Length, pageMapper));
        }
        public void BackgroundPageMapper_WithRepeatLast_AddsLastPageAfterFirstIteration(int numBackgroundPages, int[] expectedPages)
        {
            _backgroundSettings.Repetition = BackgroundRepetition.RepeatLastPage;

            var pageMapper = new BackgroundPageMapper(numBackgroundPages, _backgroundSettings, 0, 0);

            CollectionAssert.AreEqual(expectedPages, GetPageSequence(expectedPages.Length, pageMapper));
        }
        public void GetBackgroundPage_ForInvalidPage_ThrowsArgumentException(int invalidPageNumber)
        {
            int numPages   = 1;
            var pageMapper = new BackgroundPageMapper(1, new BackgroundPage(), 0, 0);

            int bgPage;

            Assert.Throws <ArgumentException>(() => pageMapper.GetBackgroundPageNumber(invalidPageNumber, numPages, out bgPage));
        }
        public void BackgroundPageMapper_WithRepeatAllAndSkipAttachment_RepeatsAllPagesWithoutAttachment(int numBackgroundPages, int[] expectedPages)
        {
            _backgroundSettings.Repetition   = BackgroundRepetition.RepeatAllPages;
            _backgroundSettings.OnAttachment = false;

            var pageMapper = new BackgroundPageMapper(numBackgroundPages, _backgroundSettings, 0, 3);

            CollectionAssert.AreEqual(expectedPages, GetPageSequence(expectedPages.Length, pageMapper));
        }
        private int MapPage(int page, int numPages, BackgroundPageMapper mapper)
        {
            int bgPage;

            if (!mapper.GetBackgroundPageNumber(page, numPages, out bgPage))
            {
                return(-1);
            }

            return(bgPage);
        }
 private IEnumerable <int> GetPageSequence(int numPages, BackgroundPageMapper backgroundPageMapper)
 {
     return(Enumerable
            .Range(1, numPages)
            .Select(p => MapPage(p, numPages, backgroundPageMapper)));
 }