Example #1
0
        public void CalculateRate()
        {
            FirstClass  _firstClass  = new FirstClass();
            SecondClass _secondClass = new SecondClass();
            ThirdClass  _thirdClass  = new ThirdClass();
            FedEx       _fedEx       = new FedEx();
            SPUFourD    _fourD       = new SPUFourD();
            SPUTwoD     _twoD        = new SPUTwoD();
            SPUNextD    _nextD       = new SPUNextD();

            //first class
            Assert.AreEqual(0.035, _firstClass.CalculateRate(1, 1), "Input: _firstClass.CalculateRate(1, 1)");
            Assert.AreEqual(0.040, _firstClass.CalculateRate(1, 3), "Input: _firstClass.CalculateRate(1, 3)");
            Assert.AreEqual(0.047, _firstClass.CalculateRate(1, 9), "Input: _firstClass.CalculateRate(1, 9)");
            Assert.AreEqual(0.195, _firstClass.CalculateRate(1, 16), "Input: _firstClass.CalculateRate(1, 1)");
            Assert.AreEqual(0.450, _firstClass.CalculateRate(1, 64), "Input: _firstClass.CalculateRate(1, 1)");
            Assert.AreEqual(0.500, _firstClass.CalculateRate(1, 144), "Input: _firstClass.CalculateRate(1, 1)");

            //second class
            Assert.AreEqual(0.0035, _secondClass.CalculateRate(1, 1), "Input: _secondClass.CalculateRate(1, 1)");
            Assert.AreEqual(0.0040, _secondClass.CalculateRate(1, 3), "Input: _secondClass.CalculateRate(1, 3)");
            Assert.AreEqual(0.0047, _secondClass.CalculateRate(1, 9), "Input: _secondClass.CalculateRate(1, 9)");
            Assert.AreEqual(0.0195, _secondClass.CalculateRate(1, 16), "Input: _secondClass.CalculateRate(1, 16)");
            Assert.AreEqual(0.0450, _secondClass.CalculateRate(1, 64), "Input: _secondClass.CalculateRate(1, 64)");
            Assert.AreEqual(0.0500, _secondClass.CalculateRate(1, 144), "Input: _secondClass.CalculateRate(1, 144)");

            //third class
            Assert.AreEqual(0.0020, _thirdClass.CalculateRate(1, 1), "Input: _thirdClass.CalculateRate(1, 1)");
            Assert.AreEqual(0.0022, _thirdClass.CalculateRate(1, 3), "Input: _thirdClass.CalculateRate(1, 3)");
            Assert.AreEqual(0.0024, _thirdClass.CalculateRate(1, 9), "Input: _thirdClass.CalculateRate(1, 9)");
            Assert.AreEqual(0.0150, _thirdClass.CalculateRate(1, 16), "Input: _thirdClass.CalculateRate(1, 16)");
            Assert.AreEqual(0.0160, _thirdClass.CalculateRate(1, 64), "Input: _thirdClass.CalculateRate(1, 64)");
            Assert.AreEqual(0.0170, _thirdClass.CalculateRate(1, 144), "Input: _thirdClass.CalculateRate(1, 144)");

            //fedex
            Assert.AreEqual(20.00, _fedEx.CalculateRate(1, 16), "Input: _fedEx.CalculateRate(1, 16)");
            Assert.AreEqual(23.00, _fedEx.CalculateRate(1, 64), "Input: _fedEx.CalculateRate(1, 64)");
            Assert.AreEqual(25.00, _fedEx.CalculateRate(501, 16), "Input: _fedEx.CalculateRate(501, 16)");
            Assert.AreEqual(28.00, _fedEx.CalculateRate(505, 50), "Input: _fedEx.CalculateRate(505, 50)");


            //spu four day
            Assert.AreEqual("$0.02", _fourD.CalculateRate(10, 5).ToString("c"), "Input: _fourD.CalculateRate(10, 5)");
            Assert.AreEqual(.25, _fourD.CalculateRate(10, 80), "Input: _fourD.CalculateRate(10, 80)");

            //spu two day
            Assert.AreEqual("$0.16", _twoD.CalculateRate(10, 5).ToString("c"), "Input: _twoD.CalculateRate(10, 5)");
            Assert.AreEqual(2.50, _twoD.CalculateRate(10, 80), "Input: _twoD.CalculateRate(10, 80)");

            //spu next day
            Assert.AreEqual("$0.23", _nextD.CalculateRate(10, 5).ToString("c"), "Input: _nextD.CalculateRate(10, 5)");
            Assert.AreEqual(3.75, _nextD.CalculateRate(10, 80), "Input: _nextD.CalculateRate(10, 80)");
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.Write("Please enter the weight of the package: ");
            double weight = Double.Parse(Console.ReadLine());

            Console.Write("(P)ounds or (O)unces? ");
            string unit = Console.ReadLine().ToLower();

            if (unit == "p")
            {
                weight *= 16;
            }

            Console.Write("What distance will it be traveling? ");
            int distance = Int32.Parse(Console.ReadLine());

            List <IDeliveryDriver> rates       = new List <IDeliveryDriver>();
            FirstClass             firstClass  = new FirstClass();
            SecondClass            secondClass = new SecondClass();
            ThirdClass             thirdClass  = new ThirdClass();
            FedEx    fedEx = new FedEx();
            SPUFourD fourD = new SPUFourD();
            SPUTwoD  twoD  = new SPUTwoD();
            SPUNextD nextD = new SPUNextD();

            rates.Add(firstClass);
            rates.Add(secondClass);
            rates.Add(thirdClass);
            rates.Add(fedEx);
            rates.Add(fourD);
            rates.Add(twoD);
            rates.Add(nextD);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("\n{0, -30}{1, -30}", "Delivery Method", "$ cost");
            Console.WriteLine("-------------------------------------");

            foreach (var rate in rates)
            {
                Console.WriteLine("{0, -30}{1, -30}", rate.Name, rate.CalculateRate(distance, weight).ToString("c"));
            }

            Console.ReadKey();
        }
Example #3
0
        public static void Execute()
        {
            ConsoleExtension.WriteSeparator("Shipping example");

            var originAddress = new Address
            {
                ContactName  = "Jonh Doe",
                AddressLine1 = "185 Lincoln St.",
                AddressLine2 = "Suite 305",
                City         = "Hingham",
                Country      = "U.S.",
                Region       = "MA",
                PostalCode   = "02043",
            };

            var destinationAddress = new Address
            {
                ContactName  = "Anna Taylor",
                AddressLine1 = "125 Main St",
                AddressLine2 = "200 Main St",
                City         = "Plympton",
                Country      = "U.S.",
                Region       = "MA",
                PostalCode   = "02367",
            };

            var order = new Order
            {
                Origin      = originAddress,
                Destination = destinationAddress,
                Description = "Xiaomi Mi 10T Pro",
            };

            IShippingProvider fedEx            = new FedEx();
            var shippingCostCalculationService = new ShippingCostCalculationService(fedEx);

            var price = shippingCostCalculationService.Calculate(order);

            Console.WriteLine($"Shipping price for {order.Description} is {price:C}");
        }