public void RegisterScore_GetWinningPlayer() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); match.RegisterScore(1, 2); Assert.AreEqual(player2, match.GetWinningPlayer()); }
public void IsDraw_UnEqualScore_false() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); match.RegisterScore(1, 2); Assert.IsFalse(match.IsDraw()); }
public void GetOpponentOf_InputIsNotInMatch_Null() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var player3 = new Player("dsaasdaadsa"); var match = new Match(player1, player2); Assert.IsNull(match.GetOpponentOf(player3)); }
public void GetOpponentOf_GivesOtherPlayer() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); Assert.AreEqual(player1, match.GetOpponentOf(player2)); Assert.AreEqual(player2, match.GetOpponentOf(player1)); }
public void RegisterScore_LossesOfPlayer() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); match.RegisterScore(1, 2); Assert.AreEqual(2, match.GetLossesOfPlayer(player1)); Assert.AreEqual(1, match.GetLossesOfPlayer(player2)); }
public void GetPlayerPoints_1Win_3Points() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var player3 = new Player("dsa"); var player4 = new Player("dsaasda"); var player5 = new Player("dsa"); var player6 = new Player("dsaasda"); var matches = new List<Match>(); var match = new Match(player1, player2); match.RegisterScore(2, 0); matches.Add(match); Assert.AreEqual(3, PairingUtility.GetPlayerPoints(player1, matches)); }
public static bool IsMatchValid(List<Match> piMatches, Match piNewMatch) { return !piMatches.Any(m => m.Players.Contains(piNewMatch.Players[0]) && m.Players.Contains(piNewMatch.Players[1])); }
public ActionResult ReportMatch(Match match) { throw new NotImplementedException(); }
public void RegisterScore_ScoreUpdated() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); match.RegisterScore(1, 2); Assert.AreEqual(1, match.Score[0]); Assert.AreEqual(2, match.Score[1]); }
public void RegisterScore_RegisteredIsTrue() { var player1 = new Player("dsa"); var player2 = new Player("dsaasda"); var match = new Match(player1, player2); match.RegisterScore(1, 2); Assert.IsTrue(match.Reported); }
private void RandomPairing(List<Player> piPlayers) { var rand = new Random(); var playersRandomOrder = piPlayers.OrderBy(a => rand.Next(int.MaxValue)).ToList(); for (int i = 0; i + 1 < playersRandomOrder.Count(); i += 2) { var match = new Match(playersRandomOrder[i], playersRandomOrder[i + 1]); Matches.Add(match); } }
private void InnerPairing(List<Match> piPreviousMatches, List<Player> players, List<Player> playersDownpaired) { var newMatches = new List<Match>(); var playersAdded = new List<string>(); if (players.Count >= 2) { for (int i = 0; i < players.Count; i++) { if (PlayerHasMatch(players[i])) continue; if(i + 1 == players.Count) { playersDownpaired.AddRange(players); break; } bool addMatch = true; int opponentOffset = 1; Match match = new Match(players[i], players[i + opponentOffset]); while (!PairingUtility.IsMatchValid(piPreviousMatches, match) || PlayerHasMatch(players[i + opponentOffset])) { opponentOffset++; if (i + opponentOffset >= players.Count) { foreach (var player in players.Where(playr => !playersAdded.Contains(playr.Id))) { playersDownpaired.Add(player); } if(newMatches.Any()) { RedoPairing(newMatches, piPreviousMatches, players, playersDownpaired, i); return; } addMatch = false; break; } match = new Match(players[i], players[i + opponentOffset]); } if (addMatch) { playersAdded.Add(players[i].Id); playersAdded.Add(players[i + opponentOffset].Id); Matches.Add(match); newMatches.Add(match); if (i + 1 == players.Count) { foreach (var player in players.Where(playr => !playersAdded.Contains(playr.Id))) { playersDownpaired.Add(player); } } } else break; } } else { playersDownpaired.AddRange(players); } }