예제 #1
0
        public void CalculateAnnualCosts(double consumption)
        {
            if (consumption < 0)
            {
                throw new ArgumentException("Argument should not be less than zero", nameof(consumption));
            }

            IAnnualCostsCalculationStrategy annualCostsCalculationStrategy;

            switch (Name)
            {
            case TariffConstants.BasicTariffName:
                annualCostsCalculationStrategy = new BasicAnnualCostsCalculationStrategy();
                break;

            case TariffConstants.PackagedTariffName:
                annualCostsCalculationStrategy = new PackagedAnnualCostsCalculationStrategy();
                break;

            default:
                throw new Exception("Unexpected name of tariff");
            }

            AnnualCosts = annualCostsCalculationStrategy.GetAnnualCosts(consumption);
        }
        public void GetAnnualCostsShouldThrowArgumentExceptionWhenConsumptionLessThanZero()
        {
            // Arrange
            var    basicAnnualCostsCalculationStrategy = new BasicAnnualCostsCalculationStrategy();
            double consumption = -900;

            // Act
            basicAnnualCostsCalculationStrategy.GetAnnualCosts(consumption);
        }
        public void GetAnnualCostsShouldReturn1094()
        {
            // Arrange
            var    basicAnnualCostsCalculationStrategy = new BasicAnnualCostsCalculationStrategy();
            double consumption = 4700;

            // Act
            var result = basicAnnualCostsCalculationStrategy.GetAnnualCosts(consumption);

            // Assert
            Assert.AreEqual(1094.00m, result);
        }