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); }
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()); }
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); }
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()); }
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); }
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); }
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(); }
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>() }; }
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()); }
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); }
public InningsParser(CricketMatch match) { _match = match; }
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); }
public MatchInfoParser(CricketMatch match, DependencyFinder finder) { _match = match; _finder = finder; }