Example #1
0
        public void TestOptimalPlacementForNineCommercialsWithStandardCapacity()
        {
            var(breaks, commercials, _) = GetBasicData();

            var optimiser = new OptimiserHelper();

            var optimisedBreakCommercials =
                optimiser.GetOptimalBreakCommercials(breaks, commercials);

            CheckResults(optimisedBreakCommercials, breaks, 1970);
        }
Example #2
0
        public void TestOptimalPlacementForTenCommercialsWithStandardCapacity()
        {
            var optimiser = new OptimiserHelper();

            var(breaks, commercials, demographics) = GetBasicData();

            commercials.Add(
                new Commercial
            {
                Id             = 10,
                Title          = "Commercial 10",
                CommercialType = "Finance",
                Demographic    = demographics[2]
            });

            var optimisedBreakCommercials =
                optimiser.GetOptimalBreakCommercials(breaks, commercials);

            CheckResults(optimisedBreakCommercials, breaks, 2120);
        }
Example #3
0
        public void TestOptimalPlacementForEdgeCases()
        {
            var optimiser = new OptimiserHelper();

            var(breaks, commercials, _) = GetBasicData();

            commercials.RemoveAt(0);

            try
            {
                optimiser.GetOptimalBreakCommercials(breaks, commercials);
                Assert.Fail("Shouldn't be enough commercials");
            }
            catch (ArgumentException)
            {
            }

            (breaks, commercials, _)      = GetBasicData();
            commercials[0].CommercialType = CommercialType.Finance.ToString();
            commercials[1].CommercialType = CommercialType.Finance.ToString();

            //4 financial commercials, should still be possible
            var optimisedBreakCommercials = optimiser.GetOptimalBreakCommercials(breaks, commercials);

            CheckResults(optimisedBreakCommercials, breaks, 1940);

            commercials[2].CommercialType = CommercialType.Finance.ToString();

            try
            {
                optimiser.GetOptimalBreakCommercials(breaks, commercials);
                Assert.Fail("Too many financial commercials, one break would contain three");
            }
            catch (ArgumentException)
            {
            }
        }
Example #4
0
        public void TestOptimalPlacementForNineCommercialsWithVariableCapacity()
        {
            var optimiser = new OptimiserHelper();

            var(breaks, commercials, _) = GetBasicData();

            breaks[0].Capacity = 2;
            breaks[1].Capacity = 3;
            breaks[2].Capacity = 4;

            var optimisedBreakCommercials =
                optimiser.GetOptimalBreakCommercials(breaks, commercials);

            CheckResults(optimisedBreakCommercials, breaks, 2240);

            breaks[0].Capacity = 4;
            breaks[1].Capacity = 3;
            breaks[2].Capacity = 2;

            optimisedBreakCommercials =
                optimiser.GetOptimalBreakCommercials(breaks, commercials);

            CheckResults(optimisedBreakCommercials, breaks, 1700);
        }