コード例 #1
0
        public void should_report_when_manager_manages_nothing()
        {
            var parkingManager  = new ParkingManager();
            var parkingDirector = new ParkingDirector(parkingManager);

            parkingDirector.ParkingReport.ToString("markdown").Should().Be("# M 0 0");
        }
コード例 #2
0
        public void should_report_when_manager_manages_one_parking_lot_and_different_parking_boys()
        {
            var parkingLot = new ParkingLotBuilder()
                             .WithCapacity(100)
                             .WithOccupiedParkingSpace(10)
                             .Create();
            var parkingBoy =
                new ParkingBoy(new ParkingLotBuilder().WithCapacity(200).WithOccupiedParkingSpace(20).Create());
            var smartParkingBoy =
                new SmartParkingBoy(new ParkingLotBuilder().WithCapacity(300).WithOccupiedParkingSpace(30).Create());
            var superParkingBoy = new SuperParkingBoy(
                new ParkingLotBuilder().WithCapacity(400).WithOccupiedParkingSpace(40).Create());
            var parkingManager  = new ParkingManager(parkingBoy, smartParkingBoy, superParkingBoy, parkingLot);
            var parkingDirector = new ParkingDirector(parkingManager);

            var actualReportText = parkingDirector.ParkingReport.ToString("markdown");

            actualReportText.Should().StartWith(
                "# M 100 1000" + NewLine +
                "* P 10 100");
            actualReportText.Should().Contain("## B 20 200" + NewLine +
                                              "* P 20 200");
            actualReportText.Should().Contain("## B 30 300" + NewLine +
                                              "* P 30 300");
            actualReportText.Should().Contain("## B 40 400" + NewLine +
                                              "* P 40 400");
        }
コード例 #3
0
        public void should_print_report_when_manager_has_one_parkingboy_with_one_parklot()
        {
            var parkinglotWit1Car3Availiable = new Parkinglot(4);
            var parkingDirector = new ParkingDirector(new ParkingManager(ParkingBoyFactory.CreateParkingBoy(parkinglotWit1Car3Availiable)));

            parkinglotWit1Car3Availiable.Park(new Car());

            Assert.Equal("M 1 3\r\n  B 1 3\r\n    P 1 3\r\n", parkingDirector.Report());
        }
コード例 #4
0
        public void should_print_report_when_manager_has_only_one_parkinglot()
        {
            var parkinglotWit1Car3Availiable = new Parkinglot(4);
            var parkingDirector = new ParkingDirector(new ParkingManager(parkinglotWit1Car3Availiable));

            parkinglotWit1Car3Availiable.Park(new Car());

            Assert.Equal("M 1 3\r\n  P 1 3\r\n", parkingDirector.Report());
        }
コード例 #5
0
        public void given_a_parking_manager_with_one_space_parking_lot_managed_by_a_parking_director_then_director_could_print_right_report_by_file_log()
        {
            var ooParkingLot    = new OOParkingLot(1);
            var parkingDirector = new ParkingDirector(new ParkingManager(ooParkingLot));

            var report = parkingDirector.OutPutByStrategy(new FileStrategy());

            Assert.AreEqual("M 1 0\r\n\tP 1 0", report);
        }
コード例 #6
0
        public void should_print_report_when_manager_has_only_two_parkinglot()
        {
            var firstParkinglotWit1Car3Availiable = new Parkinglot(4);
            var secondParkinglotWit1Car3Availiable = new Parkinglot(3);
            var parkingDirector = new ParkingDirector(new ParkingManager(firstParkinglotWit1Car3Availiable, secondParkinglotWit1Car3Availiable));

            firstParkinglotWit1Car3Availiable.Park(new Car());

            Assert.Equal("M 1 6\r\n  P 1 3\r\n  P 0 3\r\n", parkingDirector.Report());
        }
コード例 #7
0
        public void given_a_parking_manager_with_a_super_parking_boy_with_two_parking_lot_and_a_smart_boy_with_a_parking_lot_managed_by_a_parking_director_then_the_director_could_print_right_report()
        {
            var superParkingBoy = new SuperParkingBoy(new OOParkingLot(1), new OOParkingLot(1));
            var smartParkingBoy = new SmartParkingBoy(new OOParkingLot(1));
            var parkingDirector = new ParkingDirector(new ParkingManager(smartParkingBoy, superParkingBoy));

            var report = parkingDirector.OutPutByStrategy();

            Assert.AreEqual("M 3 0\r\n\tB1 1 0\r\n\t\tP 1 0\r\n\tB2 2 0\r\n\t\tP 1 0\r\n\t\tP 1 0", report);
        }
コード例 #8
0
        public void given_a_parking_manager_with_a_parking_boy_with_a_parking_lot_managed_by_a_parking_director_then_the_director_could_print_right_report()
        {
            var ooParkingLot    = new OOParkingLot(1);
            var parkingBoy      = new ParkingBoy(new OOParkingLot(1));
            var parkingDirector = new ParkingDirector(new ParkingManager(ooParkingLot, parkingBoy));

            var report = parkingDirector.OutPutByStrategy();

            Assert.AreEqual("M 2 0\r\n\tP 1 0\r\n\tB0 1 0\r\n\t\tP 1 0", report);
        }
コード例 #9
0
        public void given_a_parking_manager_with_two_parking_lot_managed_by_a_parking_director_then_the_director_could_print_right_report()
        {
            var firstParkingLot  = new OOParkingLot(1);
            var secondParkingLot = new OOParkingLot(0);
            var parkingDirector  = new ParkingDirector(new ParkingManager(firstParkingLot, secondParkingLot));

            var report = parkingDirector.OutPutByStrategy();

            Assert.AreEqual("M 1 0\r\n\tP 1 0\r\n\tP 0 0", report);
        }
コード例 #10
0
        public void given_a_parking_manager_with_empty_space_parking_lot_managed_by_a_parking_director_then_director_could_print_right_report()
        {
            var ooParkingLot    = new OOParkingLot(1);
            var parkingManager  = new ParkingManager(ooParkingLot);
            var parkingDirector = new ParkingDirector(parkingManager);

            parkingManager.Park(new Car("car"));

            var report = parkingDirector.OutPutByStrategy();

            Assert.AreEqual("M 0 1\r\n\tP 0 1", report);
        }
コード例 #11
0
        public void should_report_when_manager_manages_one_parking_lot()
        {
            var parkingLot = new ParkingLotBuilder()
                             .WithCapacity(2)
                             .WithOccupiedParkingSpace(1)
                             .Create();
            var parkingManager  = new ParkingManager(parkingLot);
            var parkingDirector = new ParkingDirector(parkingManager);

            parkingDirector.ParkingReport.ToString("markdown").Should().Be(
                "# M 1 2" + NewLine +
                "* P 1 2");
        }
コード例 #12
0
        public void should_report_when_manager_manages_one_super_parking_boy()
        {
            var parkingLot = new ParkingLotBuilder()
                             .WithCapacity(2)
                             .WithOccupiedParkingSpace(1)
                             .Create();
            var parkingBoy      = new SuperParkingBoy(parkingLot);
            var parkingManager  = new ParkingManager(parkingBoy);
            var parkingDirector = new ParkingDirector(parkingManager);

            parkingDirector.ParkingReport.ToString().Should().Be(
                "M 1 2" + NewLine +
                "  B 1 2" + NewLine +
                "    P 1 2");
        }
コード例 #13
0
        public void should_print_report_when_manager_has_two_parklots_and_one_parkingboy_with_two_parklot()
        {
            var parkinglotWith1Parked2Available = new Parkinglot(3);
            var parkinglotWith1Parked3Availible = new Parkinglot(4);
            var parkingDirector = new ParkingDirector(
                new ParkingManager(
                    new Parkinglot(3),
                    ParkingBoyFactory.CreateParkingBoy(parkinglotWith1Parked2Available, parkinglotWith1Parked3Availible),
                    new Parkinglot(4)
                    ));

            parkinglotWith1Parked2Available.Park(new Car());
            parkinglotWith1Parked3Availible.Park(new Car());

            Assert.Equal("M 2 12\r\n  P 0 3\r\n  B 2 5\r\n    P 1 2\r\n    P 1 3\r\n  P 0 4\r\n", parkingDirector.Report());
        }