Beispiel #1
0
        public void TwoversustwoScenario()
        {
            var match = new EloMatch();
            var team1 = match.AddTeam(new EloTeam(true));

            match.AddPlayerToTeam(team1, 1230);
            match.AddPlayerToTeam(team1, 1260);
            var team2 = match.AddTeam(new EloTeam(false));

            match.AddPlayerToTeam(team2, 1120);
            match.AddPlayerToTeam(team2, 1410);
            var result = match.Calculate();

            foreach (var ir in result.GetResults(team1))
            {
                Console.WriteLine($"Team 1 - Player: {ir.PlayerIdentifier}, Rating difference: {ir.RatingDifference}");
            }

            foreach (var ir in result.GetResults(team2))
            {
                Console.WriteLine($"Team 2 - Player: {ir.PlayerIdentifier}, Rating difference: {ir.RatingDifference}");
            }

            Assert.Pass();
        }
        public void Player1WinsPlayer2_AssertPlayer1GainsElo()
        {
            var match             = new EloMatch();
            var player1Identifier = match.AddPlayer(1200, 1);
            var player2Identifier = match.AddPlayer(1300, 2);
            var result            = match.Calculate();
            var player1EloDiff    = result.GetRatingDifference(player1Identifier);
            var player2EloDiff    = result.GetRatingDifference(player2Identifier);

            Assert.Greater(player1EloDiff, player2EloDiff);
        }
Beispiel #3
0
        public void TwoPlayerScenario()
        {
            var match             = new EloMatch();
            var player1Identifier = match.AddPlayer(1200, true);
            var player2Identifier = match.AddPlayer(1320, false);
            var result            = match.Calculate();

            var player1EloDifference = result.GetRatingDifference(player1Identifier);
            var player2EloDifference = result.GetRatingDifference(player2Identifier);

            Assert.Greater(player1EloDifference, player2EloDifference);
        }
        public void SimpleMatch_Player1Wins()
        {
            var player1 = new EloPlayer(1200);
            var player2 = new EloPlayer(1300);
            var teams   = new List <EloTeam> {
                new EloTeam(player1, true), new EloTeam(player2, false)
            };
            var match          = new EloMatch(teams);
            var result         = match.Calculate();
            var player1EloDiff = result.GetRatingDifference(player1.Identifier);
            var player2EloDiff = result.GetRatingDifference(player2.Identifier);

            Assert.Greater(player1EloDiff, player2EloDiff);
        }
        public void MultiMatch_100Contestants_DoesNotThrow()
        {
            var match = new EloMatch();

            Assert.DoesNotThrow(() =>
            {
                for (var i = 0; i < 100; i++)
                {
                    _ = match.AddPlayer(i + 1200, i == 0 ? true : false);
                }

                var result = match.Calculate();
            });
        }
Beispiel #6
0
        public void ThreePlayerScenario()
        {
            var match             = new EloMatch();
            var player1Identifier = match.AddPlayer(1280, 1);
            var player2Identifier = match.AddPlayer(1300, 2);
            var player3Identifier = match.AddPlayer(1220, 3);
            var result            = match.Calculate();

            var player1NewRating = result.GetRatingAfter(player1Identifier);
            var player2NewRating = result.GetRatingAfter(player2Identifier);
            var player3NewRating = result.GetRatingAfter(player3Identifier);

            Assert.Greater(player1NewRating, 1280);
            Assert.Less(player2NewRating, 1300);
            Assert.Less(player3NewRating, 1220);
        }
        public void SimpleMatch_SetKFactorAs0_Player1Wins_NoEloGained()
        {
            var player1 = new EloPlayer(1200);
            var player2 = new EloPlayer(1300);
            var players = new List <EloTeam> {
                new EloTeam(player1, true), new EloTeam(player2, false)
            };
            var match = new EloMatch(players);

            match.SetKFactor(0);
            var result         = match.Calculate();
            var player1EloDiff = result.GetRatingDifference(player1.Identifier);
            var player2EloDiff = result.GetRatingDifference(player2.Identifier);

            Assert.AreEqual(0, player1EloDiff);
            Assert.AreEqual(0, player2EloDiff);
        }
        public EloResult CalculateElo(Match match)
        {
            var eloMatch = new EloMatch();

            var winners = eloMatch.AddTeam(new EloTeam(true));

            foreach (var winnerPlayer in match.Winner.Players)
            {
                eloMatch.AddPlayerToTeam(winners, new EloPlayer(new EloPlayerIdentifier(winnerPlayer.Id), winnerPlayer.GetSeasonalElo(match.Season)));
            }

            var loosers = eloMatch.AddTeam(new EloTeam(false));

            foreach (var looserPlayer in match.Looser.Players)
            {
                eloMatch.AddPlayerToTeam(loosers, new EloPlayer(new EloPlayerIdentifier(looserPlayer.Id), looserPlayer.GetSeasonalElo(match.Season)));
            }

            return(eloMatch.Calculate());
        }