Ejemplo n.º 1
0
        public void GetHoursParked_ShouldBeTwo()
        {
            DateTime    now = DateTime.UtcNow;
            ParkingSlip sut = new ParkingSlip(now.AddHours(-2));

            sut.SetExitDateTime(now);
            Assert.That(sut.GetHoursParked(), Is.EqualTo(2));
        }
Ejemplo n.º 2
0
        public void SetExitDateTime_ShouldBeExpirationDateSet()
        {
            DateTime    now = DateTime.UtcNow;
            ParkingSlip sut = new ParkingSlip(now.AddHours(-1));

            sut.SetExitDateTime(now);
            Assert.That(sut.GetExitDateTime(), Is.EqualTo(now));
        }
Ejemplo n.º 3
0
        public void CalculateParkingFee_ShouldBeZero()
        {
            List <IParkingSpace> parkingSpaces = new List <IParkingSpace>();

            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            List <IParkingFee> parkingFees = new List <IParkingFee>();

            parkingFees.Add(new ParkingFee(2, 4, 5));
            IParkingLot sut         = new ParkingLot(parkingSpaces, parkingFees);
            ParkingSlip parkingSlip = new ParkingSlip(DateTime.UtcNow.AddHours(-1));

            parkingSlip.SetExitDateTime(DateTime.UtcNow);
            Assert.That(sut.CalculateParkingFee(parkingSlip).GetCost(), Is.EqualTo(0));
        }
Ejemplo n.º 4
0
        public void CalculateParkingFee_ShouldBeFifteen()
        {
            List <IParkingSpace> parkingSpaces = new List <IParkingSpace>();

            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            List <IParkingFee> parkingFees = new List <IParkingFee>();

            parkingFees.Add(new ParkingFee(0, 2, 5));
            parkingFees.Add(new ParkingFee(2, 10, 10));
            parkingFees.Add(new ParkingFee(10, Double.MaxValue, 15));
            IParkingLot sut         = new ParkingLot(parkingSpaces, parkingFees);
            ParkingSlip parkingSlip = new ParkingSlip(DateTime.UtcNow.AddHours(-15));

            parkingSlip.SetExitDateTime(DateTime.UtcNow);
            Assert.That(sut.CalculateParkingFee(parkingSlip).GetCost(), Is.EqualTo(15));
        }
        public HttpResponseMessage GetParkingFee(string parkingLotId, string parkingSlipId)
        {
            /*
             * Normally we would query a database for the parkingLotId and parkingSlipId then call CalculateParkingFee() on them.
             * But in the interest of time, I set up some test data showing the JSON output of various parking slips with different lengths of time.
             */

            // Get parking fee
            // Build parking spaces list
            List <IParkingSpace> parkingSpaces = new List <IParkingSpace>();

            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            parkingSpaces.Add(new ParkingSpace());
            // Build parking fee structure
            List <IParkingFee> parkingFees = new List <IParkingFee>();

            parkingFees.Add(new ParkingFee(0, 2, 5));
            parkingFees.Add(new ParkingFee(2, 10, 10));
            parkingFees.Add(new ParkingFee(10, Double.MaxValue, 15));
            // Create parking lot
            ParkingLot parkingLot = new ParkingLot(parkingSpaces, parkingFees);
            // Build a list of fees
            List <double> myParkingFees = new List <double>();
            DateTime      now           = DateTime.UtcNow;
            // Create parking slips with various start times and add to the list
            IParkingSlip parkingSlip = new ParkingSlip(now.AddHours(-1));

            parkingSlip.SetExitDateTime(now);
            myParkingFees.Add(parkingLot.CalculateParkingFee(parkingSlip).GetCost());
            parkingSlip = new ParkingSlip(now.AddHours(-5));
            parkingSlip.SetExitDateTime(now);
            myParkingFees.Add(parkingLot.CalculateParkingFee(parkingSlip).GetCost());
            parkingSlip = new ParkingSlip(now.AddHours(-25));
            parkingSlip.SetExitDateTime(now);
            myParkingFees.Add(parkingLot.CalculateParkingFee(parkingSlip).GetCost());

            // Create http response (application/json)
            HttpResponseMessage response = Request.CreateResponse <Object>(System.Net.HttpStatusCode.OK, myParkingFees, "application/json");

            // Return http response
            return(response);
        }
Ejemplo n.º 6
0
        public void SetExitDateTime_ShouldBeThrowsExceptionInvalidDate()
        {
            ParkingSlip sut = new ParkingSlip(DateTime.UtcNow.AddHours(-1));

            Assert.Throws <ArgumentException>(() => sut.SetExitDateTime(DateTime.MinValue));
        }