Пример #1
0
 public FootballFixtureStrategy(IFixtureRepository fixtureRepository, ISqlLinqStoredProceduresRepository storedProcRepository,
                                IWebRepositoryProvider webRepositoryProvider)
 {
     this.fixtureRepository     = fixtureRepository;
     this.storedProcRepository  = storedProcRepository;
     this.webRepositoryProvider = webRepositoryProvider;
 }
Пример #2
0
 public TennisFixtureStrategy(IFixtureRepository fixtureRepository,
   ISqlLinqStoredProceduresRepository storedProcRepository, IWebRepositoryProvider webRepositoryProvider)
 {
   this.fixtureRepository = fixtureRepository;
   this.storedProcRepository = storedProcRepository;
   this.webRepositoryProvider = webRepositoryProvider;
 }
Пример #3
0
        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;
        }
Пример #4
0
        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>();
        }
Пример #5
0
 public CouponStrategyProvider(IBookmakerRepository bookmakerService,
                               IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
 {
     this.bookmakerRepository   = bookmakerService;
     this.fixtureRepository     = fixtureRepository;
     this.webRepositoryProvider = webRepositoryProvider;
 }
Пример #6
0
 public CouponStrategyProvider(IBookmakerRepository bookmakerService, 
   IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
 {
   this.bookmakerRepository = bookmakerService;
   this.fixtureRepository = fixtureRepository;
   this.webRepositoryProvider = webRepositoryProvider;
 }
Пример #7
0
 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;
 }
Пример #8
0
            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 }
                };
            }
Пример #9
0
    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;
    }
Пример #10
0
    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;
    }
Пример #11
0
        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;
        }
Пример #12
0
    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;
    }
Пример #13
0
      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 }
        };

      }
Пример #14
0
            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"));
            }
Пример #16
0
        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;
        }
Пример #17
0
        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;
        }
Пример #18
0
            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 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"));
      }
Пример #22
0
 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);
            }
Пример #24
0
 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);
      }
Пример #26
0
 public OddsCheckerWebOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository,
                                   IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
     : base(sport, bookmakerRepository, fixtureRepository, webRepositoryProvider)
 {
 }
Пример #27
0
 public BestBettingOddsStrategy(Sport sport, IBookmakerRepository bookmakerRepository,
                                IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
     : base(sport, bookmakerRepository, fixtureRepository, webRepositoryProvider)
 {
 }
Пример #28
0
 public TestableFootballFixtureStrategy(Mock <IFixtureRepository> mockFixtureRepository,
                                        Mock <ISqlLinqStoredProceduresRepository> mockStoredProcRepository, IWebRepositoryProvider webRepositoryProvider)
     : base(mockFixtureRepository.Object, mockStoredProcRepository.Object, webRepositoryProvider)
 {
 }
Пример #29
0
 public BestBettingCouponStrategy(IBookmakerRepository bookmakerRepository,
                                  IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider,
                                  IValueOptions valueOptions)
     : base(bookmakerRepository, fixtureRepository, webRepositoryProvider, valueOptions)
 {
 }
Пример #30
0
 public FootballPredictionStrategy(IPredictionRepository predictionRepository,
                                   IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
     : base(predictionRepository, fixtureRepository, webRepositoryProvider)
 {
 }
Пример #31
0
 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)
    {

    }
Пример #34
0
 public FootballPredictionStrategy(IPredictionRepository predictionRepository,
   IFixtureRepository fixtureRepository, IWebRepositoryProvider webRepositoryProvider)
   : base(predictionRepository, fixtureRepository, webRepositoryProvider)
 {
 }