public void ScoreboardShouldAddNewScoresWhenBoardIsNotFull()
        {
            var mockSerializer = new Mock<IScoreSerializer>();
            mockSerializer.Setup(s => s.Load()).Returns(this.scores);
            mockSerializer.Setup(s => s.Save(It.Is<IList<Score>>(l => l.Count == 4))).Verifiable();
            this.serializer = mockSerializer.Object;

            var scoreBoard = new Scoreboard(notifier, serializer, actionsReader);
            scoreBoard.AddToScoreboard(4, 5);

            mockSerializer.Verify();
        }
        public void ScoreboardShouldAddIfScoreIsHighAndBoardIsFull()
        {
            this.scores.Add(new Score(1, "Score1", 5));
            this.scores.Add(new Score(2, "Score2", 6));
            this.scores.Add(new Score(3, "Score3", 7));
            this.scores.Add(new Score(1, "Score1", 5));
            this.scores.Add(new Score(2, "Score2", 6));
            this.scores.Add(new Score(3, "Score3", 7));
            this.scores.Add(new Score(3, "Score3", 7));

            var mockSerializer = new Mock<IScoreSerializer>();
            mockSerializer.Setup(s => s.Load()).Returns(this.scores);
            mockSerializer.Setup(s => s.Save(It.IsAny<IList<Score>>()));
            this.serializer = mockSerializer.Object;

            var scoreBoard = new Scoreboard(notifier, serializer, actionsReader);
            scoreBoard.AddToScoreboard(2, 5);

            mockSerializer.Verify(s => s.Save(It.IsAny<IList<Score>>()), Times.Once);
        }
        public void ScoreboardShouldDisplayScoresWhenThereAreAny()
        {
            var mockSerializer = new Mock<IScoreSerializer>();
            mockSerializer.Setup(s => s.Load()).Returns(this.scores);
            mockSerializer.Setup(s => s.Save(It.IsAny<IList<Score>>()));
            serializer = mockSerializer.Object;

            var mockNotifier = new Mock<IScoreNotifier>();
            mockNotifier.Setup(n => n.Notify(It.IsAny<string>())).Verifiable();
            mockNotifier.Setup(n => n.DisplayScores(It.IsAny<IList<Score>>()));
            this.notifier = mockNotifier.Object;

            var scoreBoard = new Scoreboard(notifier, serializer, actionsReader);
            scoreBoard.DisplayTopScores();

            mockNotifier.Verify(n => n.DisplayScores(It.IsAny<IList<Score>>()), Times.Once);
        }