Beispiel #1
0
        public static SeasonRule SetupSeasonRule(int numberOfTeams)
        {
            var rule = new SeasonRule();

            /*
             * var leagueRule= new SeasonDivisionRule(DivisionLevel.League, "NHL", null);
             * var easternRule = new SeasonDivisionRule(DivisionLevel.Conference, "Eastern", leagueRule);
             * var westernRule = new SeasonDivisionRule(DivisionLevel.Conference, "Western", leagueRule);
             * var canadaRule = new SeasonDivisionRule(DivisionLevel.Country, "Canada", null);
             * var bcRule = new SeasonDivisionRule(DivisionLevel.Province, "BC", canadaRule);
             * var albertaRule = new SeasonDivisionRule(DivisionLevel.Province, "Alberta", canadaRule);
             * var ontarioRule = new SeasonDivisionRule(DivisionLevel.Province, "Ontario", canadaRule);
             * var quebecRule = new SeasonDivisionRule(DivisionLevel.Province, "Quebec", canadaRule);
             * var manitobaRule = new SeasonDivision
             *
             * leagueRule.AddChildRule(easternRule);
             * leagueRule.AddChildRule(westernRule);
             * canadaRule.AddChildRule(bcRule);
             * canadaRule.AddChildRule(albertaRule);
             * canadaRule.AddChildRule(ontarioRule);
             * canadaRule.AddChildRule(quebecRule);
             */
            var leagueName     = "NHL";
            var easternName    = "Eastern";
            var westernName    = "Western";
            var canadaName     = "Canada";
            var bcName         = "BC";
            var albertaName    = "Alberta";
            var ontarioName    = "Ontario";
            var quebecName     = "Quebec";
            var manitobaName   = "Manitoba";
            var usaName        = "USA";
            var michiganName   = "Michigan";
            var notOntarioName = "Not Ontario";

            var divisionRules = new List <SeasonDivisionRule>();

            AddDivisionRule(null, divisionRules, DivisionLevel.League, leagueName);
            AddDivisionRule(leagueName, divisionRules, DivisionLevel.Conference, easternName, westernName);
            AddDivisionRule(null, divisionRules, DivisionLevel.Country, canadaName, usaName);
            AddDivisionRule(canadaName, divisionRules, DivisionLevel.Province, bcName, albertaName, ontarioName, quebecName, manitobaName);
            AddDivisionRule(usaName, divisionRules, DivisionLevel.Province, michiganName);
            AddDivisionRule(null, divisionRules, DivisionLevel.SubDivision, notOntarioName);

            long id = 0;

            var toronto    = CreateTeam(id++, "Toronto", 5);
            var montreal   = CreateTeam(id++, "Montreal", 5);
            var ottawa     = CreateTeam(id++, "Ottawa", 5);
            var detroit    = CreateTeam(id++, "Detroit", 5);
            var quebecCity = CreateTeam(id++, "Quebec City", 5);
            var hamilton   = CreateTeam(id++, "Hamilton", 5);

            var vancouver = CreateTeam(id++, "Vancouver", 5);
            var calgary   = CreateTeam(id++, "Calgary", 5);
            var edmonton  = CreateTeam(id++, "Edmonton", 5);
            var winnipeg  = CreateTeam(id++, "Winnipeg", 5);

            var teamRules = new List <SeasonTeamRule>();


            AddTeamsForRule(easternName, divisionRules, teamRules, toronto, montreal, ottawa, detroit, quebecCity, hamilton);
            AddTeamsForRule(westernName, divisionRules, teamRules, vancouver, calgary, edmonton, winnipeg);
            AddTeamsForRule(bcName, divisionRules, teamRules, vancouver);
            AddTeamsForRule(albertaName, divisionRules, teamRules, calgary, edmonton);
            AddTeamsForRule(ontarioName, divisionRules, teamRules, ottawa, toronto, hamilton);
            AddTeamsForRule(quebecName, divisionRules, teamRules, montreal, quebecCity);
            AddTeamsForRule(manitobaName, divisionRules, teamRules, winnipeg);
            AddTeamsForRule(michiganName, divisionRules, teamRules, detroit);
            AddTeamsForRule(notOntarioName, divisionRules, teamRules, detroit, quebecCity, montreal);


            var leagueScheduleRule     = SeasonScheduleRule.CreateDivisionalRule("NHL Rule", divisionRules.Where(d => d.Name.Equals(leagueName)).First(), 2, true);
            var westernScheduleRule    = SeasonScheduleRule.CreateDivisionalRule("Western Rule", divisionRules.Where(d => d.Name.Equals(westernName)).First(), 3, true);
            var ontarioScheduleRule    = SeasonScheduleRule.CreateDivisionalRule("Ontario Rule", divisionRules.Where(d => d.Name.Equals(ontarioName)).First(), 2, true);
            var notOntarioScheduleRule = SeasonScheduleRule.CreateDivisionalRule("Not Ontario Rule", divisionRules.Where(d => d.Name.Equals(notOntarioName)).First(), 2, true);
            var easternScheduleRule    = SeasonScheduleRule.CreateDivisionalRule("Eastern Rule", divisionRules.Where(d => d.Name.Equals(easternName)).First(), 1, true);
            //var teamRule = SeasonScheduleRule.CreateTeamVsTeamRule("Team Rule", teamRules.Select(t => t.Parent).Where(t => t.Name.Equals("Montreal")).First(), teamRules.Select(t => t.Parent).Where(t => t.Name.Equals("Winnipeg")).First(), 55, true);
            var scheduleRules = new List <SeasonScheduleRule>()
            {
                leagueScheduleRule,
                westernScheduleRule,
                ontarioScheduleRule,
                notOntarioScheduleRule,
                easternScheduleRule
            };

            rule.DivisionRules = divisionRules;
            rule.TeamRules     = teamRules;
            rule.ScheduleRules = scheduleRules;

            return(rule);
        }
Beispiel #2
0
        public void ShouldCreateSeason()
        {
            var seasonRule = new SeasonRule()
            {
                Name = "Season Testing"
            };

            var league = new SeasonDivisionRule()
            {
                Name = "League", Level = DivisionLevel.League
            };
            var conf1 = new SeasonDivisionRule()
            {
                Name = "Conference 1", Level = DivisionLevel.Conference
            };
            var conf2 = new SeasonDivisionRule()
            {
                Name = "Conference 2", Level = DivisionLevel.Conference
            };
            var div1 = new SeasonDivisionRule()
            {
                Name = "Div 1", Level = DivisionLevel.Division
            };
            var div2 = new SeasonDivisionRule()
            {
                Name = "Div 2", Level = DivisionLevel.Division
            };
            var div3 = new SeasonDivisionRule()
            {
                Name = "Div 3", Level = DivisionLevel.Division
            };
            var div4 = new SeasonDivisionRule()
            {
                Name = "Div 4", Level = DivisionLevel.Division
            };

            var oddDivParent = new SeasonDivisionRule()
            {
                Name = "Odd Div", Level = DivisionLevel.Region
            };
            var oddDivChild = new SeasonDivisionRule()
            {
                Name = "Odd Div Child", Level = DivisionLevel.City
            };

            var teamRule1 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 1, Name = "Team 1"
                }, Active = true, Division = div1
            };
            var teamRule2 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 2, Name = "Team 2"
                }, Active = true, Division = div1
            };
            var teamRule3 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 3, Name = "Team 3"
                }, Active = true, Division = div1
            };
            var teamRule4 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 4, Name = "Team 4"
                }, Active = true, Division = div2
            };
            var teamRule5 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 5, Name = "Team 5"
                }, Active = true, Division = div2
            };
            var teamRule6 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 6, Name = "Team 6"
                }, Active = true, Division = div2
            };
            var teamRule7 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 7, Name = "Team 7"
                }, Active = true, Division = div3
            };
            var teamRule8 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 8, Name = "Team 8"
                }, Active = true, Division = div3
            };
            var teamRule9 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 9, Name = "Team 9"
                }, Active = true, Division = div3
            };
            var teamRule10 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 10, Name = "Team 10"
                }, Active = true, Division = div4
            };
            var teamRule11 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 11, Name = "Team 11"
                }, Active = true, Division = div4
            };
            var teamRule12 = new SeasonTeamRule()
            {
                Parent = new Team()
                {
                    Id = 12, Name = "Team 12"
                }, Active = true, Division = div4
            };

            var teamRule13 = new SeasonTeamRule()
            {
                Parent = teamRule6.Parent, Active = true, Division = oddDivChild
            };
            var teamRule14 = new SeasonTeamRule()
            {
                Parent = teamRule12.Parent, Active = true, Division = oddDivChild
            };

            league.AddChildRule(conf1);
            league.AddChildRule(conf2);
            conf1.AddChildRule(div1);
            conf1.AddChildRule(div2);
            conf2.AddChildRule(div3);
            conf2.AddChildRule(div4);
            oddDivParent.AddChildRule(oddDivChild);

            seasonRule.DivisionRules = new List <SeasonDivisionRule>()
            {
                league, conf1, conf2, div1, div2, div3, div4, oddDivParent, oddDivChild
            };
            seasonRule.TeamRules = new List <SeasonTeamRule>()
            {
                teamRule1, teamRule2, teamRule3, teamRule4, teamRule5, teamRule6, teamRule7, teamRule8, teamRule9, teamRule10, teamRule11, teamRule12, teamRule13, teamRule14
            };
            //where will the game creator come from?
            var season = seasonRule.Create(null, 1, 1, 1, new SeasonGameCreator(null, true, 2));

            Assert.StrictEqual(9, season.Divisions.Count);
            Assert.StrictEqual(12, season.Teams.Count);

            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("League")).First().Children.Count);
            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First().Children.Count);
            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First().Children.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Div 1")).First().Children.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Div 2")).First().Children.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Div 3")).First().Children.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Div 4")).First().Children.Count);
            Assert.StrictEqual(1, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div")).First().Children.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div Child")).First().Children.Count);

            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("League")).First()._Teams.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First()._Teams.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First()._Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 1")).First()._Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 2")).First()._Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 3")).First()._Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 4")).First()._Teams.Count);
            Assert.StrictEqual(0, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div")).First()._Teams.Count);
            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div Child")).First()._Teams.Count);

            Assert.StrictEqual(12, season.Divisions.ToList().Where(d => d.Name.Equals("League")).First().Teams.Count);
            Assert.StrictEqual(6, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First().Teams.Count);
            Assert.StrictEqual(6, season.Divisions.ToList().Where(d => d.Name.Equals("Conference 1")).First().Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 1")).First().Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 2")).First().Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 3")).First().Teams.Count);
            Assert.StrictEqual(3, season.Divisions.ToList().Where(d => d.Name.Equals("Div 4")).First().Teams.Count);

            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div")).First().Teams.Count);
            Assert.StrictEqual(2, season.Divisions.ToList().Where(d => d.Name.Equals("Odd Div Child")).First().Teams.Count);
        }