public void WhenPlayersFromDifferentGroupsPlay() { var player1 = new Player("1"); var player2 = new Player("2"); var player3 = new Player("3"); var player4 = new Player("4"); var player5 = new Player("5"); var player6 = new Player("6"); var player7 = new Player("7"); var player8 = new Player("8"); var player9 = new Player("9"); var matches = new[] { new FoosMatch(player1, player2), new FoosMatch(player2, player3), new FoosMatch(player4, player5), new FoosMatch(player5, player6), new FoosMatch(player6, player7), new FoosMatch(player8, player9), new FoosMatch(player4, player2), new FoosMatch(player8, player6), }; var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); CollectionAssert.AreEqual(new[] { "1", "4", "2", "3", "5", "8", "6", "7", "9" }, actual.ToArray(), string.Join(",", actual)); }
public void PerfTest() { IList <Player> players = new List <Player>(); for (var i = 0; i < 30; i++) { players.Add(new Player(i.ToString())); } IList <FoosMatch> matches = new List <FoosMatch>(); for (var i = 0; i < 28; i++) { matches.Add(new FoosMatch(players[i], players[i + 1])); } matches.Add(new FoosMatch(players[0], players[29])); var random = new Random(); for (var i = 0; i < 2000; i++) { matches.Add(new FoosMatch(players[random.Next(0, 15)], players[new Random().Next(16, 29)])); } var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); Assert.AreEqual(30, actual.Count); }
public void WhenRankingTwoGamesBeatsOne() { var player1 = new Player("1"); var player2 = new Player("2"); var matches = new[] { new FoosMatch(player1, player2), new FoosMatch(player1, player2), new FoosMatch(player2, player1), }; var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); CollectionAssert.AreEqual(new[] { "1", "2" }, actual.ToArray(), string.Join(",", actual)); }
public void PlayersShouldBeRankedByResults() { var player1 = new Player("1"); var player2 = new Player("2"); var player3 = new Player("3"); var matches = new[] { new FoosMatch(player1, player2), new FoosMatch(player1, player3), new FoosMatch(player1, player2), new FoosMatch(player3, player2), }; var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); CollectionAssert.AreEqual(new[] { "1", "3", "2" }, actual.ToArray(), string.Join(",", actual)); }
public void MatchesOnlyAffectRankingWhenLooserIsRankedBetterThanWinnerByMax2() { var player1 = new Player("1"); var player2 = new Player("2"); var player3 = new Player("3"); var player4 = new Player("4"); var player5 = new Player("5"); //Ranking 1,2,3,4,5 var matches = new[] { new FoosMatch(player1, player2), new FoosMatch(player2, player3), new FoosMatch(player3, player4), new FoosMatch(player4, player5), new FoosMatch(player5, player1) //This match has no effect }; var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); CollectionAssert.AreEqual(new[] { "1", "2", "3", "4", "5" }, actual.ToArray(), string.Join(",", actual)); }
public void LooserShouldBeMoveDownByOne() { var player1 = new Player("1"); var player2 = new Player("2"); var player3 = new Player("3"); var player4 = new Player("4"); var player5 = new Player("5"); //Ranking 1,2,3,4,5 var matches = new[] { new FoosMatch(player1, player2), new FoosMatch(player2, player3), new FoosMatch(player3, player4), new FoosMatch(player4, player5), new FoosMatch(player5, player1), //This match has no effect new FoosMatch(player3, player1) }; var actual = LadderRanking.GetPlayersByRanking(matches).Select(p => p.Id).ToList(); CollectionAssert.AreEqual(new[] { "3", "1", "2", "4", "5" }, actual.ToArray(), string.Join(",", actual)); }