public void FindVehiclesByOwner_FindExistingVehicle_ShouldReturnVehicle()
        {
            var car = new Car("CA1234ZX", "Owner", 2);
            var carSector = 1;
            var carPlace = 1;
            var truck = new Truck("CC1234ZT", "Owner", 12);
            var truckSector = 2;
            var truckPlace = 2;
            var date = new DateTime(2016, 1, 1, 12, 30, 00);
            this.parkingSystem.InsertVehicle(car, carSector, carPlace, date);
            this.parkingSystem.InsertVehicle(new Truck("CB1234ZU", "Ivan", 2), 1, 2, date);
            this.parkingSystem.InsertVehicle(new Motorbike("CV1234ZY", "Petar", 2), 1, 3, date);
            this.parkingSystem.InsertVehicle(truck, truckSector, truckPlace, date);
            var expected = new StringBuilder();
            expected.AppendLine(
                string.Format(
                "{0}{1}Parked at ({2},{3})",
                car.ToString(),
                Environment.NewLine,
                carSector,
                carPlace));
            expected.AppendLine(
                string.Format(
                "{0}{1}Parked at ({2},{3})",
                truck.ToString(),
                Environment.NewLine,
                truckSector,
                truckPlace));

            var result = this.parkingSystem.FindVehiclesByOwner("Owner");

            Assert.AreEqual(expected.ToString().Trim(), result);
        }
        public void InsertVehicle_InsertNewVehicleWithValidData_ShouldInsertAndReturnSuccessMessage()
        {
            var vehicle = new Car("CA2345RE", "Car Owner", 2);
            var sector = 1;
            var place = 3;
            var startDate = new DateTime(2016, 1, 3, 10, 30, 00);

            var successMessage = string.Format("{0} parked successfully at place ({1},{2})", vehicle.GetType().Name, sector, place);
            var result = this.parkingSystem.InsertVehicle(vehicle, sector, place, startDate);

            Assert.AreEqual(successMessage, result);
        }
        public void InsertVehicle_InsertNewVehicleWithInvalidSector_ShouldReturnErrorMessage()
        {
            var vehicle = new Car("CA2345RE", "Car Owner", 2);
            var sector = 13;
            var place = 3;
            var startDate = new DateTime(2016, 1, 3, 10, 30, 00);

            var errorMessage = string.Format("There is no sector {0} in the park", sector);
            var result = this.parkingSystem.InsertVehicle(vehicle, sector, place, startDate);

            Assert.AreEqual(errorMessage, result);
        }
        public void InsertVehicle_InsertNewVehicleOnOccupiedPlace_ShouldReturnErrorMessage()
        {
            var vehicle1 = new Car("CA2345RE", "Car Owner 1", 2);
            var vehicle2 = new Car("CA4790FY", "Car Owner 2", 3);
            var sector = 1;
            var place = 3;
            var startDate = new DateTime(2016, 1, 3, 10, 30, 00);
            this.parkingSystem.InsertVehicle(vehicle1, sector, place, startDate);

            var errorMessage = string.Format("The place ({0},{1}) is occupied", sector, place);
            var result = this.parkingSystem.InsertVehicle(vehicle2, sector, place, startDate);

            Assert.AreEqual(errorMessage, result);
        }
        public void ExitVehicle_ExitVehicleWithValidOverRatedData_ShouldExitAndReturnSuccessMessage()
        {
            var licensePlate = "CA2345RE";
            var vehicle = new Car(licensePlate, "Car Owner", 2);
            var sector = 1;
            var place = 3;
            var startDate = new DateTime(2016, 1, 3, 10, 30, 00);
            var endDate = new DateTime(2016, 1, 3, 13, 30, 00);
            this.parkingSystem.InsertVehicle(vehicle, sector, place, startDate);

            var expected = this.PrintTicket(30M, vehicle, 3, sector, place);
            var result = this.parkingSystem.ExitVehicle(licensePlate, endDate, 30M);

            Assert.AreEqual(expected.ToString(), result);
        }
        public void ExitVehicle_ExitNonExistingVehicleWith_ShouldReturnErrorMessage()
        {
            var licensePlate = "CA2345RE";
            var vehicle = new Car(licensePlate, "Car Owner", 2);
            var sector = 1;
            var place = 3;
            var startDate = new DateTime(2016, 1, 3, 10, 30, 00);
            var endDate = new DateTime(2016, 1, 3, 13, 30, 00);
            this.parkingSystem.InsertVehicle(vehicle, sector, place, startDate);
            var newLicensePlate = "CB2345RE";

            var errorMessage = string.Format("There is no vehicle with license plate {0} in the park", newLicensePlate);
            var result = this.parkingSystem.ExitVehicle(newLicensePlate, endDate, 30M);

            Assert.AreEqual(errorMessage, result);
        }
        public void FindVehiclesByOwner_FindOwnerWithoutVehicle_ShouldReturnErrorMessage()
        {
            var car = new Car("CA1234ZX", "Owner", 2);
            var carSector = 1;
            var carPlace = 1;
            var truck = new Truck("CC1234ZT", "Owner", 12);
            var truckSector = 2;
            var truckPlace = 2;
            var date = new DateTime(2016, 1, 1, 12, 30, 00);
            this.parkingSystem.InsertVehicle(car, carSector, carPlace, date);
            this.parkingSystem.InsertVehicle(truck, truckSector, truckPlace, date);
            var owner = "Petar";

            var expected = string.Format("No vehicles by {0}", owner);
            var result = this.parkingSystem.FindVehiclesByOwner(owner);

            Assert.AreEqual(expected, result);
        }