コード例 #1
0
        public void AC1and2_Should_return_6cars_from_Lot1_5car_from_Lot2()
        {
            // given
            var manager = new Manager();
            manager.AddParkingLot(new Parkinglot(10));
            manager.AddParkingLot(new Parkinglot(10));
            var smartBoy = new SmartBoy(1);
            manager.AddBoy(smartBoy);
            manager.DistributeParkingLots(smartBoy, manager.ParkingLots[0]);
            manager.DistributeParkingLots(smartBoy, manager.ParkingLots[1]);

            var car = new Car("BMW");
            var count = 0;

            // when
            while (count < 11)
            {
                smartBoy.ParkCar(car);
                count++;
            }

            var expectedCarsCountFromLot1 = 6;
            var actualCarsCountFromLot1 = smartBoy.ParkingLots[0].CarsCount;

            var expectedCarsCountFromLot2 = 5;
            var actualCarsCountFromLot2 = smartBoy.ParkingLots[1].CarsCount;

            // then
            Assert.Equal(expectedCarsCountFromLot1, actualCarsCountFromLot1);
            Assert.Equal(expectedCarsCountFromLot2, actualCarsCountFromLot2);
        }
コード例 #2
0
        public void Should_return_error_message_when_all_lots_managed_are_full_for_parking_new_car()
        {
            var boy  = new SmartBoy();
            var lot1 = new Lot("loca1", 2);
            var lot2 = new Lot("loca2", 3);

            boy.Lots = new[] { lot1, lot2 };

            string message;
            var    messages = new List <string>();

            foreach (var car in TestData.GetCars(lot1.Capacity + lot2.Capacity + 1))
            {
                var ticket = boy.Park(car, out message);
                messages.Add(message);
            }

            Assert.True(messages.Where(message => messages.IndexOf(message) < (lot1.Capacity + lot2.Capacity))
                        .All(message => string.IsNullOrEmpty(message)));

            Assert.Equal("Not enough position.", messages.Last());
        }
コード例 #3
0
        public void Should_park_new_car_only_to_lot_which_has_more_positions()
        {
            var boy  = new SmartBoy();
            var lot1 = new Lot("loca1", 2);
            var lot2 = new Lot("loca2", 3);

            boy.Lots = new[] { lot1, lot2 };

            string message;
            var    locations = new List <string>();

            foreach (var car in TestData.GetCars(4))
            {
                var ticket = boy.Park(car, out message);
                locations.Add(ticket.GetLotLocation());
                Assert.Empty(message);
            }

            Assert.Equal(lot2.GetLocation(), locations[0]);
            Assert.Equal(lot2.GetLocation(), locations[1]);
            Assert.Equal(lot1.GetLocation(), locations[2]);
            Assert.Equal(lot2.GetLocation(), locations[3]);
        }