public void Should_Manager_Remove_Parking_Boy_Given_Parking_Boy_Existed()
        {
            //given
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot(0)
            });

            serviceManager.AddParkingBoy(parkingBoy);

            //when
            var deleteResult = serviceManager.RemoveParkingBoy(parkingBoy);

            //then
            Assert.True(deleteResult);
        }
        public void Should__Manager_Specify_The_Parking_Boy_To_Fetch_The_Car_Given_The_Parking_Boy_Is_In_ManagementList()
        {
            //given
            var carType        = new Car("acar");
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot()
            });
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });

            serviceManager.AddParkingBoy(parkingBoy);
            var ticket = serviceManager.SpecifyParkingBoyToPark(new Car("N98245"), out _);
            //when
            var car = serviceManager.SpecifyParkingBoyToFetch(ticket, out _);

            //then
            Assert.Equal(carType.GetType(), car.GetType());
        }
        public void Should_Manager_Display_Error_Message_When_The_Parking_Lot_Is_Full()
        {
            //given
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot(0)
            });

            serviceManager.AddParkingBoy(parkingBoy);
            var errorMessage = string.Empty;

            //when
            var ticket = serviceManager.Park(new Car("car"), out errorMessage);

            //then
            Assert.Equal("Not enough position.", errorMessage);
        }
        public void Should__Manager_Specify_The_Parking_Boy_To_Park_The_Car_Given_The_Parking_Boy_Is_In_ManagementList()
        {
            //given
            var expectedTicket = new Ticket("N98245");
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot()
            });
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });

            serviceManager.AddParkingBoy(parkingBoy);

            //when
            var ticket = serviceManager.SpecifyParkingBoyToPark(new Car("N98245"), out _);

            //then
            Assert.Equal(expectedTicket.GetType(), ticket.GetType());
        }
        public void Should_Manager_Display_Error_Message_When_Specify_A_Parking_Boy_To_Fetch_Car_Given_Null_Ticket()
        {
            //given
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot()
            });

            serviceManager.AddParkingBoy(parkingBoy);

            //when
            var errorMessage = string.Empty;

            serviceManager.Fetch(null, out errorMessage);

            //then
            Assert.Equal("Please provide your parking ticket.", errorMessage);
        }
        public void Should_Manager_Display_Error_Message_When_Specify_A_Parking_Boy_To_Fetch_Car_Given_Wrong_Ticket()
        {
            //given
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
            });
            var serviceManager = new ServiceManager(new List <ParkingLot>()
            {
                new ParkingLot()
            });

            serviceManager.AddParkingBoy(parkingBoy);
            var ticket = serviceManager.SpecifyParkingBoyToPark(new Car("N98245"), out _);

            //when
            var errorMessage = string.Empty;

            serviceManager.SpecifyParkingBoyToFetch(new Ticket("wrong"), out errorMessage);

            //then
            Assert.Equal("Unrecognized parking ticket.", errorMessage);
        }