public FootballFixtureStrategy(IFixtureRepository fixtureRepository, ISqlLinqStoredProceduresRepository storedProcRepository, IWebRepositoryProvider webRepositoryProvider) { this.fixtureRepository = fixtureRepository; this.storedProcRepository = storedProcRepository; this.webRepositoryProvider = webRepositoryProvider; }
public TennisFixtureStrategy(IFixtureRepository fixtureRepository, ISqlLinqStoredProceduresRepository storedProcRepository, IWebRepositoryProvider webRepositoryProvider) { this.fixtureRepository = fixtureRepository; this.storedProcRepository = storedProcRepository; this.webRepositoryProvider = webRepositoryProvider; }
public AbstractOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (sport == null) { throw new ArgumentNullException("sport"); } if (bookmakerRepository == null) { throw new ArgumentNullException("bookmakerRepository"); } if (fixtureRepository == null) { throw new ArgumentNullException("fixtureRepository"); } if (webRepositoryProvider == null) { throw new ArgumentNullException("webRepository"); } this.sport = sport; this.bookmakerRepository = bookmakerRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public AbstractCouponStrategy(IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider, IValueOptions valueOptions) { if (bookmakerRepository == null) { throw new ArgumentNullException("bookmakerRepository"); } if (fixtureRepository == null) { throw new ArgumentNullException("fixtureRepository"); } if (webRepositoryProvider == null) { throw new ArgumentNullException("webRepository"); } if (valueOptions == null) { throw new ArgumentNullException("valueOptions"); } this.bookmakerRepository = bookmakerRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; this.valueOptions = valueOptions; this.missingAlias = new List <MissingTeamPlayerAliasObject>(); }
public CouponStrategyProvider(IBookmakerRepository bookmakerService, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { this.bookmakerRepository = bookmakerService; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public TennisConsole(ITennisFacadeAdminService tennisService, IWebRepositoryProvider webRepositoryProvider = null, ITwitterClient twitter = null) { if (tennisService == null) throw new ArgumentNullException("tennisService"); this.tennisService = tennisService; this.webRepositoryProvider = webRepositoryProvider; this.twitter = twitter; }
public void SetUp() { this.tournamentsToTest = new Dictionary <string, IEnumerable <GenericMatchCoupon> >(); this.tournamentCouponUriLookup = new Dictionary <string, Uri>(); this.tournamentCouponUriLookup.Add("VTR Open|Best Betting", new Uri("http://odds.bestbetting.com/tennis/atp-vtr-open/")); this.tournamentCouponUriLookup.Add("VTR Open|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-vina-del-mar")); this.tournamentCouponUriLookup.Add("VTR Open|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-vina-del-mar")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Best Betting", new Uri("http://odds.bestbetting.com/tennis/pbz-zagreb-indoors/")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-zagreb")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-zagreb")); this.tournamentCouponUriLookup.Add("Open Sud de France|Best Betting", new Uri("http://odds.bestbetting.com/tennis/open-sud-de-france/")); this.tournamentCouponUriLookup.Add("Open Sud de France|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-montpellier")); this.tournamentCouponUriLookup.Add("Open Sud de France|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-montpellier")); this.tennisTournaments = new List <string>() { "VTR Open", "PBZ Zagreb Indoors", "Open Sud de France" }; this.oddsSources = new List <string>() { "Best Betting", "Odds Checker Web", "Odds Checker Mobi" }; this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .CanGetExternalSource() .HasGetAliasWhichReturnsItself(); this.mockBookmakerRepository = BuildBookmakerRepository.Create() .ReturnsTournamentCouponURLs(this.tournamentCouponUriLookup); this.valueOptions = new ValueOptions(); this.bestBettingFootballStrategy = new BestBettingCouponStrategy <BestBettingCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.bestBettingTennisStrategy = new BestBettingCouponStrategy <BestBettingCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerMobiFootballStrategy = new OddsCheckerMobiCouponStrategy <OddsCheckerMobiCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerMobiTennisStrategy = new OddsCheckerMobiCouponStrategy <OddsCheckerMobiCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerWebFootballStrategy = new OddsCheckerWebCouponStrategy <OddsCheckerWebCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerWebTennisStrategy = new OddsCheckerWebCouponStrategy <OddsCheckerWebCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.couponStrategies = new Dictionary <string, AbstractCouponStrategy>() { { "Best Betting|Football", this.bestBettingFootballStrategy }, { "Best Betting|Tennis", this.bestBettingTennisStrategy }, { "Odds Checker Mobi|Football", this.oddsCheckerMobiFootballStrategy }, { "Odds Checker Mobi|Tennis", this.oddsCheckerMobiTennisStrategy }, { "Odds Checker Web|Football", this.oddsCheckerWebFootballStrategy }, { "Odds Checker Web|Tennis", this.oddsCheckerWebTennisStrategy } }; }
public AbstractPredictionStrategy(IPredictionRepository predictionRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (fixtureRepository == null) throw new ArgumentNullException("fixtureRepository"); if (predictionRepository == null) throw new ArgumentNullException("preictionRepository"); if (webRepositoryProvider == null) throw new ArgumentNullException("webRepository"); this.predictionRepository = predictionRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public OddsStrategyProvider(IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (bookmakerRepository == null) throw new ArgumentNullException("bookmakerRepository"); if (fixtureRepository == null) throw new ArgumentNullException("fixtureRepository"); if (webRepositoryProvider == null) throw new ArgumentNullException("webRepository"); this.bookmakerRepository = bookmakerRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public TennisConsole(ITennisFacadeAdminService tennisService, IWebRepositoryProvider webRepositoryProvider = null, ITwitterClient twitter = null) { if (tennisService == null) { throw new ArgumentNullException("tennisService"); } this.tennisService = tennisService; this.webRepositoryProvider = webRepositoryProvider; this.twitter = twitter; }
public AbstractOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (sport == null) throw new ArgumentNullException("sport"); if (bookmakerRepository == null) throw new ArgumentNullException("bookmakerRepository"); if (fixtureRepository == null) throw new ArgumentNullException("fixtureRepository"); if (webRepositoryProvider == null) throw new ArgumentNullException("webRepository"); this.sport = sport; this.bookmakerRepository = bookmakerRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public void SetUp() { this.tournamentsToTest = new Dictionary<string, IEnumerable<GenericMatchCoupon>>(); this.tournamentCouponUriLookup = new Dictionary<string, Uri>(); this.tournamentCouponUriLookup.Add("VTR Open|Best Betting", new Uri("http://odds.bestbetting.com/tennis/atp-vtr-open/")); this.tournamentCouponUriLookup.Add("VTR Open|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-vina-del-mar")); this.tournamentCouponUriLookup.Add("VTR Open|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-vina-del-mar")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Best Betting", new Uri("http://odds.bestbetting.com/tennis/pbz-zagreb-indoors/")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-zagreb")); this.tournamentCouponUriLookup.Add("PBZ Zagreb Indoors|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-zagreb")); this.tournamentCouponUriLookup.Add("Open Sud de France|Best Betting", new Uri("http://odds.bestbetting.com/tennis/open-sud-de-france/")); this.tournamentCouponUriLookup.Add("Open Sud de France|Odds Checker Web", new Uri("http://www.oddschecker.com/tennis/atp-montpellier")); this.tournamentCouponUriLookup.Add("Open Sud de France|Odds Checker Mobi", new Uri("http://oddschecker.mobi/tennis/mens-tour/atp-montpellier")); this.tennisTournaments = new List<string>() { "VTR Open", "PBZ Zagreb Indoors", "Open Sud de France" }; this.oddsSources = new List<string>() { "Best Betting", "Odds Checker Web", "Odds Checker Mobi" }; this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .CanGetExternalSource() .HasGetAliasWhichReturnsItself(); this.mockBookmakerRepository = BuildBookmakerRepository.Create() .ReturnsTournamentCouponURLs(this.tournamentCouponUriLookup); this.valueOptions = new ValueOptions(); this.bestBettingFootballStrategy = new BestBettingCouponStrategy<BestBettingCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.bestBettingTennisStrategy = new BestBettingCouponStrategy<BestBettingCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerMobiFootballStrategy = new OddsCheckerMobiCouponStrategy<OddsCheckerMobiCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerMobiTennisStrategy = new OddsCheckerMobiCouponStrategy<OddsCheckerMobiCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerWebFootballStrategy = new OddsCheckerWebCouponStrategy<OddsCheckerWebCompetitionFootball>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.oddsCheckerWebTennisStrategy = new OddsCheckerWebCouponStrategy<OddsCheckerWebCompetitionTennis>(this.mockBookmakerRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider, this.valueOptions); this.couponStrategies = new Dictionary<string, AbstractCouponStrategy>() { { "Best Betting|Football", this.bestBettingFootballStrategy }, { "Best Betting|Tennis", this.bestBettingTennisStrategy }, { "Odds Checker Mobi|Football", this.oddsCheckerMobiFootballStrategy }, { "Odds Checker Mobi|Tennis", this.oddsCheckerMobiTennisStrategy }, { "Odds Checker Web|Football", this.oddsCheckerWebFootballStrategy }, { "Odds Checker Web|Tennis", this.oddsCheckerWebTennisStrategy } }; }
public void CreatesANewCollectionOfMatchesWithResults() { //Arrange this.matches = new List <E.Match>(); this.matchDate = new DateTime(2013, 02, 02); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasTheSkySportsURL(this.matchDate) .HasGetAliasWhichReturnsItself() .CanAddOrUpdateMatches(matches) .HasFootballTournamentEvents() .CanReturnScoreOutcome(); this.mockStoredProcRepository = new Mock <ISqlLinqStoredProceduresRepository>(); var footballFixtureStrategy = new TestableFootballFixtureStrategy(this.mockFixtureRepository, this.mockStoredProcRepository, this.webRepositoryProvider); //Act footballFixtureStrategy.UpdateResults(this.matchDate); //Assert //We have the right number of matches Assert.AreEqual(8, this.matches.Count(x => x.TournamentEvent.Id == 1)); //Prem Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 2)); //Champ Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 3)); //League 1 Assert.AreEqual(10, this.matches.Count(x => x.TournamentEvent.Id == 4)); //League 2 //We have collected the correct dates Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(12.75))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17.5))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17).AddMinutes(20))); Assert.AreEqual(37, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(15))); //Spot check a few matches var qprNowich = this.matches.Where(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich"); var yeovilBrentford = this.matches.Where(x => x.TeamsPlayerA.Name == "Yeovil" && x.TeamsPlayerB.Name == "Brentford"); var cheltenhamTorquay = this.matches.Where(x => x.TeamsPlayerA.Name == "Cheltenham" && x.TeamsPlayerB.Name == "Torquay"); Assert.AreEqual(1, qprNowich.Count()); Assert.AreEqual(1, yeovilBrentford.Count()); Assert.AreEqual(1, cheltenhamTorquay.Count()); Assert.AreEqual("0-0", qprNowich.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); Assert.AreEqual("3-0", yeovilBrentford.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); Assert.AreEqual("2-1", cheltenhamTorquay.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); }
public void CreatesACollectionOfPredictionsForTodaysMatches() { //Arrange matchDate = new DateTime(2013, 02, 06); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create(); this.mockPredictionRepository = BuildPredictionRepository.Create() .HasTodaysMatchesURL(); var predictionStrategy = new TennisPredictionStrategy(this.mockPredictionRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider); var valueOptions = new Model.ValueOptions() { Sport = new E.Sport { SportName = "Tennis" }, OddsSource = new E.ExternalSource { Source = "Not relevant" }, CouponDate = matchDate, Tournament = new E.Tournament { TournamentName = "Not relevant" } }; //Act var genericPredictions = predictionStrategy.FetchPredictions(valueOptions); //Assert Assert.AreEqual(18, genericPredictions.Count()); genericPredictions.ToList().ForEach(x => { Assert.AreEqual(x.OutcomeProbabilities.Sum(o => o.Value), 1.0, 0.01); }); //spot check Assert.AreEqual(1, genericPredictions.Count(x => x.TeamOrPlayerA == "Ramos" && x.TeamOrPlayerB == "Dutra Silva")); Assert.AreEqual(1, genericPredictions.Count(x => x.TeamOrPlayerA == "Sousa" && x.TeamOrPlayerB == "Gimeno-Traver")); Assert.AreEqual(1, genericPredictions.Count(x => x.TeamOrPlayerA == "Davydenko" && x.TeamOrPlayerB == "Nieminen")); }
public OddsStrategyProvider(IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (bookmakerRepository == null) { throw new ArgumentNullException("bookmakerRepository"); } if (fixtureRepository == null) { throw new ArgumentNullException("fixtureRepository"); } if (webRepositoryProvider == null) { throw new ArgumentNullException("webRepository"); } this.bookmakerRepository = bookmakerRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public AbstractPredictionStrategy(IPredictionRepository predictionRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) { if (fixtureRepository == null) { throw new ArgumentNullException("fixtureRepository"); } if (predictionRepository == null) { throw new ArgumentNullException("preictionRepository"); } if (webRepositoryProvider == null) { throw new ArgumentNullException("webRepository"); } this.predictionRepository = predictionRepository; this.fixtureRepository = fixtureRepository; this.webRepositoryProvider = webRepositoryProvider; }
public void UpdatesAnExistingMatch() { //Arrange this.matches = new List <E.Match>(); this.matchDate = new DateTime(2013, 02, 02); var matchToCheck = new E.Match() { TeamsPlayerA = new E.TeamPlayer { Name = "QPR" }, TeamsPlayerB = new E.TeamPlayer { Name = "Norwich" }, MatchDate = this.matchDate.AddHours(15) //wrong time }; matches.Add(matchToCheck); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasTheSkySportsURL(this.matchDate) .HasGetAliasWhichReturnsItself() .CanAddOrUpdateMatches(matches) .HasFootballTournamentEvents(); this.mockStoredProcRepository = new Mock <ISqlLinqStoredProceduresRepository>(); var footballFixtureStrategy = new TestableFootballFixtureStrategy(this.mockFixtureRepository, this.mockStoredProcRepository, this.webRepositoryProvider); //Act footballFixtureStrategy.UpdateFixtures(this.matchDate); //Assert //Hasn't been added twice Assert.AreEqual(1, this.matches.Count(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich")); //Time has been updated Assert.AreEqual(this.matchDate.AddHours(12.75), this.matches.First(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich").MatchDate); }
public void CreatesANewCollectionOfMatches() { //Arrange this.matches = new List<E.Match>(); this.matchDate = new DateTime(2013, 02, 02); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasTheSkySportsURL(this.matchDate) .HasGetAliasWhichReturnsItself() .CanAddOrUpdateMatches(matches) .HasFootballTournamentEvents(); this.mockStoredProcRepository = new Mock<ISqlLinqStoredProceduresRepository>(); var footballFixtureStrategy = new TestableFootballFixtureStrategy(this.mockFixtureRepository, this.mockStoredProcRepository, this.webRepositoryProvider); //Act footballFixtureStrategy.UpdateFixtures(this.matchDate); //Assert //We have the right number of matches Assert.AreEqual(8, this.matches.Count(x => x.TournamentEvent.Id == 1)); //Prem Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 2)); //Champ Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 3)); //League 1 Assert.AreEqual(10, this.matches.Count(x => x.TournamentEvent.Id == 4)); //League 2 //We have collected the correct dates Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(12.75))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17.5))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17).AddMinutes(20))); Assert.AreEqual(37, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(15))); //Spot check a few matches Assert.AreEqual(1, this.matches.Count(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich")); Assert.AreEqual(1, this.matches.Count(x => x.TeamsPlayerA.Name == "Yeovil" && x.TeamsPlayerB.Name == "Brentford")); Assert.AreEqual(1, this.matches.Count(x => x.TeamsPlayerA.Name == "Cheltenham" && x.TeamsPlayerB.Name == "Torquay")); }
public void UpdatesAnExistingMatch() { //Arrange this.matches = new List<E.Match>(); this.matchDate = new DateTime(2013, 02, 02); var matchToCheck = new E.Match() { TeamsPlayerA = new E.TeamPlayer { Name = "QPR" }, TeamsPlayerB = new E.TeamPlayer { Name = "Norwich" }, MatchDate = this.matchDate.AddHours(15) //wrong time }; matches.Add(matchToCheck); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasTheSkySportsURL(this.matchDate) .HasGetAliasWhichReturnsItself() .CanAddOrUpdateMatches(matches) .HasFootballTournamentEvents(); this.mockStoredProcRepository = new Mock<ISqlLinqStoredProceduresRepository>(); var footballFixtureStrategy = new TestableFootballFixtureStrategy(this.mockFixtureRepository, this.mockStoredProcRepository, this.webRepositoryProvider); //Act footballFixtureStrategy.UpdateFixtures(this.matchDate); //Assert //Hasn't been added twice Assert.AreEqual(1, this.matches.Count(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich")); //Time has been updated Assert.AreEqual(this.matchDate.AddHours(12.75), this.matches.First(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich").MatchDate); }
public OddsCheckerWebOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) : base(sport, bookmakerRepository, fixtureRepository, webRepositoryProvider) { }
public void CreatesACollectionOfPredictionsForTodaysMatches() { //Arrange matchDate = new DateTime(2013, 02, 02); #region Todays matches matches = new List <E.Match>() { new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "62", Name = "QPR" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "31", Name = "Norwich" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "0", Name = "Arsenal" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "39", Name = "Stoke" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "7", Name = "Everton" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "1", Name = "Aston Villa" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "14", Name = "Newcastle" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "6", Name = "Chelsea" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "35", Name = "Reading" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "16", Name = "Sunderland" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "19", Name = "West Ham" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "88", Name = "Swansea" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "66", Name = "Wigan" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "15", Name = "Southampton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "8", Name = "Fulham" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "12", Name = "Man United" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2", Name = "Birmingham" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "32", Name = "Nott'm Forest" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "3", Name = "Blackburn" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "47", Name = "Bristol City" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "45", Name = "Blackpool" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "44", Name = "Barnsley" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "24", Name = "Crystal Palace" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "5", Name = "Charlton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "25", Name = "Derby" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "53", Name = "Huddersfield" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "28", Name = "Ipswich" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "13", Name = "Middlesboro" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "9", Name = "Leeds" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "48", Name = "Cardiff" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "30", Name = "Millwall" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "77", Name = "Hull" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "59", Name = "Peterboro" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "22", Name = "Burnley" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "38", Name = "Sheffield Weds" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "21", Name = "Brighton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "41", Name = "Watford" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "4", Name = "Bolton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "71", Name = "Bury" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "95", Name = "Doncaster" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "52", Name = "Crewe" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "85", Name = "Scunthorpe" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "76", Name = "Hartlepool" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "57", Name = "Notts County" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "42", Name = "Milton Keynes" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "69", Name = "Bournemouth" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "33", Name = "Portsmouth" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "51", Name = "Colchester" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "34", Name = "Preston" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "86", Name = "Shrewsbury" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2015", Name = "Stevenage" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "79", Name = "Leyton Orient" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "65", Name = "Tranmere" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "73", Name = "Carlisle" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "40", Name = "Walsall" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "58", Name = "Oldham" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "96", Name = "Yeovil" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "46", Name = "Brentford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2004", Name = "Crawley Town" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "64", Name = "Swindon" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2029", Name = "AFC Wimbledon" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2002", Name = "Burton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "49", Name = "Cheltenham" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "89", Name = "Torquay" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "75", Name = "Exeter" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2000", Name = "Aldershot" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2033", Name = "Fleetwood Town" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "20", Name = "Bradford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "60", Name = "Plymouth" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2005", Name = "Dag and Red" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "61", Name = "Port Vale" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "97", Name = "Accrington" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "83", Name = "Rochdale" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "50", Name = "Chesterfield" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "36", Name = "Rotherham" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "56", Name = "Northampton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "87", Name = "Southend" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "82", Name = "Oxford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } }, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "91", Name = "York" }, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2009", Name = "Morecambe" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" } } } }; #endregion this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasFullDaysMatchesByCompetition(matches) .CanGetTournamentEventFromTournamentAndDate(); this.mockPredictionRepository = BuildPredictionRepository.Create() .HasFootballAPIUrl(); var predictionStrategy = new FootballPredictionStrategy(this.mockPredictionRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider); var prem = new E.Tournament() { TournamentName = "Premier League" }; var champ = new E.Tournament() { TournamentName = "Championship" }; var league1 = new E.Tournament() { TournamentName = "League One" }; var league2 = new E.Tournament() { TournamentName = "League Two" }; var valueOptions = new Model.ValueOptions() { Sport = new E.Sport { SportName = "Football" }, OddsSource = new E.ExternalSource { Source = "Not relevant" }, CouponDate = matchDate }; var allGenericPredictions = new List <Model.GenericPrediction>(); //Act //Premier league valueOptions.Tournament = prem; var genericPredictionsPrem = predictionStrategy.FetchPredictions(valueOptions); //Championship valueOptions.Tournament = champ; var genericPredictionsChamp = predictionStrategy.FetchPredictions(valueOptions); //League 1 valueOptions.Tournament = league1; var genericPredictionsLeague1 = predictionStrategy.FetchPredictions(valueOptions); //League 2 valueOptions.Tournament = league2; var genericPredictionsLeague2 = predictionStrategy.FetchPredictions(valueOptions); //All allGenericPredictions.AddRange(genericPredictionsPrem); allGenericPredictions.AddRange(genericPredictionsChamp); allGenericPredictions.AddRange(genericPredictionsLeague1); allGenericPredictions.AddRange(genericPredictionsLeague2); //Assert allGenericPredictions.ForEach(x => { Assert.AreEqual(x.ScoreLineProbabilities.Count(), 121); Assert.AreEqual(x.OutcomeProbabilities.Sum(o => o.Value), 1, 0.01); }); Assert.AreEqual(genericPredictionsPrem.Count(), 8); Assert.AreEqual(genericPredictionsChamp.Count(), 11); Assert.AreEqual(genericPredictionsLeague1.Count(), 11); Assert.AreEqual(genericPredictionsLeague2.Count(), 10); }
public BestBettingOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) : base(sport, bookmakerRepository, fixtureRepository, webRepositoryProvider) { }
public void CreatesACollectionOfPredictionsForTodaysMatches() { //Arrange matchDate = new DateTime(2013, 02, 02); #region Todays matches matches = new List<E.Match>() { new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "62", Name = "QPR"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "31", Name = "Norwich" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "0", Name = "Arsenal"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "39", Name = "Stoke" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "7", Name = "Everton"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "1", Name = "Aston Villa" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "14", Name = "Newcastle"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "6", Name = "Chelsea" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "35", Name = "Reading"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "16", Name = "Sunderland" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "19", Name = "West Ham"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "88", Name = "Swansea" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "66", Name = "Wigan"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "15", Name = "Southampton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "8", Name = "Fulham"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "12", Name = "Man United" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Premier League" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2", Name = "Birmingham"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "32", Name = "Nott'm Forest" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "3", Name = "Blackburn"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "47", Name = "Bristol City" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "45", Name = "Blackpool"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "44", Name = "Barnsley" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "24", Name = "Crystal Palace"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "5", Name = "Charlton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "25", Name = "Derby"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "53", Name = "Huddersfield" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "28", Name = "Ipswich"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "13", Name = "Middlesboro" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "9", Name = "Leeds"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "48", Name = "Cardiff" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "30", Name = "Millwall"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "77", Name = "Hull" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "59", Name = "Peterboro"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "22", Name = "Burnley" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "38", Name = "Sheffield Weds"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "21", Name = "Brighton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "41", Name = "Watford"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "4", Name = "Bolton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "Championship" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "71", Name = "Bury"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "95", Name = "Doncaster" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "52", Name = "Crewe"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "85", Name = "Scunthorpe" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "76", Name = "Hartlepool"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "57", Name = "Notts County" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "42", Name = "Milton Keynes"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "69", Name = "Bournemouth" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "33", Name = "Portsmouth"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "51", Name = "Colchester" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "34", Name = "Preston"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "86", Name = "Shrewsbury" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2015", Name = "Stevenage"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "79", Name = "Leyton Orient" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "65", Name = "Tranmere"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "73", Name = "Carlisle" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "40", Name = "Walsall"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "58", Name = "Oldham" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "96", Name = "Yeovil"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "46", Name = "Brentford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2004", Name = "Crawley Town"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "64", Name = "Swindon" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League One" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2029", Name = "AFC Wimbledon"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2002", Name = "Burton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "49", Name = "Cheltenham"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "89", Name = "Torquay" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "75", Name = "Exeter"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2000", Name = "Aldershot" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "2033", Name = "Fleetwood Town"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "20", Name = "Bradford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "60", Name = "Plymouth"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2005", Name = "Dag and Red" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "61", Name = "Port Vale"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "97", Name = "Accrington" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "83", Name = "Rochdale"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "50", Name = "Chesterfield" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "36", Name = "Rotherham"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "56", Name = "Northampton" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "87", Name = "Southend"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "82", Name = "Oxford" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}}, new E.Match() { MatchDate = matchDate, TeamsPlayerA = new E.TeamPlayer { ExternalID = "91", Name = "York"}, TeamsPlayerB = new E.TeamPlayer { ExternalID = "2009", Name = "Morecambe" }, TournamentEvent = new E.TournamentEvent { Tournament = new E.Tournament { TournamentName = "League Two" }}} }; #endregion this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasFullDaysMatchesByCompetition(matches) .CanGetTournamentEventFromTournamentAndDate(); this.mockPredictionRepository = BuildPredictionRepository.Create() .HasFootballAPIUrl(); var predictionStrategy = new FootballPredictionStrategy(this.mockPredictionRepository.Object, this.mockFixtureRepository.Object, this.webRepositoryProvider); var prem = new E.Tournament() { TournamentName = "Premier League" }; var champ = new E.Tournament() { TournamentName = "Championship" }; var league1 = new E.Tournament() { TournamentName = "League One" }; var league2 = new E.Tournament() { TournamentName = "League Two" }; var valueOptions = new Model.ValueOptions() { Sport = new E.Sport { SportName = "Football" }, OddsSource = new E.ExternalSource { Source = "Not relevant" }, CouponDate = matchDate }; var allGenericPredictions = new List<Model.GenericPrediction>(); //Act //Premier league valueOptions.Tournament = prem; var genericPredictionsPrem = predictionStrategy.FetchPredictions(valueOptions); //Championship valueOptions.Tournament = champ; var genericPredictionsChamp = predictionStrategy.FetchPredictions(valueOptions); //League 1 valueOptions.Tournament = league1; var genericPredictionsLeague1 = predictionStrategy.FetchPredictions(valueOptions); //League 2 valueOptions.Tournament = league2; var genericPredictionsLeague2 = predictionStrategy.FetchPredictions(valueOptions); //All allGenericPredictions.AddRange(genericPredictionsPrem); allGenericPredictions.AddRange(genericPredictionsChamp); allGenericPredictions.AddRange(genericPredictionsLeague1); allGenericPredictions.AddRange(genericPredictionsLeague2); //Assert allGenericPredictions.ForEach(x => { Assert.AreEqual(x.ScoreLineProbabilities.Count(), 121); Assert.AreEqual(x.OutcomeProbabilities.Sum(o => o.Value), 1, 0.01); }); Assert.AreEqual(genericPredictionsPrem.Count(), 8); Assert.AreEqual(genericPredictionsChamp.Count(), 11); Assert.AreEqual(genericPredictionsLeague1.Count(), 11); Assert.AreEqual(genericPredictionsLeague2.Count(), 10); }
public TestableFootballFixtureStrategy(Mock <IFixtureRepository> mockFixtureRepository, Mock <ISqlLinqStoredProceduresRepository> mockStoredProcRepository, IWebRepositoryProvider webRepositoryProvider) : base(mockFixtureRepository.Object, mockStoredProcRepository.Object, webRepositoryProvider) { }
public BestBettingCouponStrategy(IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider, IValueOptions valueOptions) : base(bookmakerRepository, fixtureRepository, webRepositoryProvider, valueOptions) { }
public FootballPredictionStrategy(IPredictionRepository predictionRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider) : base(predictionRepository, fixtureRepository, webRepositoryProvider) { }
public OddsCheckerWebCouponStrategy(IBookmakerRepository bookmakerRepository, IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider, IValueOptions valueOptions) : base(bookmakerRepository, fixtureRepository, webRepositoryProvider, valueOptions) { }
public void AddScoresToAnExistingFixture() { //Arrange this.matches = new List<E.Match>(); this.matchDate = new DateTime(2013, 02, 02); var matchToCheck = new E.Match() { TeamsPlayerA = new E.TeamPlayer { Name = "QPR" }, TeamsPlayerB = new E.TeamPlayer { Name = "Norwich" }, MatchDate = this.matchDate.AddHours(15), //wrong time TournamentEvent = new E.TournamentEvent { Id = 1 } }; matches.Add(matchToCheck); this.webRepositoryProvider = new ManifestWebRepositoryProvider(); this.mockFixtureRepository = BuildFixtureRepository.Create() .HasTheSkySportsURL(this.matchDate) .HasGetAliasWhichReturnsItself() .CanAddOrUpdateMatches(matches) .HasPersistedMatches(matches) .HasFootballTournamentEvents() .CanReturnScoreOutcome(); this.mockStoredProcRepository = new Mock<ISqlLinqStoredProceduresRepository>(); var footballFixtureStrategy = new TestableFootballFixtureStrategy(this.mockFixtureRepository, this.mockStoredProcRepository, this.webRepositoryProvider); //Act footballFixtureStrategy.UpdateResults(this.matchDate); //Assert //We have the right number of matches Assert.AreEqual(8, this.matches.Count(x => x.TournamentEvent.Id == 1)); //Prem Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 2)); //Champ Assert.AreEqual(11, this.matches.Count(x => x.TournamentEvent.Id == 3)); //League 1 Assert.AreEqual(10, this.matches.Count(x => x.TournamentEvent.Id == 4)); //League 2 //We have collected the correct dates Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(12.75))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17.5))); Assert.AreEqual(1, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(17).AddMinutes(20))); Assert.AreEqual(37, this.matches.Count(x => x.MatchDate == this.matchDate.AddHours(15))); //Spot check a few matches var qprNowich = this.matches.Where(x => x.TeamsPlayerA.Name == "QPR" && x.TeamsPlayerB.Name == "Norwich"); var yeovilBrentford = this.matches.Where(x => x.TeamsPlayerA.Name == "Yeovil" && x.TeamsPlayerB.Name == "Brentford"); var cheltenhamTorquay = this.matches.Where(x => x.TeamsPlayerA.Name == "Cheltenham" && x.TeamsPlayerB.Name == "Torquay"); Assert.AreEqual(1, qprNowich.Count()); Assert.AreEqual(1, yeovilBrentford.Count()); Assert.AreEqual(1, cheltenhamTorquay.Count()); Assert.AreEqual("0-0", qprNowich.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); Assert.AreEqual("3-0", yeovilBrentford.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); Assert.AreEqual("2-1", cheltenhamTorquay.FirstOrDefault().ObservedOutcomes.First().ScoreOutcome.ToString()); }
public TestableFootballFixtureStrategy(Mock<IFixtureRepository> mockFixtureRepository, Mock<ISqlLinqStoredProceduresRepository> mockStoredProcRepository, IWebRepositoryProvider webRepositoryProvider) : base(mockFixtureRepository.Object, mockStoredProcRepository.Object, webRepositoryProvider) { }