コード例 #1
0
        public CalculationEntry Post([FromBody] CalculationRequestDto dto)
        {
            var calculationMethod = dto.SaveToDatabase ? CalculationMode.WithSave : CalculationMode.CalculateOnly;

            return(_distanceCalculationService.CalculateCameraParameters(new DistanceToDevice(dto.DistanceToCamera),
                                                                         new DistanceToObject(dto.DistanceToObject), calculationMethod));
        }
        public void CalculateProjection__ReturnsSuccess__Correctly()
        {
            var request = new CalculationRequestDto(1m, 2m, 3, 4m, 5m, 6m, 7m, 8m);

            _result.SetupGet(g => g.Success).Returns(true);
            _result.SetupGet(g => g.TotalInvested).Returns(9m);
            _result.SetupGet(g => g.WideBoundUpperSeries).Returns(new decimal[] { 10m, 11m });
            _result.SetupGet(g => g.WideBoundLowerSeries).Returns(new decimal[] { 12m, 13m });
            _result.SetupGet(g => g.NarrowBoundUpperSeries).Returns(new decimal[] { 14m, 15m });
            _result.SetupGet(g => g.NarrowBoundLowerSeries).Returns(new decimal[] { 16m, 17m });
            _result.SetupGet(g => g.Years).Returns(new int[] { 0, 1 });
            _result.SetupGet(g => g.TargetValue).Returns(new decimal[] { 18m, 19m });

            _factory.Setup(m => m.MakeCalculation(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <int>(), It.IsAny <decimal>(),
                                                  It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(_result.Object);

            var response = _controller.CalculateProjection(request);

            Assert.AreEqual(true, response.Success);
            Assert.AreEqual(string.Empty, response.ErrorMessage);
            Assert.AreEqual(9m, response.TotalInvested);

            var wideBoundUpper = response.WideBoundUpperSeries.ToList();

            Assert.AreEqual(2, wideBoundUpper.Count);
            Assert.AreEqual(10m, wideBoundUpper[0]);
            Assert.AreEqual(11m, wideBoundUpper[1]);

            var wideBoundLower = response.WideBoundLowerSeries.ToList();

            Assert.AreEqual(2, wideBoundLower.Count);
            Assert.AreEqual(12m, wideBoundLower[0]);
            Assert.AreEqual(13m, wideBoundLower[1]);

            var narrowBoundUpper = response.NarrowBoundUpperSeries.ToList();

            Assert.AreEqual(2, narrowBoundUpper.Count);
            Assert.AreEqual(14m, narrowBoundUpper[0]);
            Assert.AreEqual(15m, narrowBoundUpper[1]);

            var narrowBoundLower = response.NarrowBoundLowerSeries.ToList();

            Assert.AreEqual(2, narrowBoundLower.Count);
            Assert.AreEqual(16m, narrowBoundLower[0]);
            Assert.AreEqual(17m, narrowBoundLower[1]);

            var years = response.Years.ToList();

            Assert.AreEqual(2, years.Count);
            Assert.AreEqual(0, years[0]);
            Assert.AreEqual(1, years[1]);

            var targetValue = response.TargetValue.ToList();

            Assert.AreEqual(2, targetValue.Count);
            Assert.AreEqual(18m, targetValue[0]);
            Assert.AreEqual(19m, targetValue[1]);
        }
        public void CalculateProjection__ReturnsFailure__Correctly()
        {
            var request = new CalculationRequestDto(1m, 2m, 3, 4m, 5m, 6m, 7m, 8m);

            _result.SetupGet(g => g.Success).Returns(false);
            _result.SetupGet(g => g.ErrorMessage).Returns("Error message");

            _factory.Setup(m => m.MakeCalculation(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <int>(), It.IsAny <decimal>(),
                                                  It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(_result.Object);

            var response = _controller.CalculateProjection(request);

            Assert.AreEqual(false, response.Success);
            Assert.AreEqual("Error message", response.ErrorMessage);
        }
        public void CalculateProjection__MapsParameters__Correctly()
        {
            var request = new CalculationRequestDto(1m, 2m, 3, 4m, 5m, 6m, 7m, 8m);

            _result.SetupGet(g => g.Success).Returns(true);

            _factory.Setup(m => m.MakeCalculation(It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <int>(), It.IsAny <decimal>(),
                                                  It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(_result.Object);

            _controller.CalculateProjection(request);

            _factory.Verify(m => m.MakeCalculation(It.Is <decimal>(d => (d == 1m)), It.Is <decimal>(d => (d == 2m)), It.Is <int>(d => (d == 3)),
                                                   It.Is <decimal>(d => (d == 4m)), It.Is <decimal>(d => (d == 5m)), It.Is <decimal>(d => (d == 6m)), It.Is <decimal>(d => (d == 7m)),
                                                   It.Is <decimal>(d => (d == 8m))), Times.Once);
        }
        public CalculationResponseDto CalculateProjection(CalculationRequestDto request)
        {
            var result = _factory.MakeCalculation(request.LumpSumInvestment, request.MonthlyInvestment, request.TimescaleInYears,
                                                  request.WideBoundPercentageUpper, request.WideBoundPercentageLower, request.NarrowBoundPercentageUpper,
                                                  request.NarrowBoundPercentageLower, request.TargetValue);

            if (result.Success)
            {
                var response = new CalculationResponseDto(result.TotalInvested, result.WideBoundUpperSeries, result.WideBoundLowerSeries,
                                                          result.NarrowBoundLowerSeries, result.NarrowBoundUpperSeries, result.Years, result.TargetValue);

                return(response);
            }
            else
            {
                var response = new CalculationResponseDto(result.ErrorMessage);

                return(response);
            }
        }