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 Should_Park_Return_Null_When_Park_Null_Car()
        {
            // given
            Car car         = null;
            var parkingLot1 = new ParkingLot("ParkingLotOne");
            var parkingLot2 = new ParkingLot("ParkingLotOne");
            var parkingBoy  = new ParkingLotServiceManager("Jack", parkingLot1, parkingLot2);

            // when
            var parkingTicket = parkingBoy.Park(car);

            // then
            Assert.Null(parkingTicket);
        }
        public void Should_Park_Return_ParkingTicket_When_Park_To_Available_ParkingLot()
        {
            // given
            var car         = new Car("JAA8888");
            var parkingLot1 = new ParkingLot("ParkingLotOne");
            var parkingLot2 = new ParkingLot("ParkingLotOne");
            var parkingBoy  = new ParkingLotServiceManager("Jack", parkingLot1, parkingLot2);

            // when
            var parkingTicket = parkingBoy.Park(car);

            // then
            Assert.IsType <ParkingTicket>(parkingTicket);
        }
        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 void Should_Fetch_Return_Car_With_Valid_ParkingTicket()
        {
            // given
            // given
            var parkedCar     = new Car("JAA8888");
            var parkingLot1   = new ParkingLot("ParkingLotOne");
            var parkingLot2   = new ParkingLot("ParkingLotOne");
            var parkingBoy    = new ParkingLotServiceManager("Jack", parkingLot1, parkingLot2);
            var parkingTicket = parkingBoy.Park(parkedCar);

            // when
            var fetchedCar = parkingBoy.Fetch(parkingTicket);

            // then
            Assert.IsType <Car>(fetchedCar);
            Assert.Equal(fetchedCar, parkedCar);
        }
        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);
        }
コード例 #7
0
        public void Should_parking_lot_service_manager_add_super_smart_parking_boy_to_managementList()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2), new ParkingLot(3)
            };
            var expectedSuperSmartParkingBoy = new SuperSmartParkingBoy(parkingLotListForParkingBoy);
            var parkingLotServiceManager     = new ParkingLotServiceManager(parkingLotListForManager, new List <ParkingBoy>());

            parkingLotServiceManager.AddParkingBoy(expectedSuperSmartParkingBoy);
            // when
            var specifiedParkingBoy = parkingLotServiceManager.SpecifyParkingBoy();

            // then
            Assert.Equal(expectedSuperSmartParkingBoy, specifiedParkingBoy);
        }
        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 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);
        }
        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);
        }
コード例 #11
0
        public void Should_parking_lot_service_manager_return_parking_boy_to_do_parking_works()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2), new ParkingLot(3)
            };
            var superSmartParkingBoy     = new SuperSmartParkingBoy(parkingLotListForParkingBoy);
            var managementList           = new List <ParkingBoy>();
            var parkingLotServiceManager = new ParkingLotServiceManager(parkingLotListForManager, managementList);

            // when
            parkingLotServiceManager.AddParkingBoy(superSmartParkingBoy);
            bool isSuperSmartParkingBoyAdded = managementList.Contains(superSmartParkingBoy);

            // then
            Assert.True(isSuperSmartParkingBoyAdded);
        }
コード例 #12
0
        public void Should_parking_lot_service_manager_add_standard_parking_boy_to_managementList()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2), new ParkingLot(3)
            };
            var parkingBoy               = new ParkingBoy(parkingLotListForParkingBoy);
            var managementList           = new List <ParkingBoy>();
            var parkingLotServiceManager = new ParkingLotServiceManager(parkingLotListForManager, managementList);

            // when
            parkingLotServiceManager.AddParkingBoy(parkingBoy);
            bool isStandardParkingBoyAdded = managementList.Contains(parkingBoy);

            // then
            Assert.True(isStandardParkingBoyAdded);
        }
コード例 #13
0
        public void Should_parking_lot_service_manager_act_as_a_standard_parking_boy()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0, 0), new ParkingLot(1, 0)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2), new ParkingLot(3)
            };
            var standardParkingBoy       = new ParkingBoy(parkingLotListForParkingBoy);
            var parkingLotServiceManager = new ParkingLotServiceManager(parkingLotListForManager, new List <ParkingBoy>());

            parkingLotServiceManager.AddParkingBoy(standardParkingBoy);
            // when
            string errorMessage;

            parkingLotServiceManager.ParkCar(new Car(), out errorMessage);
            // then
            Assert.Equal("Not enough position.", errorMessage);
        }
コード例 #14
0
        public void Should_specified_parking_boy_only_manipulate_parking_lots_managed_by_him()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2, 0), new ParkingLot(3, 0)
            };
            var standardParkingBoy       = new ParkingBoy(parkingLotListForParkingBoy);
            var parkingLotServiceManager = new ParkingLotServiceManager(parkingLotListForManager, new List <ParkingBoy>());

            parkingLotServiceManager.AddParkingBoy(standardParkingBoy);
            var specifiedParkingBoy = parkingLotServiceManager.SpecifyParkingBoy();
            // when
            string errorMessage;

            specifiedParkingBoy.ParkCar(new Car(), out errorMessage);
            // then
            Assert.Equal("Not enough position.", errorMessage);
        }
コード例 #15
0
        public void Should_parking_lot_service_manager_has_have_same_error_message_with_prcking_boy_when_parking_boy_fails_operation()
        {
            // given
            List <ParkingLot> parkingLotListForManager = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            List <ParkingLot> parkingLotListForParkingBoy = new List <ParkingLot> {
                new ParkingLot(2, 0), new ParkingLot(3, 0)
            };
            var standardParkingBoy       = new ParkingBoy(parkingLotListForParkingBoy);
            var parkingLotServiceManager = new ParkingLotServiceManager(parkingLotListForManager, new List <ParkingBoy>());

            parkingLotServiceManager.AddParkingBoy(standardParkingBoy);
            var specifiedParkingBoy = parkingLotServiceManager.SpecifyParkingBoy();
            // when
            string errorMessage;

            specifiedParkingBoy.ParkCar(new Car(), out errorMessage);
            string errorMessageFromManager = parkingLotServiceManager.ErrorMessage;

            // then
            Assert.Equal("Not enough position.", errorMessage);
            Assert.Equal(errorMessage, errorMessageFromManager);
        }