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); }
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(); }); }
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()); }