コード例 #1
0
ファイル: Program.cs プロジェクト: Jalobren/ParcelCalculator
        static void Main(string[] args)
        {
            do
            {
                Console.Write("Enter Weight in kg: ");
                var weight = Console.ReadLine();
                Console.Write("Enter Height in cm: ");
                var height = Console.ReadLine();
                Console.Write("Enter Width in cm: ");
                var width = Console.ReadLine();
                Console.Write("Enter Depth in cm: ");
                var depth = Console.ReadLine();

                var costCalculator = new DeliveryCostCalculator(new ParcelFactory(), new Validator());
                var result         = costCalculator.Calculate(weight, height, width, depth);
                if (!string.IsNullOrEmpty(result.Error))
                {
                    Console.WriteLine(result.Error);
                }
                else
                {
                    var cost = result.Cost > 0 ? "$" + result.Cost : "N/A";
                    Console.WriteLine("Category: " + result.Category);
                    Console.WriteLine("Cost: " + cost);
                }

                Console.WriteLine("Press ESC to stop or Enter to Calculate again");
                Console.WriteLine();
            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
        }
コード例 #2
0
        public void Calculate_EmptyProduct_ReturnsException()
        {
            var deliveryCostCalculator = new DeliveryCostCalculator(2.5, 3.5);

            cart.Setup(x => x.GetDeliveryCount()).Returns(0);
            cart.Setup(x => x.GetProductCount()).Returns(0);
            Assert.Equal(2.99, deliveryCostCalculator.Calculate(cart.Object));
        }
コード例 #3
0
        public void Calculate_WhenShoppingCartWithNullProductListSupplied_ShouldThrowsArgumentNullException()
        {
            var shoppingCart = _fixture.Build <ShoppingCart>()
                               .Without(cart => cart.Products)
                               .Create();
            var deliveryCostCalculator = new DeliveryCostCalculator();

            Assert.Throws <ArgumentNullException>(() => deliveryCostCalculator.Calculate(shoppingCart));
        }
コード例 #4
0
        public void Calculate_NullCart_ReturnsArgumentNullException()
        {
            //Arrange
            deliveryCostCalculator = new DeliveryCostCalculator(2M, 6M);
            //Act

            //Assert
            Assert.Throws <ArgumentNullException>(() => deliveryCostCalculator.Calculate(null));
        }
コード例 #5
0
        public void Calculate_WithEmptyShoppingCart_ShouldReturnZeroCost()
        {
            var products     = _fixture.CreateMany <Product>(0).ToList();
            var shoppingCart = _fixture.Build <ShoppingCart>()
                               .With(cart => cart.Products, products)
                               .Create();

            var deliveryCostCalculator = new DeliveryCostCalculator();
            var deliveryCost           = deliveryCostCalculator.Calculate(shoppingCart);

            Assert.AreEqual(deliveryCost, decimal.Zero);
        }
コード例 #6
0
        public void Calculate_CartWithOneDeliveryOneProduct_ReturnsValidCalculation()
        {
            //Arrange
            deliveryCostCalculator = new DeliveryCostCalculator(2M, 6M);
            shoppingCartService.Setup(m => m.GetNumberOfDeliveries()).Returns(1);
            shoppingCartService.Setup(m => m.GetNumberOfProducts()).Returns(1);
            //Act

            //Assert
            var expectedResult = (2M * 1M) + (6M * 1M) + 6.99M;

            Assert.That(deliveryCostCalculator.Calculate(shoppingCartService.Object) == expectedResult);
        }
コード例 #7
0
        public void Calculate_NoProduct_ReturnsFixedCost()
        {
            //Arrange
            deliveryCostCalculator = new DeliveryCostCalculator(2M, 6M);
            shoppingCartService.Setup(m => m.GetNumberOfDeliveries()).Returns(0);
            shoppingCartService.Setup(m => m.GetNumberOfProducts()).Returns(0);

            //Act

            //Assert
            var expectedResult = deliveryCostCalculator.Calculate(shoppingCartService.Object) == 6.99M;

            Assert.That(expectedResult);
        }
コード例 #8
0
        Calculate_WithShoppingCartThatConsistOfDifferentRenewableProducts_ShouldReturnsTwoTryMultipleItemCount()
        {
            var products = _fixture.Build <Product>()
                           .With(product => product.IsRenewable, true)
                           .CreateMany(10)
                           .ToList();
            var shoppingCart = _fixture.Build <ShoppingCart>()
                               .With(cart => cart.Products, products)
                               .Create();

            var deliveryCostCalculator = new DeliveryCostCalculator();
            var deliveryCost           = deliveryCostCalculator.Calculate(shoppingCart);
            var expectedCost           = products.Count * DeliveryConstants.CostPerRenewable;

            Assert.AreEqual(deliveryCost, expectedCost);
        }
コード例 #9
0
        public void DeliveryCostCalculator_Calculate_Pass_RejectedParcel()
        {
            _parcelMock.SetupGet(x => x.Category).Returns(Domain.Enum.ParcelCategoryEnum.Rejected);
            _parcelMock.SetupGet(x => x.DeliveryCost).Returns(-1);
            _parcelFactoryMock.Setup(x => x.GetParcel(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>())).Returns(_parcelMock.Object);
            _validatorMock.Setup(x => x.CheckValues(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(new ValidatorResult {
                IsValid = true
            });

            var result = _calculator.Calculate("500", "10", "20", "10");

            Assert.AreEqual("Rejected", result.Category);
            Assert.AreEqual(-1, result.Cost);
        }
コード例 #10
0
        public void Calculate_WithNullShoppingCart_ShouldThrowsArgumentNullException()
        {
            var deliveryCostCalculator = new DeliveryCostCalculator();

            Assert.Throws <ArgumentNullException>(() => deliveryCostCalculator.Calculate(null));
        }
コード例 #11
0
        public void Calculate_NullCart_ReturnsException()
        {
            var deliveryCostCalculator = new DeliveryCostCalculator(2.5, 3.5);

            Assert.Throws <ArgumentNullException>(() => deliveryCostCalculator.Calculate(null));
        }