Example #1
0
        public ActionResult Index()
        {
            ViewBag.Title = "Home Page";

            var model = new NpvInputModel();

            return(View(model));
        }
Example #2
0
        public IEnumerable <NpvOutputModel> Post(NpvInputModel npvInputModel)
        {
            var outputs = new List <NpvOutputModel>();

            for (var discountRate = npvInputModel.LowerBoundDiscountRate;
                 discountRate <= npvInputModel.UpperBoundDiscountRate;
                 discountRate += npvInputModel.DiscountRateIncrement)
            {
                discountRate = Math.Round(discountRate, 2);
                var npvOutput = new NpvOutputModel
                {
                    DiscountRateLabel = $"{discountRate}%",
                    NetPresentValue   = _financeManager.CalculateNetPresentValue(npvInputModel.IntialInvestment, discountRate, npvInputModel.CashFlows.ToList())
                };

                outputs.Add(npvOutput);
            }

            return(outputs);
        }
Example #3
0
        public void FinanceControllerReturnsCorrectDiscountRates()
        {
            // Arrange
            var npvInputModel = new NpvInputModel
            {
                CashFlows = new List <double> {
                    100, 200
                },
                LowerBoundDiscountRate = 1,
                UpperBoundDiscountRate = 5,
                DiscountRateIncrement  = 0.5
            };

            var financeManager    = new FinanceManager();
            var financeController = new FinanceController(financeManager);

            // Act
            var output = financeController.Post(npvInputModel);

            // Assert
            Assert.IsNotNull(output);
            Assert.AreEqual(9, output.Count());
        }