public void CannotAddDuplicateNames()
        {
            var wednesday         = new Contestant("wednesday", "some token", DateTime.Now, 0);
            var impostorWednesday = new Contestant("wednesday", "other token", DateTime.Now, 0);

            contestantService.AddContestant(wednesday);


            contestantService
            .Invoking(cs => cs.AddContestant(impostorWednesday))
            .Should()
            .Throw <ArgumentException>()
            .WithMessage("cannot add contestant with existing name");
        }
        public void VerifyGradesArePersisted()
        {
            var gameService       = new GameService();
            var contestantService = new InMemoryContestantService(gameService, timeServiceMoq.Object);
            var startingBoard     = new Coordinate[]
            {
                new Coordinate {
                    X = 1, Y = 1
                }
            };
            var endingBoard = new Coordinate[]
            {
                new Coordinate {
                    X = 1, Y = 1
                }
            };

            gameService.StartGame(startingBoard, 100, endingBoard);
            var jonathan = new Contestant(
                "jonathan",
                "token",
                DateTime.Now,
                0
                );

            contestantService.AddContestant(jonathan);

            jonathan = jonathan
                       .UpdateGenerationsComputed(100)
                       .UpdateFinalBoard(endingBoard);

            contestantService.UpdateContestant(jonathan);

            var newJonathan = contestantService.GetContestantByToken(jonathan.Token);

            newJonathan.CorrectFinalBoard.Should().BeTrue();
        }