public async Task CantGoPastEnd()
        {
            var controller = new WalkthroughController(mockView.Object, onePageList);

            await controller.ChangePageForwards();

            Assert.AreEqual(0, controller.CurrentPage);
        }
        public void FirstPageValuesCorrect()
        {
            var controller = new WalkthroughController(mockView.Object, threePageList);

            Assert.AreEqual(0, controller.CurrentPage);
            Assert.AreEqual(3, controller.PageCount);
            Assert.IsTrue(controller.OnFirstPage);
            Assert.IsFalse(controller.OnLastPage);
            Assert.IsFalse(controller.BackIsVisible);
            Assert.IsTrue(controller.NextIsVisible);
        }
        public async Task LastPageValuesCorrect()
        {
            var controller = new WalkthroughController(mockView.Object, twoPageList);

            await controller.ChangePageForwards();

            Assert.AreEqual(1, controller.CurrentPage);
            Assert.AreEqual(2, controller.PageCount);
            Assert.IsFalse(controller.OnFirstPage);
            Assert.IsTrue(controller.OnLastPage);
            Assert.IsTrue(controller.BackIsVisible);
            Assert.IsFalse(controller.NextIsVisible);
        }
        public async Task FastPageChangeIgnored()
        {
            mockView.Setup(m => m.ChangePage(true)).Returns(Task.Delay(10));
            var controller = new WalkthroughController(mockView.Object, threePageList);

            await Task.WhenAll(
                controller.ChangePageForwards(),
                controller.ChangePageForwards()
                );

            Assert.AreEqual(1, controller.CurrentPage);
            mockView.Verify(m => m.ChangePage(true), Times.Exactly(1));
        }