Example #1
0
        public void FindVehicle_AnNonExistingLicensePlate_ShouldReturnWarning()
        {
            var vehicleParkDataMock = new VehicleParkDataMock(DefaultParkSectors);

            var vehicleParkMocked = new VehiclePark(DefaultParkSectors, DefaultParkPlacesPerSector, vehicleParkDataMock);

            var actualResut = vehicleParkMocked.FindVehicle("CA0003AH");

            var expectedResult = "There is no vehicle with license plate CA0003AH in the park";

            Assert.AreEqual(expectedResult, actualResut, "Did not return proper warning.");
        }
Example #2
0
        public void TestFindVehicleFail()
        {
            // Arrange
            IVehiclePark vehiclePark     = new VehiclePark(this.CreateMockLayout());
            string       expectedMessage = "There is no vehicle with license plate FF00021AB in the park";

            // Act
            string message = vehiclePark.FindVehicle("FF00021AB");

            // Assert
            Assert.AreEqual(expectedMessage, message);
        }
Example #3
0
        public void FindVehicle_AnExistingLicensePlate_ShouldReturnExpectedVehicle()
        {
            // var mockMOckedData = new Mock<VehicleParkDataMock>(DefaultParkSectors);

            var vehicleParkDataMock = new VehicleParkDataMock(DefaultParkSectors);

            var vehicleParkMocked = new VehiclePark(DefaultParkSectors, DefaultParkPlacesPerSector, vehicleParkDataMock);

            var actualResut = vehicleParkMocked.FindVehicle("CA0001AH");

            var expectedResult = "Car [CA0001AH], owned by Gosho\r\nParked at (0,1)";

            Assert.AreEqual(expectedResult, actualResut, "Did not return proper vehicle.");
        }
Example #4
0
        public void TestFindVehicleSuccess()
        {
            // Arrange
            IVehiclePark  vehiclePark = new VehiclePark(this.CreateMockLayout());
            StringBuilder sb          = new StringBuilder();

            sb.Append("Car [FF00021AC], owned by Endi");
            sb.Append(Environment.NewLine);
            sb.Append("Parked at (1, 1)");
            string expectedMessage = sb.ToString();

            // Act
            string message = vehiclePark.FindVehicle("FF00021AC");

            // Assert
            Assert.AreEqual(expectedMessage, message);
        }
Example #5
0
        public void FindVeficle_ValidLicencePlate_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>()
            {
                { "(1,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("AA0000AA");

            var expected = "Car [AA0000AA], owned by Owner\r\n" +
                           "Parked at (1,2)\r\n";

            Assert.AreEqual(expected, found);
        }
 public string[] Execute(VehiclePark vehiclePark)
 {
     return(vehiclePark.FindVehicle(Parameters.Values.ToArray()[0]));
 }
        public string Execution(ICommand command)
        {
            if (command.Name != "SetupPark" && VehiclePark == null)
            {
                return "The vehicle park has not been set up";
            }
            switch (command.Name)
            {
                //SetupPark {"sectors": 3, "placesPerSector": 5}
                case "SetupPark":
                    {
                        int iniciatedSectors = int.Parse(command.Parameters["sectors"]);
                        int initiatedPlacesPerSector = int.Parse(command.Parameters["placesPerSector"]);
                        if (iniciatedSectors <= 0)
                        {
                            return "The number of sectors must be positive";
                        }

                        if (initiatedPlacesPerSector <= 0)
                        {
                            return "The number of places per sector must be positive";
                        }

                        this.VehiclePark = new VehiclePark(iniciatedSectors, initiatedPlacesPerSector);
                        return "Vehicle park created"; break;
                    }
                case "Park":
                    {
                        switch (command.Parameters["type"])
                        {
                            case "car":
                                {
                                    return this.ExecuteParkCar(command); break;
                                }
                            case "motorbike":
                                {
                                    return ExecuteParkMotorbike(command); break;

                                }
                            case "truck":
                                {
                                    return ExecuteParkTruck(command); break;
                                }
                            default:
                                throw new IndexOutOfRangeException("Invalid command inside.");
                        }

                        break;
                    }
                case "Exit":
                    {
                        return VehiclePark.ExitVehicle(
                            command.Parameters["licensePlate"],
                           DateTime.Parse(command.Parameters["time"], null, System.Globalization.DateTimeStyles.RoundtripKind),
                            decimal.Parse(command.Parameters["paid"])); break;
                    }
                case "Status":
                    {
                        return VehiclePark.GetStatus(); break;
                    }
                case "FindVehicle":
                    {
                        return VehiclePark.FindVehicle(command.Parameters["licensePlate"]); break;
                    }
                case "VehiclesByOwner":
                    {
                        return VehiclePark.FindVehiclesByOwner(command.Parameters["owner"]); break;
                    }
                default:
                    throw new IndexOutOfRangeException("Invalid command.");

            }
        }
        public void VehicleExit_ShouldBeRemovedFromPark()
        {
            // 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));
            park.ExitVehicle(licensePlate, new DateTime(2015, 10, 17, 13, 30, 0), 6M);
            string result = string.Empty;
            try
            {
                park.FindVehicle(licensePlate);
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }

            string expected = string.Format(GlobalMessages.VehicleNotPresent, licensePlate);

            // Assert
            Assert.AreEqual(expected, result);
        }
Example #9
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);
        }