Exemplo n.º 1
0
        public SolarVsUtilityProjection CalculateFutureProjection(
            IYearlyKwhUsage solarEstimate,
            ProjectionParameters projectionParameters
            )
        {
            var projection      = new List <IYearlyKwhUsageCompare>();
            var utilityEstimate = projectionParameters.UtilityYear;

            var paidOffSolarEstimate = new YearlyKwhUsageFromAnnual(
                0, solarEstimate.TotalKiloWattHours
                );

            // Each year to project
            for (int i = 0; i < projectionParameters.YearsToProject; i++)
            {
                projection.Add(new YearlyKwhUsageCompare(
                                   FormulaHelpers.CompoundInterest(utilityEstimate.TotalCost, projectionParameters.PercentIncreasePerYear, 1, i),
                                   utilityEstimate.TotalKiloWattHours,
                                   i,
                                   // After financeYears, solar panels are no longer paid for
                                   i < projectionParameters.FinanceYears ?
                                   solarEstimate : paidOffSolarEstimate
                                   ));
            }

            return(new SolarVsUtilityProjection(solarEstimate, projection, projectionParameters.FinanceYears));
        }
Exemplo n.º 2
0
        public void ShouldMatchActualUsageFromSampleData()
        {
            _subject = new YearlyKwhUsageFromAnnual(2357.22, 17019);

            // Pulling expected values from spreadsheet calculations
            Assert.AreEqual(196.435, _subject.AverageCostPerMonth, .01, nameof(_subject.AverageCostPerMonth));
            Assert.AreEqual(0.1385052001, _subject.AverageCostKiloWattHour, .01, nameof(_subject.AverageCostKiloWattHour));
        }