public SmoothPassBookedExecuter( ISmoothDiagnostics smoothDiagnostics, SmoothResources smoothResources, SmoothProgramme smoothProgramme, SponsorshipRestrictionService sponsorshipRestrictionService, IReadOnlyCollection <Programme> allProgrammesForPeriodAndSalesArea, Action <string> raiseInfo, Action <string, Exception> raiseException ) { _smoothDiagnostics = smoothDiagnostics; _smoothResources = smoothResources; _sponsorshipRestrictionService = sponsorshipRestrictionService; _allProgrammesForPeriodAndSalesArea = allProgrammesForPeriodAndSalesArea; _smoothProgramme = smoothProgramme; RaiseInfo = raiseInfo; RaiseException = raiseException; }
public SmoothPassUnplacedExecuter( ISmoothDiagnostics smoothDiagnostics, SmoothResources smoothResources, SmoothProgramme smoothProgramme, SponsorshipRestrictionService sponsorshipRestrictionService, IReadOnlyCollection <Programme> allProgrammesForPeriodAndSalesArea, ISmoothConfiguration smoothConfiguration, IClashExposureCountService clashExposureCountService, IImmutableDictionary <string, Clash> clashesByExternalRef, Action <string, Exception> raiseException ) { _smoothDiagnostics = smoothDiagnostics; _smoothConfiguration = smoothConfiguration; _smoothResources = smoothResources; _smoothProgramme = smoothProgramme; _clashExposureCountService = clashExposureCountService; _sponsorshipRestrictionService = sponsorshipRestrictionService; _allProgrammesForPeriodAndSalesArea = allProgrammesForPeriodAndSalesArea; _clashesByExternalRef = clashesByExternalRef; RaiseException = raiseException; }
public void CheckSpotCanBePlacedAtBreakContainerRequest_NoBreakRequests_ReturnsTrue( string spotBreakRequest, string breakExternalReference) { // Arrange var fakeBreak = BreakWithValidBreakTypeFactory(); fakeBreak.ExternalBreakRef = breakExternalReference; var fakeSpot = SpotWithValidBreakTypeAndStartTimeFactory(); fakeSpot.BreakRequest = spotBreakRequest; SmoothProgramme smoothProgramme = _fixture .Build <SmoothProgramme>() .Create(); smoothProgramme.InitialiseSmoothBreaks( new List <Break> { fakeBreak } ); var smoothBreakList = smoothProgramme.ProgrammeSmoothBreaks; var fakeSmoothBreak = smoothBreakList[0]; // Act var res = SpotUtilities.CanSpotBePlacedInRequestedBreakOrContainer( fakeSpot, smoothBreakList, SpotPositionRules.Exact, false, null, false, fakeSmoothBreak); // Assert _ = res.Should().BeTrue(); }
/// <summary> /// Create a new instance of this class for each programme to smooth. /// </summary> public SmoothOneProgramme( Programme programme, IEnumerable <Break> programmeBreaks, IReadOnlyCollection <Spot> programmeSpots, IReadOnlyDictionary <Guid, SpotInfo> spotInfos, Guid runId, SalesArea salesArea, DateTime processorDateTime, ISmoothDiagnostics smoothDiagnostics, IImmutableList <RatingsPredictionSchedule> ratingsPredictionSchedules, ImmutableSmoothData threadSafeCollections, IClashExposureCountService clashExposureCountService, SponsorshipRestrictionService sponsorshipRestrictionService, IReadOnlyCollection <Product> products, IReadOnlyCollection <Clash> clashes, IReadOnlyCollection <Programme> allProgrammesForPeriodAndSalesArea, Action <string> raiseInfo, Action <string, Exception> raiseException) { RaiseInfo = raiseInfo; RaiseException = raiseException; if (programme is null) { var guruMeditation = new ArgumentNullException(nameof(programme)); RaiseException("The programme to Smooth is null", guruMeditation); throw guruMeditation; } _smoothProgramme = new SmoothProgramme(salesArea, programme); _smoothProgramme.InitialiseSmoothBreaks(programmeBreaks); _processorDateTime = processorDateTime; _programmeSpots = programmeSpots; _spotInfos = spotInfos; _runId = runId; _threadSafeCollections = threadSafeCollections; _sponsorshipRestrictionService = sponsorshipRestrictionService; _smoothConfiguration = threadSafeCollections.SmoothConfigurationReader; _smoothDiagnostics = smoothDiagnostics; _smoothPassBookedExecuter = new SmoothPassBookedExecuter( _smoothDiagnostics, _smoothResources, _smoothProgramme, sponsorshipRestrictionService, allProgrammesForPeriodAndSalesArea, RaiseInfo, RaiseException); _smoothPassDefaultExecuter = new SmoothPassDefaultExecuter( _smoothDiagnostics, _smoothResources, _smoothProgramme, sponsorshipRestrictionService, allProgrammesForPeriodAndSalesArea, _smoothConfiguration, clashExposureCountService, _threadSafeCollections.ClashesByExternalRef, _threadSafeCollections.ProductsByExternalRef, RaiseException); _smoothPassUnplacedExecuter = new SmoothPassUnplacedExecuter( _smoothDiagnostics, _smoothResources, _smoothProgramme, sponsorshipRestrictionService, allProgrammesForPeriodAndSalesArea, _smoothConfiguration, clashExposureCountService, _threadSafeCollections.ClashesByExternalRef, RaiseException); if (_smoothConfiguration.ClashExceptionCheckEnabled) { _smoothResources.ClashExceptionChecker = new ClashExceptionChecker( threadSafeCollections.ClashExceptions, products, clashes ); } if (_smoothConfiguration.RestrictionCheckEnabled) { _smoothResources.RestrictionChecker = new RestrictionChecker( threadSafeCollections.Restrictions, products, clashes, threadSafeCollections.IndexTypes, threadSafeCollections.Universes, ratingsPredictionSchedules); } _smoothFailuresFactory = new SmoothFailuresFactory(_smoothConfiguration); _smoothRecommendationsFactory = new SmoothRecommendationsFactory(_smoothConfiguration); }