static void Main(string[] args)
        {
            ITariffFactory            tariffFactory      = new TariffFactory();
            ITariffCalculationFactory calculationFactory =
                new TariffCalculationFactory();

            Tariff[] tariffs = Console.ReadLine()
                               .Split(',')
                               .Select(TariffName.Create)
                               .Select(tariffFactory.Create)
                               .ToArray();
            Consumption[] consumptions = Console.ReadLine()
                                         .Split(',')
                                         .Select(value => value.ToConsumption())
                                         .ToArray();

            TariffCalculationResultCollection resultCollection =
                new TariffCalculationResultCollection();

            foreach (Tariff tariff in tariffs)
            {
                foreach (Consumption consumption in consumptions)
                {
                    ITariffCalculation calculation = calculationFactory
                                                     .Create(tariff, consumption);
                    ConsumptionCost tariffCost = tariff.Calculate(
                        consumption, calculation);
                    resultCollection.Add(tariff.Name, tariffCost);
                }
            }

            resultCollection.Render(new ConsoleTariffCalculationResultRenderer());
        }
        public async Task ReturnCorrectPrice()
        {
            var tariff  = TariffFactory.Travel();
            var command = new CalculatePriceCommand {
                ProductCode    = tariff.Code,
                PolicyFrom     = DateTimeOffset.Now.AddDays(5),
                PolicyTo       = DateTimeOffset.Now.AddDays(10),
                SelectedCovers = new List <string> {
                    "C1", "C2", "C3"
                },
                Answers = new List <QuestionAnswer>
                {
                    new NumericQuestionAnswer {
                        QuestionCode = "NUM_OF_ADULTS", Answer = 1M
                    },
                    new NumericQuestionAnswer {
                        QuestionCode = "NUM_OF_CHILDREN", Answer = 1M
                    },
                    new TextQuestionAnswer {
                        QuestionCode = "DESTINATION", Answer = "EUR"
                    }
                }
            };
            var dataStoreMock = new Mock <IDataStore>();

            dataStoreMock.Setup(x => x.Tariffs[command.ProductCode]).ReturnsAsync(tariff);

            var handler = new CalculatePriceHandler(dataStoreMock.Object);

            var calculatePriceResult = await handler.Handle(command, CancellationToken.None);

            Assert.NotNull(calculatePriceResult);
            Assert.Equal(98M, calculatePriceResult.TotalPrice);
        }
示例#3
0
        public IEnumerable <Tariff> GetAllTariffCost(int consumption)
        {
            List <Tariff> tariffs = new List <Tariff>();

            foreach (TariffType tariff in Enum.GetValues(typeof(TariffType)))
            {
                var t = TariffFactory.GetTariff(tariff).Calculate(consumption);
                tariffs.Add(t);
            }
            tariffs.Sort((x, y) => (x.Cost > y.Cost) ? 1 : 0);
            return(tariffs);
        }
示例#4
0
        public void GetTariffTest(TariffType tariff)
        {
            var result = TariffFactory.GetTariff(tariff);

            if (tariff == TariffType.Basic)
            {
                Assert.IsInstanceOfType(result, typeof(TariffBasic));
            }
            if (tariff == TariffType.Package)
            {
                Assert.IsInstanceOfType(result, typeof(TariffPackage));
            }
        }
示例#5
0
        public IEnumerable <Tariff> GetAllTariffCostPerfSuggestion(int consumption)
        {
            Random random = new Random();
            SortedList <decimal, Tariff> tariffs = new SortedList <decimal, Tariff>();

            while (consumption > 0)
            {
                foreach (TariffType tariff in Enum.GetValues(typeof(TariffType)))
                {
                    var t = TariffFactory.GetTariff(tariff).Calculate(consumption);
                    t.Cost         += random.Next(0, 100000);
                    tariffs[t.Cost] = t;
                }
                consumption--;
            }
            return(tariffs.Values);
        }
示例#6
0
        public IEnumerable <Tariff> GetAllTariffCostPerfOriginal(int consumption)
        {
            Random        random  = new Random();
            List <Tariff> tariffs = new List <Tariff>();

            while (consumption > 0)
            {
                foreach (TariffType tariff in Enum.GetValues(typeof(TariffType)))
                {
                    var t = TariffFactory.GetTariff(tariff).Calculate(consumption);
                    t.Cost += random.Next(0, 100000);
                    tariffs.Add(t);
                }
                consumption--;
            }
            tariffs.Sort((x, y) => (x.Cost > y.Cost) ? 1 : 0);
            return(tariffs);
        }
示例#7
0
        /// <summary>
        /// The GetTariffCost
        /// </summary>
        /// <param name="tariff_name">The tariff_name<see cref="string"/></param>
        /// <param name="consumption">The consumption<see cref="int"/></param>
        /// <returns>The <see cref="IHttpActionResult"/></returns>
        public IHttpActionResult GetTariffCost(string tariff_name, int consumption)
        {
            var tariff = (TariffType)Enum.Parse(typeof(TariffType), tariff_name, true);

            return(Ok(TariffFactory.GetTariff(tariff).Calculate(consumption)));
        }