public void Should_return_false_when_it_has_a_prisoner_and_does_not_have_a_policeman()
        {
            var crewMembers = new List <CrewMember>
            {
                new Prisoner("prisoner")
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.False(result);
        }
        public void Should_return_true_when_all_crew_members_are_allowed()
        {
            var crewMembers = new List <CrewMember>
            {
                new Pilot("pilot"),
                new Officer("flightAttendant"),
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.True(result);
        }
        public void Should_return_true_when_it_has_a_prisoner_but_also_a_policeman()
        {
            var crewMembers = new List <CrewMember>
            {
                new Prisoner("prisoner"),
                new Policeman("policeman")
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.True(result);
        }
        public void Should_return_false_when_two_incompatible_crew_members_are_alone()
        {
            var incompatibleCrewMembers = new List <CrewMember>
            {
                new Pilot("pilot"),
                new FlightAttendant("flightAttendant")
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(incompatibleCrewMembers);

            Assert.False(result);
        }
        public void Should_return_false_when_it_has_more_than_two_crew_members_but_they_are_imcompatible()
        {
            var crewMembers = new List <CrewMember>
            {
                new Pilot("pilot"),
                new FlightAttendant("flightAttendant"),
                new FlightAttendant("flightAttendant")
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.False(result);
        }
        public void Should_return_true_when_it_has_incompatible_crew_members_but_they_are_not_alone()
        {
            var crewMembers = new List <CrewMember>
            {
                new Pilot("pilot"),
                new FlightAttendant("flightAttendant"),
                new Officer("officer")
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.True(result);
        }
        public void Should_disregard_null_elements()
        {
            var crewMembers = new List <CrewMember>
            {
                new Pilot("pilot"),
                new Officer("flightAttendant"),
                null
            };

            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(crewMembers);

            Assert.True(result);
        }
Exemple #8
0
        public TripDto Move(Place currentPlace, Place destinyPlace)
        {
            _tripInformerService.ShowMovementInfo(currentPlace, destinyPlace);

            if (!CurrentPlaceHasSmartFortwo(currentPlace))
            {
                throw new Exception("The smart fortwo was not found!");
            }

            if (!SmartFortwoAtCurrentPlaceHasDriver(currentPlace))
            {
                throw new Exception("Smart Fortwo can't move without a driver");
            }

            var currentPlaceMembersCanStayTogether = CrewChecker.CrewMembersAreAllowedToStayTogether(currentPlace.CrewMembers);
            var smartFortwoMembersCanStayTogether  = CrewChecker.CrewMembersAreAllowedToStayTogether(currentPlace.GetSmartFortwoCrewMembers());

            if (!currentPlaceMembersCanStayTogether || !smartFortwoMembersCanStayTogether)
            {
                throw new Exception("Some incompatible crew members are together alone or the prisoner is far from policeman");
            }

            return(ChangePlaceOfSmartFortwo(currentPlace, destinyPlace));
        }
        public void Should_accept_null_crew_member_list()
        {
            var result = CrewChecker.CrewMembersAreAllowedToStayTogether(null);

            Assert.True(result);
        }