Exemple #1
0
        private String RespondToStandings(IBaseballSensor sensor, BaseballTeam team)
        {
            BaseballStandings             standings = sensor.LoadStandings();
            BaseballTeamStanding          divisionStandings, wildcardStandings = null;
            BaseballStandingsWithWildcard fullStandings = standings as BaseballStandingsWithWildcard;

            bool gotStandingsSuccessful = false;

            if (fullStandings != null)
            {
                gotStandingsSuccessful = fullStandings.TryGetStandingsForTeam(team, out divisionStandings, out wildcardStandings);
            }
            else
            {
                gotStandingsSuccessful = standings.TryGetStandingsForTeam(team, out divisionStandings);
            }

            if (!gotStandingsSuccessful)
            {
                return(String.Format("I couldn't find any information about the {0} this year.", team.Name));
            }
            else if (divisionStandings.GamesBack == 0)
            {
                return(String.Format("The {0} lead the {1}.", team.Name, team.Division));
            }
            else if (wildcardStandings == null)
            {
                return(String.Format("The {0} are {1} games behind the leaders in the {2}.",
                                     team.Name, divisionStandings.GamesBack * -1, team.Division));
            }
            else if (wildcardStandings.GamesBack > 0)
            {
                return(String.Format("The {0} are {1} games behind the leaders in the {2}, and lead the wildcard standings by {3} games.",
                                     team.Name, divisionStandings.GamesBack * -1, team.Division, wildcardStandings.GamesBack));
            }
            else if (wildcardStandings.GamesBack == 0)
            {
                return(String.Format("The {0} are {1} games behind the leaders in the {2}, and just barely have a wildcard spot.",
                                     team.Name, divisionStandings.GamesBack * -1, team.Division));
            }
            else
            {
                return(String.Format("The {0} are {1} games behind the leaders in the {2}, and are {3} games behind in the wildcard standings.",
                                     team.Name, divisionStandings.GamesBack * -1, team.Division, wildcardStandings.GamesBack * -1));
            }
        }
Exemple #2
0
        private void StandingsTest(String teamName, int gamesBackDivisional, int?gamesBackWildcard, String expectedResponse)
        {
            Dictionary <String, String> expectedParams = new Dictionary <string, string>
            {
                { "Command", "baseball" },
                { "Parameter", "Standings" },
                { "Time", "DayOfWeek=today;" },
                { "Team", teamName },
            };
            Mock <IBaseballSensor> sensor = new Mock <IBaseballSensor>(MockBehavior.Strict);

            sensor.Setup(s => s.IsValid).Returns(true);
            sensor.Setup(s => s.Teams).Returns(_mockTeams);
            sensor.Setup(s => s.League).Returns("MLB");
            BaseballTeamStanding teamStandings = new BaseballTeamStanding();

            teamStandings.Team      = _mockTeams[0];
            teamStandings.GamesBack = gamesBackDivisional;
            BaseballStandings standings;

            if (gamesBackWildcard.HasValue)
            {
                standings = new BaseballStandingsWithWildcard();
                BaseballTeamStanding teamStandingsWildcard = new BaseballTeamStanding();
                teamStandingsWildcard.Team      = _mockTeams[0];
                teamStandingsWildcard.GamesBack = gamesBackWildcard.Value;
                (standings as BaseballStandingsWithWildcard).AddStandingsForTeam(teamStandings, teamStandingsWildcard);
            }
            else
            {
                standings = new BaseballStandings();
                standings.AddStandingsForTeam(teamStandings);
            }
            sensor.Setup(s => s.LoadStandings()).Returns(standings);
            AddComponentToConfigurationManager(sensor.Object);
            CurrentConversation = new BaseballConversation(GetConfigurationManager(), new List <IOInterfaceReference>());

            Assert.AreEqual(expectedResponse, RunSingleConversation <BaseballConversation>(expectedParams));

            sensor.Verify(s => s.LoadStandings(), Times.Exactly(1));
        }
Exemple #3
0
        /// <summary>
        /// Adds the given divisional and wildcard standings for a team.
        /// </summary>
        /// <param name="divisionStandings">The divisional standings for the team.</param>
        /// <param name="wildcardStandings">The wildcard standings for the team.</param>
        /// <param name="division">The division that the standings should be added.
        /// </param>
        public void AddStandingsForTeam(BaseballTeamStanding divisionStandings, BaseballTeamStanding wildcardStandings, MLBDivision division)
        {
            AddStandingsForTeam(divisionStandings, wildcardStandings);
            switch (division)
            {
            case MLBDivision.NLEast:
                _nlEastStandings.Add(divisionStandings);
                _nlWildcardStandings.Add(wildcardStandings);
                break;

            case MLBDivision.NLCentral:
                _nlCentralStandings.Add(divisionStandings);
                _nlWildcardStandings.Add(wildcardStandings);
                break;

            case MLBDivision.NLWest:
                _nlWestStandings.Add(divisionStandings);
                _nlWildcardStandings.Add(wildcardStandings);
                break;

            case MLBDivision.ALEast:
                _alEastStandings.Add(divisionStandings);
                _alWildcardStandings.Add(wildcardStandings);
                break;

            case MLBDivision.ALCentral:
                _alCentralStandings.Add(divisionStandings);
                _alWildcardStandings.Add(wildcardStandings);
                break;

            case MLBDivision.ALWest:
                _alWestStandings.Add(divisionStandings);
                _alWildcardStandings.Add(wildcardStandings);
                break;

            default:
                break;
            }
        }
Exemple #4
0
        private void UpdateDailyStandings()
        {
            XmlDocument  doc       = new XmlDocument();
            MLBStandings standings = new MLBStandings();
            DateTime     currDate  = DateTime.Now;

            while (DateTime.Now.Subtract(currDate).Days < 7)
            {
                currDate = currDate.Subtract(TimeSpan.FromDays(1));
                doc.Load(GetEpgFile(currDate));
                if (doc == null)
                {
                    break;
                }
                foreach (XmlElement game in doc.SelectNodes("/epg/game"))
                {
                    BaseballTeamStanding homeDivStanding      = new BaseballTeamStanding();
                    BaseballTeamStanding homeWildcardStanding = new BaseballTeamStanding();
                    String       homeTeamName = game.Attributes["home_team_name"].Value;
                    BaseballTeam homeTeam     = Teams.SingleOrDefault(t => t.Key.Equals(homeTeamName));
                    if (!standings.TryGetStandingsForTeam(homeTeam, out homeDivStanding, out homeWildcardStanding) &&
                        !String.IsNullOrEmpty(game.Attributes["home_games_back"].Value) &&
                        !String.IsNullOrEmpty(game.Attributes["home_games_back_wildcard"].Value))
                    {
                        homeDivStanding           = new BaseballTeamStanding();
                        homeWildcardStanding      = new BaseballTeamStanding();
                        homeDivStanding.Team      = homeTeam;
                        homeWildcardStanding.Team = homeTeam;

                        String gamesBack = game.Attributes["home_games_back"].Value;
                        if (gamesBack.Equals("-"))
                        {
                            homeDivStanding.GamesBack = 0;
                        }
                        else
                        {
                            homeDivStanding.GamesBack = -1 * Double.Parse(gamesBack);
                        }

                        gamesBack = game.Attributes["home_games_back_wildcard"].Value;
                        if (gamesBack.Equals("-"))
                        {
                            homeWildcardStanding.GamesBack = 0;
                        }
                        else if (gamesBack.StartsWith("+"))
                        {
                            homeWildcardStanding.GamesBack = Double.Parse(gamesBack);
                        }
                        else
                        {
                            homeWildcardStanding.GamesBack = -1 * Double.Parse(gamesBack);
                        }

                        standings.AddStandingsForTeam(homeDivStanding, homeWildcardStanding, (Teams.SingleOrDefault(t => t.Key.Equals(homeTeamName)) as MLBTeam).Division);
                    }

                    BaseballTeamStanding awayDivStanding      = new BaseballTeamStanding();
                    BaseballTeamStanding awayWildcardStanding = new BaseballTeamStanding();
                    String       awayTeamName = game.Attributes["away_team_name"].Value;
                    BaseballTeam awayTeam     = Teams.SingleOrDefault(t => t.Key.Equals(awayTeamName));
                    if (!standings.TryGetStandingsForTeam(awayTeam, out awayDivStanding, out awayWildcardStanding) &&
                        !String.IsNullOrEmpty(game.Attributes["away_games_back"].Value))
                    {
                        awayDivStanding           = new BaseballTeamStanding();
                        awayWildcardStanding      = new BaseballTeamStanding();
                        awayDivStanding.Team      = awayTeam;
                        awayWildcardStanding.Team = awayTeam;

                        String gamesBack = game.Attributes["away_games_back"].Value;
                        if (gamesBack.Equals("-"))
                        {
                            awayDivStanding.GamesBack = 0;
                        }
                        else
                        {
                            awayDivStanding.GamesBack = -1 * Double.Parse(gamesBack);
                        }

                        gamesBack = game.Attributes["away_games_back_wildcard"].Value;
                        if (gamesBack.Equals("-") || String.IsNullOrEmpty(gamesBack))
                        {
                            awayWildcardStanding.GamesBack = 0;
                        }
                        else if (gamesBack.StartsWith("+"))
                        {
                            awayWildcardStanding.GamesBack = Double.Parse(gamesBack);
                        }
                        else
                        {
                            awayWildcardStanding.GamesBack = -1 * Double.Parse(gamesBack);
                        }

                        standings.AddStandingsForTeam(awayDivStanding, awayWildcardStanding, (Teams.SingleOrDefault(t => t.Key.Equals(awayTeamName)) as MLBTeam).Division);
                    }
                }
            }
            _lastTimeStandingsUpdated = DateTime.Now;
            _dailyStandings           = standings;
        }