Example #1
0
        public void InningsBreak()
        {
            var match = Matches.GetMatches().First(x => x.MatchId == 12345);

            match.NumberOfOvers = 40;
            var cricketMatch = new CricketMatch(match);

            cricketMatch.Teams.FirstOrDefault().IsHomeTeam = true;
            cricketMatch.CoinToss(10990, TossDecisionType.Batting);
            var homePlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId == 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();
            var awayPlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId != 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();

            cricketMatch.Teams.First(x => x.IsHomeTeam).Players  = homePlayers;
            cricketMatch.Teams.First(x => !x.IsHomeTeam).Players = awayPlayers;
            cricketMatch.StartInnings();
            var p1  = homePlayers.FirstOrDefault();
            var p2  = homePlayers.LastOrDefault();
            var ap3 = awayPlayers.FirstOrDefault();
            var ap4 = awayPlayers.LastOrDefault();

            cricketMatch.SetStrikerNonStrikerBatsmen(p1, true);
            cricketMatch.SetStrikerNonStrikerBatsmen(p2, false);
            cricketMatch.StartOver(ap3);
            cricketMatch.AddBall(BallType.Legitimate, RunsType.Run, BoundaryType.Four, 4, ap3, p1, false, null, null, DisMissalType.None);
            cricketMatch.AddBall(BallType.Legitimate, RunsType.Run, BoundaryType.None, 0, ap3, p1, true, p1, ap4, DisMissalType.Caught);
            cricketMatch.EndOver();
            cricketMatch.EndInnings();
            cricketMatch.SetMatchStatus(MatchStatus.Break);
            var sd = JsonConvert.SerializeObject(cricketMatch);
            var d  = JsonConvert.DeserializeObject <CricketMatch>(sd);

            Assert.IsTrue(cricketMatch != null);
        }
Example #2
0
        private static void ParseScorecard(FileStore dataStore, ScorecardDetails md)
        {
            CricketMatch m = dataStore.Load <CricketMatch>(CricketMatch.GenerateId(md.Season, md.MatchCode));

            if (m != null)
            {
                Log.InfoFormat("Match {0} ({1}) has already been imported", md.MatchCode, m);
                return;
            }

            Log.InfoFormat("Parsing scorecard for {0}", md);

            string scorecard = dataStore.LoadText(md.GenerateScorecardKey(), "html");

            if (string.IsNullOrEmpty(scorecard))
            {
                return;
            }

            DependencyFinder finder = new DependencyFinder(dataStore);
            ScorecardParser  parser = new ScorecardParser(md, finder);

            parser.Parse(scorecard);

            CricketMatch match = parser.Match;

            dataStore.Save(match, match.Id);

            Log.Info(match.ToLongString());
        }
Example #3
0
        public void StartOver()
        {
            var match = Matches.GetMatches().First(x => x.MatchId == 12345);

            match.NumberOfOvers = 40;
            var cricketMatch = new CricketMatch(match);

            cricketMatch.Teams.FirstOrDefault().IsHomeTeam = true;
            cricketMatch.CoinToss(10990, TossDecisionType.Batting);
            var homePlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId == 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();
            var awayPlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId != 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();

            cricketMatch.Teams.First(x => x.IsHomeTeam).Players  = homePlayers;
            cricketMatch.Teams.First(x => !x.IsHomeTeam).Players = awayPlayers;
            cricketMatch.StartInnings();
            var p1  = homePlayers.FirstOrDefault();
            var p2  = homePlayers.LastOrDefault();
            var ap3 = awayPlayers.FirstOrDefault();

            cricketMatch.SetStrikerNonStrikerBatsmen(p1, true);
            cricketMatch.SetStrikerNonStrikerBatsmen(p2, false);
            cricketMatch.StartOver(ap3);
            var sd = JsonConvert.SerializeObject(cricketMatch);
            var d  = JsonConvert.DeserializeObject <CricketMatch>(sd);

            Assert.IsTrue(cricketMatch != null);
        }
        public static List <BattingRecord> Run(CricketMatch match)
        {
            var battingRecords = from i in match.Innings
                                 from b in i.Batting
                                 select CreateBattingRecord(b, i.TeamInningsNumber == 1);

            return(battingRecords.ToList());
        }
        public void Initialize()
        {
            _commentaryMock = new Mock <ICommentary>();
            _playersMock    = new Mock <IPlayers>();
            _weightedRandomGeneratorMock = new Mock <IWeightedRandomGenerator>();

            _cricket = new CricketMatch(_totalRunsToWin, _totalOver, _playersMock.Object, _commentaryMock.Object, _weightedRandomGeneratorMock.Object);
        }
Example #6
0
        public static List <BowlingRecord> Run(CricketMatch match)
        {
            var bowlingRecords = from i in match.Innings
                                 where i.Bowling != null
                                 from b in i.Bowling
                                 select CreateBowlingRecord(b);

            return(bowlingRecords.ToList());
        }
Example #7
0
        public void ConfirmMatchInfoAndStartMatch()
        {
            var match = Matches.GetMatches().First(x => x.MatchId == 12345);

            match.NumberOfOvers = 40;
            var cricketMatch = new CricketMatch(match);
            var sd           = JsonConvert.SerializeObject(cricketMatch);
            var d            = JsonConvert.DeserializeObject <CricketMatch>(sd);;

            Assert.IsTrue(match != null);
        }
Example #8
0
        public void CoinToss()
        {
            var match = Matches.GetMatches().First(x => x.MatchId == 12345);

            match.NumberOfOvers = 40;
            var cricketMatch = new CricketMatch(match);

            cricketMatch.CoinToss(10990, TossDecisionType.Batting);
            var sd = JsonConvert.SerializeObject(cricketMatch);
            var d  = JsonConvert.DeserializeObject <CricketMatch>(sd);

            Assert.IsTrue(cricketMatch != null);
        }
Example #9
0
        public void Validate_WithZeroTargetRun_ThrowsException()
        {
            //Arrange
            var playerList = new List <Player> {
                new Player("Carmel", 0, false, 0, new List <int> {
                    5, 30, 25, 10, 15, 01, 09, 05
                })
            };
            var cricketWithoutOver = new CricketMatch(0, 40, _playersMock.Object, _commentaryMock.Object, _weightedRandomGeneratorMock.Object);

            //Act
            _playersMock.Setup(x => x.getPlayersList()).Returns(playerList);
            cricketWithoutOver.BeginTheMatch();
        }
Example #10
0
 public ScorecardParser(ScorecardDetails details, DependencyFinder finder)
 {
     _finder = finder;
     _match  = new CricketMatch
     {
         Id        = CricketMatch.GenerateId(details.Season, details.MatchCode),
         MatchCode = details.MatchCode,
         HomeTeam  = details.HomeTeam,
         AwayTeam  = details.AwayTeam,
         Season    = details.Season,
         StartDate = details.Date,
         Players   = "11 per side",
         Innings   = new List <Innings>()
     };
 }
Example #11
0
        public static List <FieldingRecord> Run(CricketMatch match)
        {
            var fieldingRecord = from i in match.Innings
                                 from b in i.Batting
                                 where
                                 ((b.HowOut == HowOutType.Caught || b.HowOut == HowOutType.Stumped) &&
                                  !string.IsNullOrEmpty(b.FielderId))
                                 select new FieldingRecord
            {
                PlayerId  = b.FielderId,
                Team      = i.Bowling[0].Team,
                Catches   = b.HowOut == HowOutType.Caught ? 1 : 0,
                Stumpings = b.HowOut == HowOutType.Stumped ? 1 : 0
            };

            return(fieldingRecord.ToList());
        }
Example #12
0
        public void SelectMatchPlayersFromSquad()
        {
            var match = Matches.GetMatches().First(x => x.MatchId == 12345);

            match.NumberOfOvers = 40;
            var cricketMatch = new CricketMatch(match);

            cricketMatch.Teams.FirstOrDefault().IsHomeTeam = true;
            cricketMatch.CoinToss(10990, TossDecisionType.Batting);
            var homePlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId == 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();
            var awayPlayers = Players.GetPlayers().Where(x => x.PlayerRole.TeamId != 10990).Take(4)
                              .Select(x => new CricketPlayer(x)).ToList();

            cricketMatch.Teams.First(x => x.IsHomeTeam).Players  = homePlayers;
            cricketMatch.Teams.First(x => !x.IsHomeTeam).Players = awayPlayers;
            var sd = JsonConvert.SerializeObject(cricketMatch);
            var d  = JsonConvert.DeserializeObject <CricketMatch>(sd);

            Assert.IsTrue(cricketMatch != null);
        }
Example #13
0
 public InningsParser(CricketMatch match)
 {
     _match = match;
 }
Example #14
0
        private void RunMapFunctions(FileStore dataStore, Season season)
        {
            CrawlResults crawlResults = GetCrawlResultsForSeason(dataStore, season);

            if (crawlResults == null)
            {
                Log.WarnFormat("Season {0} has not been crawled yet.", season.Name);
                return;
            }

            Log.InfoFormat("Map started at {0} for season {1}", DateTime.Now.ToShortTimeString(), crawlResults.Season);

            var matchRecords = crawlResults.Classifications.SelectMany(m => m.Scorecards);

            if (matchRecords.Count() == 0)
            {
                Log.InfoFormat("No match records found for {0}", season.Name);
                return;
            }


            var battingTasks  = new Queue <Task <List <BattingRecord> > >();
            var bowlingTasks  = new Queue <Task <List <BowlingRecord> > >();
            var fieldingTasks = new Queue <Task <List <FieldingRecord> > >();

            foreach (ScorecardDetails details in matchRecords)
            {
                string       id    = CricketMatch.GenerateId(details.Season, details.MatchCode);
                CricketMatch match = dataStore.Load <CricketMatch>(id);
                if (match != null)
                {
                    battingTasks.Enqueue(Task <List <BattingRecord> > .Factory.StartNew(() => IndividualBattingMap.Run(match)));
                    bowlingTasks.Enqueue(Task <List <BowlingRecord> > .Factory.StartNew(() => IndividualBowlingMap.Run(match)));
                    fieldingTasks.Enqueue(Task <List <FieldingRecord> > .Factory.StartNew(() => IndividualFieldingMap.Run(match)));
                }
            }

            List <BattingRecord>  battingRecords  = new List <BattingRecord>();
            List <BowlingRecord>  bowlingRecords  = new List <BowlingRecord>();
            List <FieldingRecord> fieldingRecords = new List <FieldingRecord>();

            Task[] continuations = new[] {
                Task.Factory.ContinueWhenAll(battingTasks.ToArray(),
                                             completedTasks =>
                {
                    foreach (var task in completedTasks)
                    {
                        if (task.Exception == null)
                        {
                            battingRecords.AddRange(task.Result);
                        }
                        else
                        {
                            Log.Error("Unexpected exception", task.Exception);
                        }
                    }
                }),
                Task.Factory.ContinueWhenAll(bowlingTasks.ToArray(),
                                             completedTasks =>
                {
                    foreach (var task in completedTasks)
                    {
                        if (task.Exception == null)
                        {
                            bowlingRecords.AddRange(task.Result);
                        }
                        else
                        {
                            Log.Error("Unexpected exception", task.Exception);
                        }
                    }
                }),
                Task.Factory.ContinueWhenAll(fieldingTasks.ToArray(),
                                             completedTasks =>
                {
                    foreach (var task in completedTasks)
                    {
                        if (task.Exception == null)
                        {
                            fieldingRecords.AddRange(task.Result);
                        }
                        else
                        {
                            Log.Error("Unexpected exception", task.Exception);
                        }
                    }
                })
            };

            Task.WaitAll(continuations);



            dataStore.Save(battingRecords, IndividualBattingMap.GenerateId(season.Name));
            dataStore.Save(bowlingRecords, IndividualBowlingMap.GenerateId(season.Name));
            dataStore.Save(fieldingRecords, IndividualFieldingMap.GenerateId(season.Name));

            Log.InfoFormat("Scorecard parsing finished at {0} for season {1}", DateTime.Now.ToShortTimeString(), season.Name);
        }
Example #15
0
 public MatchInfoParser(CricketMatch match, DependencyFinder finder)
 {
     _match  = match;
     _finder = finder;
 }