public void should_stopped_to_more_empty_poisition_park_when_two_parks_have_different_empty_position()
        {
            Park lessEmptyPoisitionPark = new Park(1);
            Park moreEmptyPoisitionPark = new Park(2);
            Car car = new Car("JP123");
            SmartParkingBoy boy = new SmartParkingBoy(lessEmptyPoisitionPark, moreEmptyPoisitionPark);

            boy.StopCar(car);

            Assert.Same(car, moreEmptyPoisitionPark.PickUpCar(car.CarNumber));
        }
        public void should_stopped_to_first_park_when_two_parks_have_same_empty_position()
        {
            Park firstPark = new Park(1);
            Park secondPark = new Park(1);
            Car car = new Car("JP123");
            SmartParkingBoy boy = new SmartParkingBoy(firstPark, secondPark);

            boy.StopCar(car);

            Assert.Same(car, firstPark.PickUpCar(car.CarNumber));
        }
        public void should_not_pick_up_car_when_repeat_pick_up()
        {
            Park firstPark = new Park(1);
            Park secondPark = new Park(1);
            Car car = new Car("JP123");
            SmartParkingBoy boy = new SmartParkingBoy(firstPark, secondPark);

            boy.StopCar(car);
            boy.PickUpCar(car.CarNumber);

            Assert.Same(null, boy.PickUpCar(car.CarNumber));
        }
        public void should_success_to_ask_parkingboy_to_pick_car_when_two_boys()
        {
            ParkingBoy parkingBoy = new ParkingBoy(new Park(1));
            SmartParkingBoy smartParkingBoy = new SmartParkingBoy(new Park(1));
            Car car = new Car("JP123");

            ParkingManager manager = new ParkingManager(null, new List<ParkingBoyBase> { parkingBoy, smartParkingBoy });

            manager.StopCar(car);

            Assert.Same(car, manager.PickUpCar(car.CarNumber));
        }
        public void when_manager_have_one_boy_with_first_boy_have_full_parking_and_second_boy_have_one_empty()
        {
            var parkingBoy = new ParkingBoy(new Park(1));
            parkingBoy.StopCar(new Car("JP123"));
            var smartBoy = new SmartParkingBoy(new Park(1));
            ParkingManager manager = new ParkingManager(null, new List<ParkingBoyBase> { parkingBoy, smartBoy });

            ParkingDirector director = new ParkingDirector(manager);

            string report = director.GenerateReport();
            string[] array = report.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            var spaceTwo = Utils.SpaceTwo;
            Assert.Equal(string.Format("{0}B 0 1", spaceTwo), array[1]);
            var spaceFour = Utils.SpaceFour;
            Assert.Equal(string.Format("{0}P 0 1", spaceFour), array[2]);
            Assert.Equal(string.Format("{0}B 1 1", spaceTwo), array[3]);
            Assert.Equal(string.Format("{0}P 1 1", spaceFour), array[4]);
            Assert.Equal("M 1 2", array[0]);
        }