Ejemplo n.º 1
0
        public string Execute(ICommand command)
        {
            if (command.Name != "SetupPark" && this.VehiclePark == null)
            {
                throw new InvalidOperationException(Messages.ParkNotSetUp);
            }

            switch (command.Name)
            {
                case "SetupPark":
                    this.VehiclePark = new VehiclePark(int.Parse(command.CommandParameters["sectors"]), int.Parse(command.CommandParameters["placesPerSector"]));
                    return Messages.CreatedPark;
                case "Park":
                    return this.ParkVehicle(command, command.CommandParameters["type"]);
                case "Exit":
                    return this.VehiclePark.ExitVehicle(
                        command.CommandParameters["licensePlate"],
                        DateTime.Parse(command.CommandParameters["time"], null, DateTimeStyles.RoundtripKind),
                        decimal.Parse(command.CommandParameters["paid"]));
                case "Status":
                    return this.VehiclePark.GetStatus();
                case "FindVehicle":
                    return this.VehiclePark.FindVehicle(command.CommandParameters["licensePlate"]);
                case "VehiclesByOwner":
                    return this.VehiclePark.FindVehiclesByOwner(command.CommandParameters["owner"]);
                default:
                    throw new InvalidOperationException(Messages.InvalidCommand);
            }
        }
Ejemplo n.º 2
0
 public void Test_InsertMotorbike_IncorrectPlace_ShouldReturnErrorMessage()
 {
     var park = new VehiclePark(2, 2);
     var motorbike = new Motorbike("CA1011AH", "John Smith", 1);
     var message = park.InsertMotorbike(motorbike, 1, 10, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("There is no place 10 in sector 1", message);
 }
Ejemplo n.º 3
0
 public void Test_InsertTruck_IncorrectPlace_ShouldReturnErrorMessage()
 {
     var park = new VehiclePark(2, 2);
     var truck = new Truck("CA1011AH", "John Smith", 1);
     string message = park.InsertTruck(truck, 1, 10, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("There is no place 10 in sector 1", message);
 }
Ejemplo n.º 4
0
 public void Test_InsertTruck_CorrectParameters_ShouldInsertTheTruck()
 {
     var park = new VehiclePark(2, 2);
     var truck = new Truck("CA1011AH", "John Smith", 1);
     var message = park.InsertTruck(truck, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("Truck parked successfully at place (1,1)", message);
 }
Ejemplo n.º 5
0
 public void Test_InsertCar_CorrectParameters_ShouldInsertTheCar()
 {
     var park = new VehiclePark(2, 2);
     var car = new Car("CA1011AH", "John Smith", 1);
     string message = park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("Car parked successfully at place (1,1)", message);
 }
Ejemplo n.º 6
0
 public void Test_InsertMotorbike_CorrectParameters_ShouldInsertTheMotorbike()
 {
     var park = new VehiclePark(2, 2);
     var motorbike = new Motorbike("CA1011AH", "John Smith", 1);
     var message = park.InsertMotorbike(motorbike, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("Motorbike parked successfully at place (1,1)", message);
 }
Ejemplo n.º 7
0
        public void InsertMultipleVehicleValidOperation_ShouldReturnCorrectResult()
        {
            // Arrange
            IVehiclePark park = new VehiclePark(2, 3);
            IVehicle car1 = new Car("CA1234CA", "Pesho", 3);
            IVehicle car2 = new Car("CA1235CA", "Pesho", 3);
            IVehicle car3 = new Car("CA1236CA", "Pesho", 3);
            IVehicle car4 = new Car("CA1237CA", "Pesho", 3);
            IVehicle car5 = new Car("CA1238CA", "Pesho", 3);
            IVehicle car6 = new Car("CA1239CA", "Pesho", 3);
            StringBuilder result = new StringBuilder();
            StringBuilder expected = new StringBuilder();

            // Act
            result.AppendLine(park.InsertVehicle(car1, 1, 1, new DateTime(2015, 10, 17, 10, 30, 0)));
            result.AppendLine(park.InsertVehicle(car2, 1, 2, new DateTime(2015, 10, 17, 10, 30, 0)));
            result.AppendLine(park.InsertVehicle(car3, 1, 3, new DateTime(2015, 10, 17, 10, 30, 0)));
            result.AppendLine(park.InsertVehicle(car4, 2, 1, new DateTime(2015, 10, 17, 10, 30, 0)));
            result.AppendLine(park.InsertVehicle(car5, 2, 2, new DateTime(2015, 10, 17, 10, 30, 0)));
            result.AppendLine(park.InsertVehicle(car6, 2, 3, new DateTime(2015, 10, 17, 10, 30, 0)));

            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(1,1)"));
            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(1,2)"));
            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(1,3)"));
            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(2,1)"));
            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(2,2)"));
            expected.AppendLine(string.Format(GlobalMessages.VehicleParked, car1.GetType().Name, "(2,3)"));

            // Assert
            Assert.AreEqual(expected.ToString(), result.ToString());
        }
Ejemplo n.º 8
0
        public void Test_GetStatus_EmptyPark_SinglePlaceOnly_ShouldBeCorrect()
        {
            var park = new VehiclePark(1, 1);

            string message = park.GetStatus();
            Assert.AreEqual("Sector 1: 0 / 1 (0% full)", message);
        }
        public void InitExit()
        {
            var mockedData = new Mock<IVehicleParkData>();
            mockedData.Setup(m => m.GetVehiclesByOwner("pesho")).Returns(new List<IVehicle>());

            var car1 = new Car("SA1234BB", "ivan", 10);
            var car2 = new Car("SA1234BC", "ivan", 5);
            var car3 = new Car("SA1234BD", "ivan", 3);
            mockedData.Setup(m => m.GetVehiclesByOwner("ivan"))
                .Returns(new List<IVehicle>()
                {
                    car1, car2, car3
                });
            mockedData.Setup(m => m.GetVehicle("SA1234BB"))
                .Returns(car1);
            mockedData.Setup(m => m.GetParkedSpot(car1)).Returns("(1,1)");
            mockedData.Setup(m => m.GetVehicle("SA1234BC"))
                .Returns(car2);
            mockedData.Setup(m => m.GetParkedSpot(car2)).Returns("(1,2)");
            mockedData.Setup(m => m.GetVehicle("SA1234BD"))
                .Returns(car3);
            mockedData.Setup(m => m.GetParkedSpot(car3)).Returns("(1,3)");

            this.vehiclePark = new VehiclePark(10, 10, mockedData.Object);
        }
Ejemplo n.º 10
0
 public void Test_InsertCar_IncorrectSector_ShouldReturnErrorMessage()
 {
     var park = new VehiclePark(2, 2);
     var car = new Car("CA1011AH", "John Smith", 1);
     string message = park.InsertCar(car, 10, 1, new DateTime(2015, 5, 10, 10, 30, 0));
     Assert.AreEqual("There is no sector 10 in the park", message);
 }
Ejemplo n.º 11
0
        public void VehicleExitNonPresentLicensePlate_ShouldThrowExceptionWithCorrectResult()
        {
            // Arrange
            IVehiclePark park = new VehiclePark(2, 2);
            string licensePlate = "CA1234CA";
            IVehicle car = new Car(licensePlate, "Pesho", 3);
            int sector = 1;
            int place = 1;

            // Act
            park.InsertVehicle(car, sector, place, new DateTime(2015, 10, 17, 10, 30, 0));
            string result = string.Empty;
            try
            {
                park.ExitVehicle("CA1234CB", new DateTime(2015, 10, 17, 13, 30, 0), 6M);
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }

            string expected = string.Format(GlobalMessages.VehicleNotPresent, "CA1234CB");

            // Assert
            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 12
0
 public void Test_ExitVehicle_InvalidLicensePlate_ShouldReturnErrorMessage()
 {
     var park = new VehiclePark(1, 2);
     var car = new Car("CA1011AH", "John Smith", 1);
     DateTime insertDate = new DateTime(2015, 5, 10, 10, 0, 0);
     string message = park.ExitVehicle("CA1011AH", insertDate.AddHours(2), 10.0M);
     Assert.AreEqual("There is no vehicle with license plate CA1011AH in the park", message);
 }
Ejemplo n.º 13
0
 public void Test_GetStatus_FullPark_SinglePlaceOnly_ShouldBeCorrect()
 {
     var park = new VehiclePark(1, 1);
     var car = new Car("CA1011AH", "John Smith", 1);
     park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
     string message = park.GetStatus();
     Assert.AreEqual("Sector 1: 1 / 1 (100% full)", message);
 }
Ejemplo n.º 14
0
        public void TestFindVehcleWhenNotPresentShouldReturnErrorStatus()
        {
            var mockedData = new Mock<IVehicleParkData>();

            this.vehiclePark = new VehiclePark(10, 10, mockedData.Object);

            var message = this.vehiclePark.FindVehicle("CA1234VV");
            Assert.AreEqual(string.Format(Message.NoSuchVehicle, "CA1234VV"), message);
        }
Ejemplo n.º 15
0
        public override object Execute()
        {
            var newVehiclePark =
                new VehiclePark(
                    new Layout(int.Parse(this.Parameters["sectors"]), int.Parse(this.Parameters["placesPerSector"])),
                    new Database(int.Parse(this.Parameters["sectors"])));

            return newVehiclePark;
        }
Ejemplo n.º 16
0
        public void Test_InsertCar_OccupiedPlace_ShouldReturnErrorMessage()
        {
            var park = new VehiclePark(2, 2);
            var car = new Car("CA1011AH", "John Smith", 1);
            park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            var otherCar = new Car("CA1022AH", "Jane Smith", 1);
            string message = park.InsertCar(otherCar, 1, 1, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("The place (1,1) is occupied", message);
        }
Ejemplo n.º 17
0
        public void Test_InsertMotorbike_OccupiedPlace_ShouldReturnErrorMessage()
        {
            var park = new VehiclePark(2, 2);
            var motorbike = new Motorbike("CA1011AH", "John Smith", 1);
            park.InsertMotorbike(motorbike, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            var otherMotorbike = new Motorbike("CA1022AH", "Jane Smith", 1);
            var message = park.InsertMotorbike(otherMotorbike, 1, 1, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("The place (1,1) is occupied", message);
        }
Ejemplo n.º 18
0
        public void Test_InsertCar_WithSameLicensePlate_ShouldReturnErrorMessage()
        {
            var park = new VehiclePark(2, 2);
            var car = new Car("CA1011AH", "John Smith", 1);
            park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            var otherCar = new Car("CA1011AH", "Jane Smith", 1);
            string message = park.InsertCar(otherCar, 1, 2, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("There is already a vehicle with license plate CA1011AH in the park", message);
        }
Ejemplo n.º 19
0
        public void Test_InsertMotorbike_FillPark_ShouldInsertAllMotorbikes()
        {
            var park = new VehiclePark(2, 1);
            var motorbike = new Motorbike("CA1011AH", "John Smith", 1);
            var message = park.InsertMotorbike(motorbike, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
            Assert.AreEqual("Motorbike parked successfully at place (1,1)", message);

            var otherMotorbike = new Motorbike("CA1022AH", "Jane Smith", 1);
            message = park.InsertMotorbike(otherMotorbike, 2, 1, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("Motorbike parked successfully at place (2,1)", message);
        }
Ejemplo n.º 20
0
        public void Test_GetStatus_EmptyPark_Big_ShouldBeCorrect()
        {
            var park = new VehiclePark(3, 3);

            string message = park.GetStatus();
            Assert.AreEqual(
                "Sector 1: 0 / 3 (0% full)\r\n" +
                "Sector 2: 0 / 3 (0% full)\r\n" +
                "Sector 3: 0 / 3 (0% full)",
                message);
        }
Ejemplo n.º 21
0
        public void Test_InsertCar_FillPark_ShouldInsertAllCars()
        {
            var park = new VehiclePark(2, 1);
            var car = new Car("CA1011AH", "John Smith", 1);
            string message = park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
            Assert.AreEqual("Car parked successfully at place (1,1)", message);

            var otherCar = new Car("CA1022AH", "Jane Smith", 1);
            message = park.InsertCar(otherCar, 2, 1, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("Car parked successfully at place (2,1)", message);
        }
        public void Test_FindVehiclesByOwner_NoVehiclesMatch_ShouldReturnErrorMessage()
        {
            var park = new VehiclePark(2, 2);
            var car = new Car("CA1011AH", "John Smith", 1);
            park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
            car = new Car("CA3035AH", "Jane Smith", 1);
            park.InsertCar(car, 2, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            string message = park.FindVehiclesByOwner("Jane Austen");
            Assert.AreEqual("No vehicles by Jane Austen", message);
        }
Ejemplo n.º 23
0
        public void Test_InsertTruck_FillPark_ShouldInsertAllTrucks()
        {
            var park = new VehiclePark(2, 1);
            var truck = new Truck("CA1011AH", "John Smith", 1);
            var message = park.InsertTruck(truck, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
            Assert.AreEqual("Truck parked successfully at place (1,1)", message);

            var otherTruck = new Truck("CA1022AH", "Jane Smith", 1);
            message = park.InsertTruck(otherTruck, 2, 1, new DateTime(2015, 5, 10, 12, 30, 0));
            Assert.AreEqual("Truck parked successfully at place (2,1)", message);
        }
Ejemplo n.º 24
0
        public void GetStatusEmptyParking_ShouldReturnCorrectResult()
        {
            // Arrange
            IVehiclePark park = new VehiclePark(2, 2);

            // Act
            string result = park.GetStatus();
            string expected = "Sector 1: 0 / 2 (0% full)\r\nSector 2: 0 / 2 (0% full)";

            // Assert
            Assert.AreEqual(expected, result);
        }
        public void Test_FindVehiclesByOwner_SingleVehicle_ShouldReturnTheVehicle()
        {
            var park = new VehiclePark(1, 1);
            var car = new Car("CA1011AH", "John Smith", 1);
            park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            string message = park.FindVehiclesByOwner("John Smith");
            Assert.AreEqual(
                "Car [CA1011AH], owned by John Smith\r\n" +
                "Parked at (1,1)",
                message);
        }
Ejemplo n.º 26
0
        public void GetStatusOneVehicle_ShouldReturnCorrectResult()
        {
            // Arrange
            int totalSectors = 2;
            IVehiclePark park = new VehiclePark(totalSectors, 2);
            IVehicle car = new Car("CA1234CA", "Pesho", 3);

            // Act
            park.InsertVehicle(car, 1, 1, new DateTime(2015, 10, 17, 10, 30, 0));
            string result = park.GetStatus();
            string expected = "Sector 1: 1 / 2 (50% full)\r\nSector 2: 0 / 2 (0% full)";

            // Assert
            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 27
0
        public void GetStatusFullSingleSector_ShouldReturnCorrectResult()
        {
            // Arrange
            IVehiclePark park = new VehiclePark(2, 2);
            IVehicle car3 = new Car("CA1236CA", "Pesho", 3);
            IVehicle car4 = new Car("CA1237CA", "Pesho", 3);

            // Act
            park.InsertVehicle(car3, 2, 1, new DateTime(2015, 10, 17, 10, 30, 0));
            park.InsertVehicle(car4, 2, 2, new DateTime(2015, 10, 17, 10, 30, 0));
            string result = park.GetStatus();
            string expected = "Sector 1: 0 / 2 (0% full)\r\nSector 2: 2 / 2 (100% full)";

            // Assert
            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 28
0
        public void VehicleExitExactlyOnTime_ShouldReturnCorrectResult()
        {
            // Arrange
            IVehiclePark park = new VehiclePark(2, 2);
            string licensePlate = "CA1234CA";
            IVehicle car = new Car(licensePlate, "Pesho", 3);
            int sector = 1;
            int place = 1;

            // Act
            park.InsertVehicle(car, sector, place, new DateTime(2015, 10, 17, 10, 30, 0));
            string result = park.ExitVehicle(licensePlate, new DateTime(2015, 10, 17, 13, 30, 0), 6M);
            string expected = "********************\r\nCar [CA1234CA], owned by Pesho\nat place (1,1)\nRate: $6,00\nOvertime rate: $0,00\r\n--------------------\r\nTotal: $6,00\nPaid: $6,00\nChange: $0,00\r\n********************";

            // Assert
            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 29
0
        public void Test_GetStatus_PartiallyFullPark_Big_ShouldBeCorrect()
        {
            var park = new VehiclePark(3, 3);
            var car = new Car("CA1011AH", "John Smith", 1);
            park.InsertCar(car, 1, 1, new DateTime(2015, 5, 10, 10, 30, 0));
            car = new Car("CA1012AH", "John Smith", 1);
            park.InsertCar(car, 2, 2, new DateTime(2015, 5, 10, 10, 30, 0));
            car = new Car("CA1013AH", "John Smith", 1);
            park.InsertCar(car, 2, 1, new DateTime(2015, 5, 10, 10, 30, 0));

            string message = park.GetStatus();
            Assert.AreEqual(
                "Sector 1: 1 / 3 (33% full)\r\n" +
                "Sector 2: 2 / 3 (67% full)\r\n" +
                "Sector 3: 0 / 3 (0% full)",
                message);
        }
Ejemplo n.º 30
0
 public void Test_ExitVehicle_MoreTimeThanReserved_ShouldChargeOvertime()
 {
     var park = new VehiclePark(1, 2);
     var car = new Car("CA1011AH", "John Smith", 1);
     DateTime insertDate = new DateTime(2015, 5, 10, 10, 0, 0);
     park.InsertCar(car, 1, 1, insertDate);
     string message = park.ExitVehicle("CA1011AH", insertDate.AddHours(2), 10.0M);
     Assert.AreEqual(
         "********************\r\n" +
         "Car [CA1011AH], owned by John Smith\r\n" +
         "at place (1,1)\r\n" +
         "Rate: $2.00\r\n" +
         "Overtime rate: $3.50\r\n" +
         "--------------------\r\n" +
         "Total: $5.50\r\n" +
         "Paid: $10.00\r\n" +
         "Change: $4.50\r\n" +
         "********************",
         message);
 }
Ejemplo n.º 31
0
        public void FindVeficle_InValidLicencePlate_ShouldReturnVehicle()
        {
            var mock = new Mock <IData>();

            mock.Setup(vp => vp.VehiclesInPark).Returns(new Dictionary <IVehicle, string>()
            {
                { this.vehicle, "(1,2)" }
            });
            mock.Setup(vp => vp.ParkingPlace).Returns(new Dictionary <string, IVehicle>()
            {
                { "2", this.vehicle }
            });
            mock.Setup(vp => vp.LicencePlates).Returns(new Dictionary <string, IVehicle>()
            {
                { "AA0000AA", this.vehicle }
            });
            mock.Setup(vp => vp.StartTime).Returns(new Dictionary <IVehicle, DateTime>()
            {
                { this.vehicle, new DateTime(2016, 2, 6, 10, 15, 30) }
            });
            mock.Setup(vp => vp.Owners).Returns(new MultiDictionary <string, IVehicle>(false)
            {
                { "Owner", this.vehicle }
            });
            mock.Setup(vp => vp.Count).Returns(new int[2]);

            var mock2 = new Mock <ILayout>();

            mock2.Setup(l => l.Sectors).Returns(2);
            mock2.Setup(l => l.Places).Returns(3);

            var park = new VehiclePark(mock2.Object, mock.Object);

            var found = park.FindVehicle("BB0000BB");

            var expected = "There is no vehicle with license plate BB0000BB in the park";

            Assert.AreEqual(expected, found);
        }
        public void Test_ExitVehicle_LessTimeThanReserved_ShouldChargeForTheReservedTime()
        {
            var      park       = new VehiclePark(1, 2);
            var      car        = new Car("CA1011AH", "John Smith", 2);
            DateTime insertDate = new DateTime(2015, 5, 10, 10, 0, 0);

            park.InsertCar(car, 1, 1, insertDate);
            string message = park.ExitVehicle("CA1011AH", insertDate.AddHours(1), 10.0M);

            Assert.AreEqual(
                "********************\r\n" +
                "Car [CA1011AH], owned by John Smith\r\n" +
                "at place (1,1)\r\n" +
                "Rate: $4.00\r\n" +
                "Overtime rate: $0.00\r\n" +
                "--------------------\r\n" +
                "Total: $4.00\r\n" +
                "Paid: $10.00\r\n" +
                "Change: $6.00\r\n" +
                "********************",
                message);
        }
        public void TestAVehicleExitSuccessWithLessThanTheStayingHoursShouldReturnAnExitTicketWithFullHoursPaid()
        {
            IVehiclePark vehiclePark = new VehiclePark(3, 5);
            var          vehicle     = new Car("CA1001HH", "Jay Margareta", 1);

            vehiclePark.InsertCar(vehicle, 1, 5, new DateTime(2015, 05, 04, 10, 30, 00));
            string message = vehiclePark.ExitVehicle("CA1001HH", new DateTime(2015, 05, 04, 10, 50, 00), 40m);

            var ticket = new StringBuilder();

            ticket.AppendLine("********************")
            .AppendLine("Car [CA1001HH], owned by Jay Margareta")
            .AppendLine("at place (1,5)")
            .AppendLine("Rate: $2.00")
            .AppendLine("Overtime rate: $0.00")
            .AppendLine("--------------------")
            .AppendLine("Total: $2.00")
            .AppendLine("Paid: $40.00")
            .AppendLine("Change: $38.00")
            .Append("********************");

            Assert.AreEqual(ticket.ToString(), message);
        }
Ejemplo n.º 34
0
        public void TestInsertCarInvalidPlate()
        {
            // Arrage
            string      message;
            VehiclePark vehiclePark = new VehiclePark(new Layout(10, 20, new Database(10)));

            try
            {
                Car vehicle = new Car("CAAA01HH", "Endi", 2);

                // Act
                message = vehiclePark.InsertCar(vehicle, 6, 13, DateTime.Now);
            }
            catch (ArgumentException e)
            {
                message = e.Message;
            }

            // Assert
            Assert.AreEqual("The license plate number is invalid.", message);
            Assert.IsFalse(vehiclePark.Layout.IsSpotFilled(6, 13));
            Assert.IsFalse(vehiclePark.Layout.Database.VehiclesInPark.ContainsKey("CA01HH"));
            Assert.IsFalse(vehiclePark.Layout.Database.OwnerVehicles.ContainsKey("Endi"));
        }
 public void TestInitialize()
 {
     park = new VehiclePark(5, 5);
     car  = new Car("ЕН7697ВН", "Dinko Todorov", 10);
 }
Ejemplo n.º 36
0
 public void InitializeData()
 {
     this.park           = new VehiclePark(3, 2);
     this.vehicle        = new Car("AA0000AA", "Owner", 2);
     this.anotherVehicle = new Motorbike("BB0000BB", "Owner", 3);
 }
Ejemplo n.º 37
0
        public string Execute(ICommand command)
        {
            if (command.Name != "SetupPark" && VehiclePark == null)
            {
                return("The vehicle park has not been set up");
            }

            var parameters = command.Parameters;

            switch (command.Name)
            {
            case "SetupPark":
                if (int.Parse(parameters["sectors"]) < 0)
                {
                    return("The number of sectors must be positive");
                }

                if (int.Parse(parameters["placesPerSector"]) < 0)
                {
                    return("The number of places per sector must be positive");
                }

                this.VehiclePark = new VehiclePark(
                    int.Parse(parameters["sectors"]),
                    int.Parse(parameters["placesPerSector"]));
                return("Vehicle park created");

            case "Park":
                string   licensePlate  = parameters["licensePlate"];
                string   owner         = parameters["owner"];
                int      reservedHours = int.Parse(parameters["hours"]);
                int      sector        = int.Parse(parameters["sector"]);
                int      place         = int.Parse(parameters["place"]);
                DateTime dateTime      = DateTime.Parse(
                    parameters["time"],
                    null,
                    System.Globalization.DateTimeStyles.RoundtripKind);

                switch (command.Parameters["type"])
                {
                case "car":
                    return(VehiclePark.InsertCar(
                               new Car(licensePlate, owner, reservedHours),
                               sector,
                               place,
                               dateTime));

                case "motorbike":
                    return(VehiclePark.InsertMotorbike(
                               new Motorbike(licensePlate, owner, reservedHours),
                               sector,
                               place,
                               dateTime));

                case "truck":
                    return(VehiclePark.InsertTruck(
                               new Truck(licensePlate, owner, reservedHours),
                               sector,
                               place,
                               dateTime));
                }

                break;

            case "Exit":
                return(VehiclePark.ExitVehicle(
                           parameters["licensePlate"],
                           DateTime.Parse(parameters["time"], null, System.Globalization.DateTimeStyles.RoundtripKind),
                           decimal.Parse(parameters["paid"])));

            case "Status":
                return(VehiclePark.GetStatus());

            case "FindVehicle":
                return(VehiclePark.FindVehicle(
                           parameters["licensePlate"]));

            case "VehiclesByOwner":
                return(VehiclePark.FindVehiclesByOwner(
                           parameters["owner"]));

            default:
                throw new IndexOutOfRangeException("Invalid command.");
            }

            return(string.Empty);
        }
 public string[] Execute(VehiclePark current)
 {
     return(current.ExitVehicle(Parameters["licensePlate"],
                                DataTimeUtilities.ParseISODateTime(Parameters["time"]),
                                Convert.ToDecimal(Parameters["paid"])));
 }
Ejemplo n.º 39
0
 public void InitGetStatus()
 {
     this.vehiclePark = new VehiclePark(2, 2);
 }
Ejemplo n.º 40
0
        public string Execute(ICommand command)
        {
            if (command.Name != "SetupPark" && this.VehiclePark == null)
            {
                return("The vehicle park has not been set up");
            }

            switch (command.Name)
            {
            case "SetupPark":
                var sectors = int.Parse(command.Parameters["sectors"]);
                var places  = int.Parse(command.Parameters["placesPerSector"]);
                this.VehiclePark = new VehiclePark(sectors, places);
                return("Vehicle park created");

            case "Park":
                var type          = command.Parameters["type"];
                var licensePlate  = command.Parameters["licensePlate"];
                var owner         = command.Parameters["owner"];
                var reservedHours = int.Parse(command.Parameters["hours"]);
                var sector        = int.Parse(command.Parameters["sector"]);
                var place         = int.Parse(command.Parameters["place"]);
                var startTime     = DateTime.Parse(
                    command.Parameters["time"],
                    null,
                    System.Globalization.DateTimeStyles.RoundtripKind);
                switch (type)
                {
                case "car":
                    var car = new Car(licensePlate, owner, reservedHours);
                    return(this.VehiclePark.InsertVehicle(car, sector, place, startTime));

                case "motorbike":
                    var motorbike = new Motorbike(licensePlate, owner, reservedHours);
                    return(this.VehiclePark.InsertVehicle(motorbike, sector, place, startTime));

                case "truck":
                    var truck = new Truck(licensePlate, owner, reservedHours);
                    return(this.VehiclePark.InsertVehicle(truck, sector, place, startTime));

                default:
                    throw new InvalidOperationException("Invalid vehicle.");
                }

            case "Exit":
                licensePlate = command.Parameters["licensePlate"];
                var endTime = DateTime.Parse(
                    command.Parameters["time"],
                    null,
                    System.Globalization.DateTimeStyles.RoundtripKind);
                var price = decimal.Parse(command.Parameters["paid"]);
                return(this.VehiclePark.ExitVehicle(licensePlate, endTime, price));

            case "Status":
                return(this.VehiclePark.GetStatus());

            case "FindVehicle":
                licensePlate = command.Parameters["licensePlate"];
                return(this.VehiclePark.FindVehicle(licensePlate));

            case "VehiclesByOwner":
                owner = command.Parameters["owner"];
                return(this.VehiclePark.FindVehiclesByOwner(owner));

            default:
                throw new InvalidOperationException("Invalid command.");
            }
        }
Ejemplo n.º 41
0
 public void TestInitialize()
 {
     park = new VehiclePark(2, 2);
 }
Ejemplo n.º 42
0
 public void InitExit()
 {
     this.vehiclePark = new VehiclePark(10, 10);
 }
 public string[] Execute(VehiclePark vehiclePark)
 {
     return(vehiclePark.FindVehicle(Parameters.Values.ToArray()[0]));
 }
Ejemplo n.º 44
0
        public string ExecuteCommand(ICommand command)
        {
            string commandResult = string.Empty;

            if (command.Name != "SetupPark" && this.VehiclePark == null)
            {
                commandResult = "The vehicle park has not been set up";
                return(commandResult);
            }

            switch (command.Name)
            {
            case "SetupPark":
                this.VehiclePark = new VehiclePark(
                    int.Parse(command.Parameters["sectors"]),
                    int.Parse(command.Parameters["placesPerSector"]));
                commandResult = "Vehicle park created";
                break;

            case "Park":
                switch (command.Parameters["type"])
                {
                case "car":
                    commandResult = this.ExecuteParkCarCommand(command);
                    break;

                case "motorbike":
                    commandResult = this.ExecuteParkMotorbikeCommand(command);
                    break;

                case "truck":
                    commandResult = this.ExecuteParkTruckCommand(command);
                    break;

                default:
                    break;
                }

                break;

            case "Exit":
                commandResult = this.VehiclePark.ExitVehicle(
                    command.Parameters["licensePlate"],
                    DateTimeUtilities.ParseISODateTime(command.Parameters["time"]),
                    decimal.Parse(command.Parameters["paid"]));
                break;

            case "Status":
                commandResult = this.VehiclePark.GetStatus();
                break;

            case "FindVehicle":
                commandResult = this.VehiclePark.FindVehicle(command.Parameters["licensePlate"]);
                break;

            case "VehiclesByOwner":
                commandResult = this.VehiclePark.FindVehiclesByOwner(command.Parameters["owner"]);
                break;

            default:
                throw new InvalidOperationException("Invalid command.");
            }

            return(commandResult);
        }
 public VehicleParkBuilder WithInitialState(int sectors, int placesPerSector)
 {
     _vehiclePark = new VehiclePark(sectors, placesPerSector);
     return(this);
 }
Ejemplo n.º 46
0
 public string ExcecuteCommand(ref IVehiclePark vehiclePark)
 {
     vehiclePark = new VehiclePark(new Layout(this.Sectors, this.PlacesPerSector, new Database(this.Sectors)));
     return("Vehicle park created!");
 }
Ejemplo n.º 47
0
 public string[] Execute(VehiclePark vehiclePark)
 {
     return(vehiclePark.GetStatus());
 }
Ejemplo n.º 48
0
        public string TaskExecute(ICommand command)
        {
            if (command.Name != "SetupPark" && this.VehiclePark == null)
            {
                return("The vehicle park has not been set up");
            }

            // TODO this switch can be replaced by strategy pattern in the future
            switch (command.Name)
            {
            case "SetupPark":
                this.VehiclePark = new VehiclePark(Convert.ToInt32(command.Parameters["sectors"]), Convert.ToInt32(command.Parameters["placesPerSector"]));
                return("Vehicle park created");

            case "Park":
                var vehicleValidation = new VehicleValidation();
                switch (command.Parameters["type"])
                {
                case "car":
                    var car = new Car
                    {
                        LicensePlate  = command.Parameters["licensePlate"],
                        Owner         = command.Parameters["owner"],
                        ReservedHours = int.Parse(command.Parameters["hours"])
                    };
                    vehicleValidation.Validate(car);
                    return(this.VehiclePark.InsertCar(
                               car,
                               int.Parse(command.Parameters["sector"]),
                               int.Parse(command.Parameters["place"]),
                               DateTime.Parse(
                                   command.Parameters["time"],
                                   null,
                                   System.Globalization.DateTimeStyles.RoundtripKind)));

                case "motorbike":
                    var motorbike = new Motorbike
                    {
                        LicensePlate  = command.Parameters["licensePlate"],
                        Owner         = command.Parameters["owner"],
                        ReservedHours = int.Parse(command.Parameters["hours"])
                    };
                    vehicleValidation.Validate(motorbike);
                    return(this.VehiclePark.InsertMotorbike(
                               motorbike,
                               int.Parse(command.Parameters["sector"]),
                               int.Parse(command.Parameters["place"]),
                               DateTime.Parse(
                                   command.Parameters["time"],
                                   null,
                                   System.Globalization.DateTimeStyles.RoundtripKind)));

                case "truck":
                    var truck = new Truck()
                    {
                        LicensePlate  = command.Parameters["licensePlate"],
                        Owner         = command.Parameters["owner"],
                        ReservedHours = int.Parse(command.Parameters["hours"])
                    };
                    vehicleValidation.Validate(truck);
                    return(this.VehiclePark.InsertTruck(
                               truck,
                               int.Parse(command.Parameters["sector"]),
                               int.Parse(command.Parameters["place"]),
                               DateTime.Parse(
                                   command.Parameters["time"],
                                   null,
                                   System.Globalization.DateTimeStyles.RoundtripKind)));

                default:
                    return("Invalid parameter.");
                }

            case "Exit":
                return(this.VehiclePark.ExitVehicle(
                           command.Parameters["licensePlate"],
                           DateTime.Parse(command.Parameters["time"], null, System.Globalization.DateTimeStyles.RoundtripKind),
                           decimal.Parse(command.Parameters["paid"])));

            case "Status":
                return(this.VehiclePark.GetStatus());

            case "FindVehicle":
                return(this.VehiclePark.FindVehicle(command.Parameters["licensePlate"]));

            case "VehiclesByOwner":
                return(this.VehiclePark.FindVehiclesByOwner(command.Parameters["owner"]));

            default:
                return("Invalid command.");
            }
        }
Ejemplo n.º 49
0
 public void InitInsertCar()
 {
     this.vehiclePark = new VehiclePark(10, 10);
 }
Ejemplo n.º 50
0
 public void InitializeData()
 {
     this.park = new VehiclePark(3, 2);
     this.vehicle = new Car("AA0000AA", "Owner", 2);
 }
 public string[] Execute(VehiclePark vehiclePark)
 {
     return(vehiclePark.FindVehiclesByOwner(Parameters["owner"]));
 }