public void ShouldSayAllRoundsAreFinished() { Controller controller = new Controller(); controller.ScheduleNewRound("Vinter Turnering", true); Assert.AreEqual(true, currentTournament.SetStatusFinished(status)); }
public void ScheduleNewRound(string tournamentName, bool printNewMatches = true) { TournamentRepo tr = new TournamentRepo(); Tournament t = tr.GetTournament(tournamentName); int numberOfRounds = t.GetNumberOfRounds() - 1; List <Team> teams = new List <Team>(); Team oldFreeRider; Round lastRound; lastRound = t.GetRound(numberOfRounds - 1); if (numberOfRounds == 0) { teams = t.GetTeams(); } else { bool isRoundFinished = lastRound.IsRoundFinished(); if (isRoundFinished) { teams = lastRound.GetWinningTeams(); } else { Console.WriteLine("Runden er endnu ikke afsluttet"); } } if (teams.Count > 1) { //fundet på stackoverflow skal undersøges nærmere. Random rng = new Random(); int n = teams.Count; while (n > 1) { n--; int k = rng.Next(n + 1); Team value = teams[k]; teams[k] = teams[n]; teams[n] = value; } Round newRound = new Round(); if (teams.Count % 2 == 1) { oldFreeRider = lastRound.GetFreeRider(); Team newFreeRider; //freerider holdet springer runden over int i = 0; do { newFreeRider = teams[i]; i++; } while (oldFreeRider.Equals(teams[i])); teams.Remove(newFreeRider); newRound.Add(newFreeRider); } int numberOfMatches = teams.Count / 2; for (int i = 0; i < numberOfMatches; i++) { Match newMatch = new Match(); Team first = teams[0]; teams.Remove(teams[0]); Team second = teams[0]; teams.Remove(teams[0]); newMatch.FirstOpponent = first; newMatch.SecondOpponent = second; newRound.Add(newMatch); } // Jesper har tilføjet herfra t.Add(newRound); if (printNewMatches) { Console.Clear(); Console.WriteLine("Kommende Runde:"); Console.WriteLine("---------------"); List <Match> matches = newRound.GetMatches(); int i = 1; foreach (Match match in matches) { Console.WriteLine(i + ". " + match.FirstOpponent.Name + " vs. " + match.SecondOpponent.Name); i++; } Console.ReadKey(); } } else { // SetStatusFinished() er tilføjet til tournament-klassen t.SetStatusFinished(); Console.WriteLine("Turneringen " + t.Name + " er afsluttet"); Console.ReadKey(); Console.Clear(); } // Jesper out. }
public void ScheduleNewRound(string tournamentName, bool printNewMatches = true) { Tournament t = tournamentRepo.GetTournament(tournamentName); int numberOfRound = t.GetNumberOfRounds(); if (numberOfRound == 0) { List <Team> teams = t.GetTeams(); } else { Round lastRound = t.GetRound(numberOfRound - 1); bool isRoundFinished = lastRound.IsRoundFinished(); if (isRoundFinished == true) { List <Team> teams = lastRound.GetWinningTeams(); if (teams.Count >= 2) { var rnd = new Random(); rnd.NextDouble(); Dictionary <Team, double> RandomList = new Dictionary <Team, double>(); foreach (Team team in lastRound.GetWinningTeams()) { RandomList.Add(team, rnd.NextDouble()); } RandomList.OrderByDescending(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value); List <Team> randomList = RandomList.Keys.ToList(); Round newRound = new Round(); if (teams.Count % 2 == 1) { Team newFreeRider = randomList.Min(); Team oldFreeRider = newRound.GetFreeRider(); do { newFreeRider = randomList.Min(); randomList.Remove(newFreeRider); }while (oldFreeRider == newFreeRider); newRound.NewFreeRider = newFreeRider; } int noMatches = teams.Count / 2; for (int i = 1; i <= noMatches; i++) { Match match = new Match(); foreach (Team team in randomList) { Team first; Team second; first = team; randomList.Remove(team); second = team; randomList.Remove(team); match.FirstOpponent = first; match.SecondOpponent = second; newRound.AddMatch(match); } } t.addRound(newRound); Console.WriteLine("Ny runde tilføjet"); Console.ReadKey(); } else { t.SetStatusFinished(true); } Console.WriteLine("Turneringen er overstået"); Console.ReadKey(); } } }