Exemple #1
0
        given_a_full_parking_lot_and_a_parking_boy_which_managed_by_parking_mananger_with_one_space_parking_lot_when_parking_manager_park_the_car_then_parking_boy_could_pick_the_car
            ()
        {
            var emptyParkinglot = new OOParkingLot(0);
            var parkinglot      = new OOParkingLot(1);
            var parkingBoy      = new ParkingBoy(parkinglot);
            var manager         = new ParkingManager(emptyParkinglot, parkingBoy);
            var car             = new Car("car");

            var carId = manager.Park(car);

            Assert.AreSame(car, parkingBoy.Pick(carId));
        }
Exemple #2
0
        public void Car_Should_be_fetched_according_to_parking_ticket()
        {
            //given
            var parkingLot = new ParkingLot();
            var parkingBoy = new ParkingBoy();
            //when
            var numberPlate   = "XX2345";
            var parkingTicket = parkingBoy.Park(numberPlate, parkingLot);
            var actual        = parkingBoy.Fetch(parkingTicket, parkingLot);

            //then
            Assert.Equal(numberPlate, actual);
        }
Exemple #3
0
        given_a_parking_lot_and_a_parking_boy_then_parking_boy_park_a_car_and_pick_the_car_then_parking_boy_cannot_pick_the_car
            ()
        {
            var parkingLot = new OOParkingLot(1);
            var parkingBoy = new ParkingBoy(parkingLot);
            var myCar      = new Car("a");

            var carId = parkingBoy.Park(myCar);

            parkingBoy.Pick(carId);

            Assert.AreEqual(null, parkingBoy.Pick(carId));
        }
Exemple #4
0
        public void A_parkingLot_should_not_contain_this_car_after_fetched()
        {
            //given
            var parkingLot = new ParkingLot();
            var parkingBoy = new ParkingBoy();
            //when
            var numberPlate   = "XX2345";
            var parkingTicket = parkingBoy.Park(numberPlate, parkingLot);
            var actual        = parkingBoy.Fetch(parkingTicket, parkingLot);

            //then
            Assert.DoesNotContain(numberPlate, parkingLot.ParkingCarsList);
        }
        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_return_no_ticket_when_passing_a_null_car()
        {
            // given
            List <ParkingLot> parkingLotList = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            var parkingBoy = new ParkingBoy(parkingLotList);
            // when
            var parkingTicket = parkingBoy.ParkCar(null, out string errorMessage);

            // then
            Assert.Null(parkingTicket);
        }
Exemple #7
0
        public void Should_Manager_Can_Add_Boy_To_List()
        {
            //Given
            var manager = new ParkingManager("Jack");
            var boy     = new ParkingBoy("Joy");

            //When
            manager.HireBoy(boy);
            bool result = manager.ManageList.Contains(boy);

            //Then
            Assert.Equal(true, result);
        }
Exemple #8
0
        public void should_park_one_car_to_first_avaliable_parking_lot()
        {
            var parkingLotOne = new ParkingLot(4);
            var parkingLotTwo = new ParkingLot(4);
            var parkingBoy    = new ParkingBoy(new[] { parkingLotOne, parkingLotTwo });

            TakeAllParkingSpaceOfParkingLot(parkingLotOne);
            var car = new Car();

            var token = parkingBoy.Park(car);

            Assert.Same(car, parkingLotTwo.Pick(token));
        }
Exemple #9
0
        public void A_parkingLot_should_contain_this_car_after_park()
        {
            //given
            var parkingLot = new ParkingLot();
            var parkingBoy = new ParkingBoy();
            //when
            string numberPlate = "XX2";
            var    ticket      = parkingBoy.Park(numberPlate, parkingLot);

            //then
            Assert.NotEmpty(ticket);
            Assert.Contains <string>("XX2", parkingLot.ParkingCarsList);
        }
Exemple #10
0
        public void should_be_able_to_pick_car_by_common_parking_boy()
        {
            var car        = new Car();
            var parkingLot = new ParkingLot(1);
            var parkingBoy = new ParkingBoy(new List <ParkingLot>()
            {
                parkingLot
            });

            var ticket = parkingLot.Park(car);

            Assert.Equal(car, parkingBoy.Pick(ticket));
        }
Exemple #11
0
        public void should_pick_the_same_car_using_the_ticket_generated_by_parkingboy_park()
        {
            ParkingLot        parkingLot  = new ParkingLot(1);
            List <ParkingLot> parkingLots = new List <ParkingLot>()
            {
                parkingLot
            };
            ParkingBoy parkingBoy = new ParkingBoy(parkingLots);
            Car        car        = new Car();
            var        ticket     = parkingBoy.Park(car);

            Assert.Same(car, parkingLot.Pick(ticket));
        }
Exemple #12
0
        public void should_return_ticket_from_packing_boy_when_let_boy_to_packing_car()
        {
            var parkingLots = new List <ParkingLot>();
            var parkingLot  = new ParkingLot(parkingSize);

            parkingLots.Add(parkingLot);
            var packingBoy = new ParkingBoy(parkingLots);

            var car    = new Car();
            var ticket = packingBoy.Park(car);

            Assert.NotNull(ticket);
        }
Exemple #13
0
        public void should_pick_car_from_parking_lot_2_by_common_parking_boy_if_the_car_is_in_parking_lot_2()
        {
            var parkingLot1 = new ParkingLot(1);
            var parkingLot2 = new ParkingLot(1);
            var parkingBoy  = new ParkingBoy(new List <ParkingLot>()
            {
                parkingLot1, parkingLot2
            });
            var car    = new Car();
            var ticket = parkingLot2.Park(car);

            Assert.Equal(car, parkingBoy.Pick(ticket));
        }
Exemple #14
0
        public void ParkingBoy_Should_Add_Error_Message_Given_No_Ticket()
        {
            //given
            var parkingLot = new ParkingLot.ParkingLot("parkingLot_1", 3);
            var parkingBoy = new ParkingBoy("parkingBoy_1", parkingLot);

            //when
            parkingBoy.FetchCar(null, out var errorMessage);
            var expectedMessage = "Please provide your parking ticket.";

            //then
            Assert.Equal(expectedMessage, errorMessage);
        }
        public void should_park_car_when_manages_multiple_parking_boys()
        {
            var parkingLot      = new ParkingLot(1);
            var parkingBoy      = new ParkingBoy(parkingLot);
            var smartParkingBoy = new SmartParkingBoy(parkingLot);
            var parkingManager  = new ParkingManager(parkingBoy, smartParkingBoy);
            var car             = new Car();

            var token     = parkingManager.Park(car);
            var pickedCar = parkingManager.Pick(token);

            pickedCar.Should().BeSameAs(car);
        }
Exemple #16
0
        public void should_can_pack_one_car_when_parking_boy_has_one_full_packinglot_and_unfull_packinglot()
        {
            var secondParkingLot = new ParkingLot(1);
            var parkingBoy       = new ParkingBoy(new List <ParkingLot> {
                new ParkingLot(1), secondParkingLot
            });

            parkingBoy.Park(new Car());

            var car   = new Car();
            var carId = parkingBoy.Park(car);

            Assert.AreSame(car, secondParkingLot.Pick(carId));
        }
Exemple #17
0
        public void should_get_null_if_try_to_park_a_car_when_all_parking_lots_are_full()
        {
            var parkingLot1 = new ParkingLot(1);
            var parkingLot2 = new ParkingLot(1);
            var parkingBoy  = new ParkingBoy(new List <ParkingLot>()
            {
                parkingLot1, parkingLot2
            });

            parkingBoy.Park(new Car());
            parkingBoy.Park(new Car());

            Assert.Null(parkingBoy.Park(new Car()));
        }
Exemple #18
0
        public void Should_Not_Fetch_Car_And_Return_Error_Message(string license, int parkingLotNumber)
        {
            var parkingLot     = new ParkingLot(1, 4);
            var parkingLotList = new List <ParkingLot>();

            parkingLotList.Add(parkingLot);
            var parkingBoy = new ParkingBoy(parkingLotList);
            var ticket     = parkingBoy.ParkACarAndGetTicket("abc123");

            parkingBoy.FetchACarWithTicket(new Ticket(license, parkingLotNumber));
            var returnMessage = parkingBoy.FetchACarWithTicket(new Ticket(license, parkingLotNumber));

            Assert.Equal("Unrecognized parking ticket.", returnMessage);
        }
        public void should_return_same_car_when_use_second_parking_lot_pick_car()
        {
            var secondParkingLot = new ParkingLot(2);
            var smartParkingBoy  = new ParkingBoy(new List <ParkingLot> {
                new ParkingLot(2), secondParkingLot
            }, ParkingBoyType.Smart);

            smartParkingBoy.Park(new Car());

            Car car   = new Car();
            var carId = smartParkingBoy.Park(car);

            Assert.AreSame(car, secondParkingLot.Pick(carId));
        }
Exemple #20
0
        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 ParkingBoy("Jack", parkingLot1, parkingLot2);

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

            // then
            Assert.Null(parkingTicket);
        }
Exemple #21
0
        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 ParkingBoy("Jack", parkingLot1, parkingLot2);

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

            // then
            Assert.IsType <ParkingTicket>(parkingTicket);
        }
        public void Should_return_parking_ticket_when_parked_a_car()
        {
            // given
            List <ParkingLot> parkingLotList = new List <ParkingLot> {
                new ParkingLot(0), new ParkingLot(1)
            };
            var parkingBoy = new ParkingBoy(parkingLotList);
            var car        = new Car();
            // when
            var parkingTicket = parkingBoy.ParkCar(car, out string errorMessage);

            // then
            Assert.NotNull(parkingTicket);
        }
Exemple #23
0
        public void Should_GetBoysParkingLots_return_ParkingLot_When_Add_ParkingLot_To_ParkingBoy()
        {
            //given
            var parkingLot = new ParkingLot(10, "p1");
            var parkingBoy = new ParkingBoy("b1");

            parkingBoy.AddParkingLot(parkingLot);
            //when
            ParkingLot actual   = parkingBoy.BoysParkingLots[0];
            var        expexted = parkingLot;

            //then
            Assert.Equal(actual.Id, expexted.Id);
        }
Exemple #24
0
        public void should_park_car_when_one_parkinglot_is_full_and_the_other_one_is_not()
        {
            ParkingLot        lotA        = new ParkingLot(0);
            ParkingLot        lotB        = new ParkingLot(1);
            List <ParkingLot> parkingLots = new List <ParkingLot>()
            {
                lotA, lotB
            };
            ParkingBoy parkingBoy = new ParkingBoy(parkingLots);
            Car        car        = new Car();
            var        ticket     = parkingBoy.Park(car);

            Assert.Equal(typeof(Ticket), ticket.GetType());
        }
Exemple #25
0
        public void Should_Return_no_parkingTicket_when_park_a_parked_car()
        {
            //given
            var parkingLot = new ParkingLot();
            var parkingBoy = new ParkingBoy();
            //when
            string numberPlate = "XX2345";

            parkingBoy.Park(numberPlate, parkingLot);
            var actual = parkingBoy.Park(numberPlate, parkingLot);

            //then
            Assert.Empty(actual);
        }
Exemple #26
0
        public void ShouldParkACarGivenACar()
        {
            ParkingLot parkingLot = new ParkingLot();
            ParkingBoy parkingBoy = new ParkingBoy(parkingLot);
            Car        car        = new Car("CARA111");
            // given
            string expected = car.GetCarNumber();

            // when
            string actual = parkingBoy.ParkingCar(car).GetCarNumber();

            // then
            Assert.Equal(expected, actual);
        }
        void should_return_parking_boy_parked_car_when_give_parking_boy_ticket()
        {
            var parkingBoy = new ParkingBoy(new List <ParkingLot>
            {
                new ParkingLot(parkingLotSize)
            });
            var car    = new Car();
            var ticket = parkingBoy.Park(car);

            Assert.NotNull(ticket);
            var returnedCar = parkingBoy.GetCar(ticket);

            Assert.Equal(car, returnedCar);
        }
Exemple #28
0
        public void should_not_park_car_when_parkinglots_are_full()
        {
            ParkingLot        lotA        = new ParkingLot(0);
            ParkingLot        lotB        = new ParkingLot(0);
            List <ParkingLot> parkingLots = new List <ParkingLot>()
            {
                lotA, lotB
            };
            ParkingBoy parkingBoy = new ParkingBoy(parkingLots);
            Car        car        = new Car();
            var        ticket     = parkingBoy.Park(car);

            Assert.Null(ticket);
        }
Exemple #29
0
        public void should_throw_NotFoundException_when_make_park_boy_pick_a_car_given_the_car_not_in_parking_lots_of_managed_by_boy()
        {
            var parkingLot1 = new ParkingLot(1);
            var parkingLot2 = new ParkingLot(1);
            var boy         = new ParkingBoy(new List <ParkingLot> {
                parkingLot1
            });
            var car    = new Car();
            var ticket = parkingLot2.Park(car);

            var exception = Assert.Throws <InvalidTicketException>(() => boy.Pick(ticket));

            Assert.Equal("invalid ticket", exception.Message);
        }
        void should_return_same_ordered_list_when_given_ordered_list()
        {
            var parkingLot1        = new ParkingLot(parkingLotSize);
            var parkingLot2        = new ParkingLot(parkingLotSize);
            var managedParkingLots = new List <ParkingLot>
            {
                parkingLot1,
                parkingLot2
            };
            var parkingBoy = new ParkingBoy(managedParkingLots);

            Assert.Equal(parkingLot2, parkingBoy.ManagedParkingLots[1]);
            Assert.Equal(parkingLot1, parkingBoy.ManagedParkingLots[0]);
        }