/// <summary> /// Creates rounds and matches for the pre-season schedule. /// </summary> /// <param name="schedule">The schedule.</param> /// <param name="teams">The teams.</param> private Dictionary <int, List <Match> > CreatePreSeasonRoundsAndMatches(List <Team> teams) { if (teams.GroupBy(t => t.Id).Where(g => g.Count() > 1).Any()) { throw new ArgumentException("No duplicate teams allowed"); } teams.Shuffle(); var roundRobin = new RoundRobinTournamentManager(); var schedule = roundRobin.GetSchedule(teams, Constants.HowManyPreSeasonFriendlies, false); return(schedule); }
public void GetLeagueSchedule_ForEvenNumberOfTeams() { var roundRobinTournamentManager = new RoundRobinTournamentManager(); var teamA = new Team { Name = "A" }; var teamB = new Team { Name = "B" }; var teamC = new Team { Name = "C" }; var teamD = new Team { Name = "D" }; var teams = new List <Team> { teamA, teamB, teamC, teamD }; var schedule = roundRobinTournamentManager.GetSchedule(teams); // Totaal 6 rondes. Assert.AreEqual(6, schedule.Count); // De eerste ronde is A-D en B-C. var matchesRound1 = schedule[0]; Assert.AreEqual(2, matchesRound1.Count); Assert.AreEqual(teamA, matchesRound1[0].HomeTeam); Assert.AreEqual(teamD, matchesRound1[0].AwayTeam); Assert.AreEqual(teamB, matchesRound1[1].HomeTeam); Assert.AreEqual(teamC, matchesRound1[1].AwayTeam); // De tweede ronde is C-A en D-B. var matchesRound2 = schedule[1]; Assert.AreEqual(2, matchesRound2.Count); Assert.AreEqual(teamC, matchesRound2[0].HomeTeam); Assert.AreEqual(teamA, matchesRound2[0].AwayTeam); Assert.AreEqual(teamD, matchesRound2[1].HomeTeam); Assert.AreEqual(teamB, matchesRound2[1].AwayTeam); // De derde ronde is A-B en C-D. var matchesRound3 = schedule[2]; Assert.AreEqual(2, matchesRound3.Count); Assert.AreEqual(teamA, matchesRound3[0].HomeTeam); Assert.AreEqual(teamB, matchesRound3[0].AwayTeam); Assert.AreEqual(teamC, matchesRound3[1].HomeTeam); Assert.AreEqual(teamD, matchesRound3[1].AwayTeam); // De vierde ronde is D-A en C-B. var matchesRound4 = schedule[3]; Assert.AreEqual(2, matchesRound4.Count); Assert.AreEqual(teamD, matchesRound4[0].HomeTeam); Assert.AreEqual(teamA, matchesRound4[0].AwayTeam); Assert.AreEqual(teamC, matchesRound4[1].HomeTeam); Assert.AreEqual(teamB, matchesRound4[1].AwayTeam); // De vijfde ronde is A-C en B-D. var matchesRound5 = schedule[4]; Assert.AreEqual(2, matchesRound5.Count); Assert.AreEqual(teamA, matchesRound5[0].HomeTeam); Assert.AreEqual(teamC, matchesRound5[0].AwayTeam); Assert.AreEqual(teamB, matchesRound5[1].HomeTeam); Assert.AreEqual(teamD, matchesRound5[1].AwayTeam); // De zesde ronde is B-A en D-C. var matchesRound6 = schedule[5]; Assert.AreEqual(2, matchesRound6.Count); Assert.AreEqual(teamB, matchesRound6[0].HomeTeam); Assert.AreEqual(teamA, matchesRound6[0].AwayTeam); Assert.AreEqual(teamD, matchesRound6[1].HomeTeam); Assert.AreEqual(teamC, matchesRound6[1].AwayTeam); }