예제 #1
0
        public void TwoPlayerGame20Rounds()
        {
            var league = new League(new EloScoringStrategy());

            league.AddPlayer("Foo");
            league.AddPlayer("Bar");

            for (var i = 0; i < 10; i++)
            {
                var game = new Game();

                game.AddResult("Foo", 100);
                game.AddResult("Bar", 0);

                league.RecordGame(game);

                var game2 = new Game();

                game2.AddResult("Foo", 0);
                game2.AddResult("Bar", 100);

                league.RecordGame(game2);
            }

            // Bar won most recently therefore will be slightly ahead
            Assert.Equal(1394, league.GetLeaderBoard().Where(x => x.Name == "Foo").Select(x => x.Score).Single());
            Assert.Equal(1406, league.GetLeaderBoard().Where(x => x.Name == "Bar").Select(x => x.Score).Single());
        }
예제 #2
0
        public void TestAddSamePlayerThrowsException()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Bob");
        }
        public void TestAddDuplicatePlayer()
        {
            //Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Bob");
        }
예제 #4
0
        public void FourPlayerGame40Rounds()
        {
            var league = new League(new EloScoringStrategy());

            league.AddPlayer("David");
            league.AddPlayer("Jack");
            league.AddPlayer("Bob");
            league.AddPlayer("Chris");

            for (var i = 0; i < 10; i++)
            {
                var game = new Game();

                game.AddResult("David", 100);
                game.AddResult("Jack", 50);
                game.AddResult("Bob", 25);
                game.AddResult("Chris", 0);

                league.RecordGame(game);

                var game2 = new Game();

                game2.AddResult("David", 0);
                game2.AddResult("Jack", 100);
                game2.AddResult("Bob", 50);
                game2.AddResult("Chris", 25);

                league.RecordGame(game2);

                var game3 = new Game();

                game3.AddResult("David", 25);
                game3.AddResult("Jack", 0);
                game3.AddResult("Bob", 100);
                game3.AddResult("Chris", 50);

                league.RecordGame(game3);

                var game4 = new Game();

                game4.AddResult("David", 50);
                game4.AddResult("Jack", 25);
                game4.AddResult("Bob", 0);
                game4.AddResult("Chris", 100);

                league.RecordGame(game4);
            }

            Assert.Equal(1397, league.GetLeaderBoard().Where(x => x.Name == "David").Select(x => x.Score).Single());
            Assert.Equal(1390, league.GetLeaderBoard().Where(x => x.Name == "Jack").Select(x => x.Score).Single());
            Assert.Equal(1394, league.GetLeaderBoard().Where(x => x.Name == "Bob").Select(x => x.Score).Single());
            Assert.Equal(1419, league.GetLeaderBoard().Where(x => x.Name == "Chris").Select(x => x.Score).Single());
        }
        public void TestRecordWinWhereRowsBetweenPlayersTooGreat()
        {
            //Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Ray");
            league.AddPlayer("Geoff");
            league.AddPlayer("Bill");
            league.RecordWin("Bill", "Bob");
        }
예제 #6
0
        public void TestGetRows()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Ted");

            // Then
            var rows = league.GetRows();

            Assert.AreEqual(2, rows.Count);
        }
예제 #7
0
        public void TestGetWinner()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Ted");

            var rows = league.GetRows();

            // Then
            Assert.AreEqual("Bob", rows.First().GetPlayers().First());
            Assert.AreNotEqual("Ted", rows.First().GetPlayers().First());
        }
        public void TestRecordWin()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Ray");
            league.AddPlayer("Geoff");
            league.RecordWin("Geoff", "Bob");

            // Then
            var winner = league.GetWinner();

            Assert.AreEqual("Geoff", winner);
        }
        public void TestAddPlayerNameWithInvalidCharacters()
        {
            //Given
            League league = new League();

            // When
            league.AddPlayer("%%%");
        }
예제 #10
0
        public void CanAddPlayerToLeague()
        {
            var league = new League(new SimpleScoringStrategy());

            league.AddPlayer("Foo");

            Assert.Contains("Foo", league.GetLeaderBoard().Select(x => x.Name));
        }
예제 #11
0
        public void CanRecordSimpleGame()
        {
            var league = new League(new SimpleScoringStrategy());

            league.AddPlayer("Foo");
            league.AddPlayer("Bar");

            var game = new Game();

            game.AddResult("Foo", 5);
            game.AddResult("Bar", 1);

            league.RecordGame(game);

            Assert.Equal(5.0, league.GetLeaderBoard().Where(x => x.Name == "Foo").Select(x => x.Score).Single());
            Assert.Equal(1.0, league.GetLeaderBoard().Where(x => x.Name == "Bar").Select(x => x.Score).Single());
        }
예제 #12
0
        public void TwoPlayerGameOneRound()
        {
            var league = new League(new EloScoringStrategy());

            league.AddPlayer("Foo");
            league.AddPlayer("Bar");

            var game = new Game();

            game.AddResult("Foo", 100);
            game.AddResult("Bar", 0);

            league.RecordGame(game);

            Assert.Equal(1400 + 16, league.GetLeaderBoard().Where(x => x.Name == "Foo").Select(x => x.Score).Single());
            Assert.Equal(1400 - 16, league.GetLeaderBoard().Where(x => x.Name == "Bar").Select(x => x.Score).Single());
        }
예제 #13
0
        public void TestNameInOutput()
        {
            league.AddPlayer("Kyle");
            string output = leagueRenderer.Render(league);

            Assert.IsTrue(output.Contains("Kyle"));
        }
예제 #14
0
        public void TestThreeForfeits()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");
            league.AddPlayer("Ted");
            league.AddPlayer("Cara");

            // Then
            league.RecordForfeit("Bob", "Ted");
            league.RecordForfeit("Bob", "Ted");
            league.RecordForfeit("Bob", "Cara");
            var rows = league.GetRows();

            Assert.AreEqual("Cara", rows.First().GetPlayers().First());
            Assert.AreNotEqual("Bob", rows.First().GetPlayers().First());
        }
예제 #15
0
        public void TestFormatName()
        {
            // Given
            LeagueRenderer leagueRenderer = new LeagueRenderer();
            League         league         = new League();

            // When
            league.AddPlayer("Bob");

            // Then
            Assert.AreEqual(leagueRenderer.FormatName("Bob"), "       Bob       ");
        }
예제 #16
0
        public void CanAddPlayer(string name, Positions position, string teamName, bool expectedResults)
        {
            League league = new League();
            Player player = new Player();

            player.Name       = name;
            player.PositionId = position;
            player.TeamName   = teamName;
            var response = league.AddPlayer(player);

            Assert.AreEqual(response.Success, expectedResults);
        }
예제 #17
0
        public void TestFormatNameGreaterThan17Characters()
        {
            // Given
            LeagueRenderer leagueRenderer = new LeagueRenderer();
            League         league         = new League();

            // When
            league.AddPlayer("LongerThanSeventeen");

            // Then
            Assert.AreEqual(leagueRenderer.FormatName("LongerThanSeventeen"), "LongerThanSeve...");
        }
예제 #18
0
        public void FourPlayerGameOneRound()
        {
            var league = new League(new EloScoringStrategy());

            league.AddPlayer("David");
            league.AddPlayer("Jack");
            league.AddPlayer("Bob");
            league.AddPlayer("Chris");

            var game = new Game();

            game.AddResult("David", 100);
            game.AddResult("Jack", 50);
            game.AddResult("Bob", 25);
            game.AddResult("Chris", 0);

            league.RecordGame(game);

            Assert.Equal(1424, league.GetLeaderBoard().Where(x => x.Name == "David").Select(x => x.Score).Single());
            Assert.Equal(1408, league.GetLeaderBoard().Where(x => x.Name == "Jack").Select(x => x.Score).Single());
            Assert.Equal(1392, league.GetLeaderBoard().Where(x => x.Name == "Bob").Select(x => x.Score).Single());
            Assert.Equal(1376, league.GetLeaderBoard().Where(x => x.Name == "Chris").Select(x => x.Score).Single());
        }
        public void TestAddPlayer()
        {
            // Given
            League league = new League();

            // When
            league.AddPlayer("Bob");

            // Then
            var rows = league.GetRows();

            Assert.AreEqual(1, rows.Count);
            var firstRowPlayers = rows.First().GetPlayers();

            Assert.AreEqual(1, firstRowPlayers.Count);
            CollectionAssert.Contains(firstRowPlayers, "Bob");
        }
예제 #20
0
 public void GivenTheLeagueHasOnePlayerAdded()
 {
     league.AddPlayer("Anne");
 }
예제 #21
0
 public ActionResult EditOnePlayer(PlayerVM model)
 {
     _league.AddPlayer(model.Player);
     return(RedirectToAction("GetAllTeams"));
 }