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); }
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); }
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)); } }
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); }
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); }
/// <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))); }