public void RetrieveBestPlayerOrderedByLevelAndDate()
        {
            var clock = new FakeClock(new DateTime(2019, 11, 18, 13, 0, 0));

            using var tempFile = TestTempFile.New;
            var repository = new HighScoreRepository(tempFile.FilePath, clock);

            repository.AddBesPlayer("Name1", 1);
            clock.IncrementDay();
            repository.AddBesPlayer("Name2", 1);
            clock.IncrementDay();
            repository.AddBesPlayer("Name3", 2);
            clock.IncrementDay();
            repository.AddBesPlayer("Name4", 2);

            var players = repository.GetBestPlayers();

            players.Should().NotBeEmpty();

            players.Should().BeEquivalentTo(new List <Player>()
            {
                new Player(1, "Name3", 2, _clock.Now),
                new Player(2, "Name4", 2, _clock.Now),
                new Player(3, "Name1", 1, _clock.Now),
                new Player(4, "Name2", 1, _clock.Now),
            }, a => a.WithStrictOrdering().Excluding(b => b.Date));
        }
        public void ReturnEmptyListIfFileNotExists()
        {
            var repository = new HighScoreRepository("c:\\test\\nothing.csv", new Clock());
            var players    = repository.GetBestPlayers();

            players.Should().BeEmpty();
        }
        public void RetrieveBestPlayerOrderedByLevel()
        {
            using var tempFile = TestTempFile.New;
            var repository = new HighScoreRepository(tempFile.FilePath, _clock);

            repository.AddBesPlayer("Name1", 1);
            repository.AddBesPlayer("Name2", 2);
            repository.AddBesPlayer("Name3", 3);
            repository.AddBesPlayer("Name4", 4);

            var players = repository.GetBestPlayers();

            players.Should().NotBeEmpty();

            players.Should().BeEquivalentTo(new List <Player>()
            {
                new Player(1, "Name4", 4, _clock.Now),
                new Player(2, "Name3", 3, _clock.Now),
                new Player(3, "Name2", 2, _clock.Now),
                new Player(4, "Name1", 1, _clock.Now),
            }, a => a.WithStrictOrdering());
        }