public void ParkVehicle_Test1() { var id = Guid.NewGuid().ToString(); var car = new Car(4, id); var parkingLot = new ParkingLot.ParkingLot(10); var result = parkingLot.ParkVehicle(car, DateTime.Today + new TimeSpan(8, 0, 0), DateTime.Today + new TimeSpan(10, 0, 0), 50); Assert.Equal(ErrorCodes.Success, result); }
public void ParkVehicle_Test3() { var id = Guid.NewGuid().ToString(); var car = new Car(4, id); var parkingLot = new ParkingLot.ParkingLot(26); var result = parkingLot.ParkVehicle(car, DateTime.Today + new TimeSpan(8, 0, 0), DateTime.Today + new TimeSpan(10, 0, 0), 50); Assert.Equal(22, parkingLot.GetFreeParkingSpots()); }
public void UnParkVehicle_Test2() { var id = Guid.NewGuid().ToString(); var car = new Car(4, id); var parkingLot = new ParkingLot.ParkingLot(26); var result = parkingLot.ParkVehicle(car, DateTime.Today + new TimeSpan(8, 0, 0), DateTime.Today + new TimeSpan(10, 0, 0), 50); var result1 = parkingLot.UnParkVehicle(car); Assert.Equal(100.0, result1.parkingCost); }
private void InitializeParkingLot(int size) { lot = new ParkingLot.ParkingLot(size); Adapter obj = new Adapter(); obj.parkingLot = lot; obj.CommandCall("Park A driver_age 10"); obj.CommandCall("Park B driver_age 20"); obj.CommandCall("Park C driver_age 30"); obj.CommandCall("Park D driver_age 40"); obj.CommandCall("Park E driver_age 40"); }
public void Manager_Should_Add_ParkingBoy_Successfully() { //given var parkingLot = new ParkingLot.ParkingLot("parkingLot_1"); var parkingBoy_1 = new ParkingBoy("parkingBoy_1", parkingLot); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new ParkingBoy[] { parkingBoy_1 })); //when var parkingBoy_2 = new ParkingBoy("parkingBoy_2", parkingLot); manager.AddParkingBoy(parkingBoy_2); //then Assert.True(manager.ManageParkingBoy(parkingBoy_2)); }
public void ParkVehicle_CapacityTest_Test4() { var id = Guid.NewGuid().ToString(); var car = new Car(4, id); var bike = new Bike(2, Guid.NewGuid().ToString()); var parkingLot = new ParkingLot.ParkingLot(26); parkingLot.ParkVehicle(bike); var result = parkingLot.ParkVehicle(car, DateTime.Today + new TimeSpan(8, 0, 0), DateTime.Today + new TimeSpan(10, 0, 0), 50); parkingLot.UnParkVehicle(car); Assert.Equal(24, parkingLot.GetFreeParkingSpots()); }
public void Clever_ParkingBoy_Should_Add_Error_Message_Given_No_Ticket() { //given var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new CleverParkingBoy("parkingBoy_1", parkingLot); //when parkingBoy.FetchCar(null, out var errorMessage); var expectedMessage = "Please provide your parking ticket."; //then Assert.Equal(expectedMessage, errorMessage); }
public void Manager_Should_Add_Error_Message_Given_No_Ticket() { //given var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new[] { parkingBoy })); //when manager.FetchCarByParkingBoy(null, parkingBoy, out var errorMessage); var expectedMessage = "Please provide your parking ticket."; //then Assert.Equal(expectedMessage, errorMessage); }
public virtual ParkingLot FindAvaibleParkingLot() { ParkingLot availableLot = null; bool canContinue = true; foreach (ParkingLot parkingLot in boysParkingLots) { if (parkingLot.LeftPosition > 0 && canContinue) { canContinue = false; availableLot = parkingLot; } } return(availableLot); }
public void Clever_ParkingBoy_Should_Add_Error_Message_Given_Wrong_Ticket() { //given var car = new Car("car_1"); var newCustomer = new Customer("customer_1", car); var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new CleverParkingBoy("parkingBoy_1", parkingLot); //when newCustomer.PassCarToParkingBoy(parkingBoy); var resultOfWrongTicket = parkingBoy.FetchCar(new ParkingTicket("another_parkingBoy", "new_Car", "new_Customer", "another_ParkingLot"), out var errorMessage); var expectedMessage = "Unrecognized parking ticket."; //then Assert.Equal(expectedMessage, errorMessage); }
public Ticket ParkCarBoy(Car car, string customerId) { Ticket newTicket = null; if (car != null && car.IsParked == false) { ParkingLot parkingLot = FindAvaibleParkingLot(); bool isParkSuccess = parkingLot.ParkCarLot(car); if (isParkSuccess) { newTicket = new Ticket(parkingLot.Id, this.Id, car.Id, customerId); car.IsParked = true; } } return(newTicket); }
public override ParkingLot FindAvaibleParkingLot() { ParkingLot availableLot = null; int maxLeftPosition = 0; foreach (ParkingLot parkingLot in BoysParkingLots) { if (parkingLot.LeftPosition > maxLeftPosition) { maxLeftPosition = parkingLot.LeftPosition; } } availableLot = BoysParkingLots.Find(parkingLot => parkingLot.LeftPosition == maxLeftPosition); //availableLot = boysParkingLots[1]; return(availableLot); }
public void Manager_Should_Park_And_Fetch_Car_Correctly() { //given var car = new Car("car_1"); var newCustomer = new Customer("customer_1", car); var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new[] { parkingBoy })); //when newCustomer.PassCarToParkingBoy(manager); //then Assert.True(parkingLot.ContainCar(car)); var carReturned = newCustomer.FetchCarFromParkingBoy(manager, newCustomer.GetTicket(0)); Assert.Equal(car, carReturned); }
public new ParkingLot FindAvaibleParkingLot() { ParkingLot availableLot = null; double maxLeftPositionRatio = 0; foreach (ParkingLot parkingLot in boysParkingLots) { double leftPositionRatio = parkingLot.LeftPosition / parkingLot.Capacity; if (leftPositionRatio > maxLeftPositionRatio) { maxLeftPositionRatio = parkingLot.LeftPosition; } } availableLot = boysParkingLots.Find(parkingLot => parkingLot.LeftPosition == maxLeftPositionRatio); return(availableLot); }
public void Should_Return_ticket_Smart_Parking_Boy() { //given var parkingLot1 = new ParkingLot.ParkingLot(1, 3); var parkingLot2 = new ParkingLot.ParkingLot(2, 4); var parkingLotList = new List <ParkingLot.ParkingLot> { parkingLot1, parkingLot2 }; //when var parkingBoy = new SmartParkingBoy(parkingLotList); var ticket = parkingBoy.ParkACarAndGetTicket("abc123"); var expectedTicket = new Ticket("abc123", 2); //then Assert.Equal(expectedTicket.GetParkingLotNumber(), ticket.GetParkingLotNumber()); }
public void Clever_ParkingBoy_Should_Add_Error_Message_Given_Outof_Capacity() { //given var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 2); var parkingBoy = new CleverParkingBoy("parkingBoy_1", parkingLot); var car_1 = new Car("car_1"); var car_2 = new Car("car_2"); var car_3 = new Car("car_3"); //when parkingBoy.ParkCar(car_1, out _); parkingBoy.ParkCar(car_2, out _); parkingBoy.ParkCar(car_3, out var errorMessage); var expectedMessage = "Not enough position."; //then Assert.Equal(expectedMessage, errorMessage); }
public void Clever_ParkingBoy_Should_Add_Error_Message_Given_Parked_Ticket() { //given var car = new Car("car_1"); var newCustomer = new Customer("customer_1", car); var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new CleverParkingBoy("parkingBoy_1", parkingLot); //when var parkedTicket = parkingBoy.ParkCar(car, out _); parkingBoy.FetchCar(parkedTicket, out _); parkingBoy.FetchCar(parkedTicket, out var errorMessage); var expectedMessage = "Unrecognized parking ticket."; //then Assert.Equal(expectedMessage, errorMessage); }
public static void ParkingSpaceQuestion() { ParkingLot alpha = new ParkingLot(5, 5, 5); bool loop = false; while (loop == false) { Console.WriteLine("What type of car are you trying to park: "); string _answer = Console.ReadLine(); string answer = _answer.ToLower(); if (answer == "large" || answer == "medium" || answer == "small") { alpha.AddCar(answer); //Console.WriteLine("Anymore cars (yes or no)? "); // string _answer2 = Console.ReadLine(); // string answer2 = _answer2.ToLower(); // if (answer2 == "yes") // { // ParkingSpaceQuestion(); // alpha.AddCar(answer); // } // else // { // loop = true; // } loop = true; } else { Console.WriteLine("You did not enter: Large, Medium, or Small \n Please try again"); loop = false; } } double largeParking; double mediumParking; double smallParking; largeParking = alpha.GetLargeSpace(); mediumParking = alpha.GetMediumSpace(); smallParking = alpha.GetSmallSpace(); Console.WriteLine($"There are {largeParking} large parking spaces left.\n\t There are {mediumParking} medium parking spaces left.\n\t\t There are {smallParking} small parking spaces left."); }
public void Manger_Should_Appoint_ParkingBoy_To_Park_And_Fetch() { //given var car = new Car("car_1"); var newCustomer = new Customer("customer_1", car); var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new[] { parkingBoy })); //when var parkingResult = manager.ParkCarByParkingBoy(car, parkingBoy, out var parkErrorMessage); Assert.Equal("parkingLot_1", parkingResult.ParkingLotId); Assert.Equal("car_1", parkingResult.CarId); var carResult = manager.FetchCarByParkingBoy(parkingResult, parkingBoy, out var fetchErrorMessage); Assert.Equal(car, carResult); }
static void Main(string[] args) { ParkingLot parkingLot = new ParkingLot(); List <Car> cars = parkingLot.GenerateCars(); parkingLot.CountByType(cars); Console.WriteLine(); parkingLot.CountByTypeWithLambda(cars); Console.WriteLine(); parkingLot.CountByColor(cars); Console.WriteLine(); parkingLot.CountByColorWithLambda(cars); Console.WriteLine(); parkingLot.MostFrequently(cars); Console.WriteLine(); parkingLot.MostFrequentlyWtihLambda(cars); Console.ReadKey(); }
public void Manager_Should_Add_Error_Message_Given_Outof_Capacity() { //given var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 2); var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot); var car_1 = new Car("car_1"); var car_2 = new Car("car_2"); var car_3 = new Car("car_3"); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new[] { parkingBoy })); //when manager.ParkCarByParkingBoy(car_1, parkingBoy, out _); manager.ParkCarByParkingBoy(car_2, parkingBoy, out _); manager.ParkCarByParkingBoy(car_3, parkingBoy, out var errorMessage); var expectedMessage = "Not enough position."; //then Assert.Equal(expectedMessage, errorMessage); }
public void Manager_Should_Add_Error_Message_Given_Parked_Ticket() { //given var car = new Car("car_1"); var newCustomer = new Customer("customer_1", car); var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3); var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot); var manager = new ParkingLotServiceManager("manager_1", parkingLot, new List <ParkingBoy>(new[] { parkingBoy })); //when var parkedTicket = manager.ParkCarByParkingBoy(car, parkingBoy, out _); manager.FetchCarByParkingBoy(parkedTicket, parkingBoy, out _); manager.FetchCarByParkingBoy(parkedTicket, parkingBoy, out var errorMessage); var expectedMessage = "Unrecognized parking ticket."; //then Assert.Equal(expectedMessage, errorMessage); }
public void CommandCall_Handles_InvalidCommand() { // Arrange lot = new ParkingLot.ParkingLot(10); var mock = new Mock <Adapter>() { CallBase = true }; mock.Object.parkingLot = lot; //Act mock.Setup(x => x.CommandCall(It.IsAny <string>())); string command = "Arrest_driver_of_age 17"; var result = mock.Object.CommandCall(command); //Assert Assert.AreEqual(result, "Invalid command"); }
static void Main(string[] args) { var vacantParkingSpaces = BuilSpots(); var parkingLot = new ParkingLot(vacantParkingSpaces.ToList()); var totalVehicleCounter = 0; var stopWatch = new Stopwatch(); stopWatch.Start(); while (true) { var vehicle = CreateRandomVehicle(); Thread removeVehicleThread = new Thread(() => RemoveVehicle(stopWatch, parkingLot)); removeVehicleThread.Start(); WriteMessage($"{vehicle.License} - {vehicle.CarSize} wanting to get in and park", ConsoleColor.Green); if (parkingLot.Insert(vehicle) == false) { WriteMessage($"{ vehicle.License} - { vehicle.CarSize} Cant find a spot! going somewhere else!", ConsoleColor.Gray); } else { lock (_vehiclesLock) { _vehiclesIn.Add(vehicle); } totalVehicleCounter++; } WriteMessage($"Total vehicles so far: { totalVehicleCounter}", ConsoleColor.White); WriteMessage(parkingLot.TotalVehiclesString, ConsoleColor.White); } Console.ReadLine(); }
public Ticket[] ParkCars(string[] plateNumbers, ParkingLot parkingLot, bool queryErrorMessage) { var hasPositions = plateNumbers.Length <= ParkingLot.PositionMaxNumber - parkingLot.CarList.Count; if (!hasPositions) { SendErrorMessage(queryErrorMessage, "noPosition"); return(null); } Ticket[] tickets = plateNumbers.Where(number => number != null) .Select(it => new Ticket { TicketMarker = it, IsUsed = false }) .ToArray(); foreach (var plateNumber in plateNumbers) { parkingLot.CarList.Add(plateNumber); } return(tickets); }
public void Should_Return_ticket_Parking_Manager() { //given var parkingLot1 = new ParkingLot.ParkingLot(1, 3); var parkingLot2 = new ParkingLot.ParkingLot(2, 4); var parkingLotList = new List <ParkingLot.ParkingLot> { parkingLot1, parkingLot2, }; //when var parkingManager = new ParkingManager(parkingLotList); parkingManager.AddParkingBoy(new NormalParkingBoy(parkingLotList)); var ticket0 = parkingManager.ParkACarAndGetTicket("abc123"); var ticket1 = parkingManager.ParkACarAndGetTicket("abc123"); var ticket2 = parkingManager.ParkACarAndGetTicket("abc124"); var expectedTicket = new Ticket("abc124", 1); //then Assert.Equal(expectedTicket.GetParkingLotNumber(), ticket2.GetParkingLotNumber()); }
public ParkingTicket ParkingCar(Car car, out string errorMessage) { if (car == null) { errorMessage = "Input car is null."; } if (leftPosition <= 0) { errorMessage = "Not enough position."; return(null); } ParkingLot parkingLot = new ParkingLot("A"); errorMessage = string.Empty; ParkingTicket parkingTicket = new ParkingTicket(car.CarId, parkingLot); parkedCars.Add(car, parkingLot); leftPosition--; return(parkingTicket); }
public NormalParkingBoy(string id, ParkingLot parkingLot) : base(id, parkingLot) { }
public ParkingBoy(string inputName, ParkingLot parkingLot1, ParkingLot parkingLot2) { this.name = inputName; ManagedParkingLots.Add(parkingLot1); ManagedParkingLots.Add(parkingLot2); }
public ParkingLotServiceManager(string inputName, ParkingLot parkingLot1, ParkingLot parkingLot2) : base(inputName, parkingLot1, parkingLot2) { }