public void TestHeldUpCannotMarkTwice()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.HeldUp;
            ai.HasHeldUpDemandBeenMade = true;
            Assert.False(ai.Can(RobotAiState.HeldUpDemandMarkEnemies));
            Assert.False(ai.Can(RobotAiState.HeldUpDemandMarkAmmo));
        }
        public void TestStartingStateCanMoveTo()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Start;

            // Cannot go back to start
            Assert.False(ai.Can(RobotAiState.Start));
            Assert.True(ai.Can(RobotAiState.Inactive));
            Assert.True(ai.Can(RobotAiState.Patrol));
        }
Esempio n. 3
0
        public void TestSearchingLookAroundShouldFollowUpPlayerPositionIfSeenPlayer()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            ai.PlayerLocations.Add(new PlayerLocation(DateTime.Now, new MockLocation(), true, true));

            ai.State      = RobotAiState.SearchingLookAroundPointOfInterest;
            ai.TimeMarker = DateTime.Now - TimeSpan.FromMinutes(10);
            Assert.True(ai.Can(RobotAiState.SearchingFollowUpPlayerLastSeen));
            Assert.False(ai.Can(RobotAiState.SearchingFollowUpPointOfInterest));
        }
        public void TestHeldUpSubStatesCanMoveToHeldUp()
        {
            RobotAi ai = new MockRobotAi();

            ai.HasHeldUpDemandBeenMade = false;

            ai.State = RobotAiState.HeldUpRefuse;
            Assert.True(ai.Can(RobotAiState.HeldUp));

            ai.State = RobotAiState.HeldUpDemandMarkAmmo;
            Assert.True(ai.Can(RobotAiState.HeldUp));

            ai.State = RobotAiState.HeldUpDemandMarkEnemies;
            Assert.True(ai.Can(RobotAiState.HeldUp));
        }
Esempio n. 5
0
        public void TestAlertAttackCanMoveToAlertRepositionAfter1To3Bursts()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.AlertAttack;

            ai.BurstsFired = 1;
            Assert.False(ai.Can(RobotAiState.AlertReposition));

            ai.BurstsFired = 2;
            Assert.False(ai.Can(RobotAiState.AlertReposition));

            ai.BurstsFired = 3;
            Assert.True(ai.Can(RobotAiState.AlertReposition));
        }
Esempio n. 6
0
        public void TestSearchingCanMoveToFollowUpPointOfInterest()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Searching;
            Assert.True(ai.Can(RobotAiState.SearchingFollowUpPointOfInterest));
        }
        public void TestDisabledCannotMoveToHeldUp()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Disabled;
            Assert.False(ai.Can(RobotAiState.HeldUp));
        }
        public void TestInactiveCannotMoveToHeldUp()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Inactive;
            Assert.False(ai.Can(RobotAiState.HeldUp));
        }
        public void TestAlertCannotMoveToHeldUp()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Alert;
            Assert.False(ai.Can(RobotAiState.HeldUp));
        }
Esempio n. 10
0
        public void TestInactiveCanMoveToPatrol()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.Inactive;
            Assert.True(ai.Can(RobotAiState.Patrol));
        }
Esempio n. 11
0
        public void TestSuspicionCallHeadQuartersCanMoveToSearching()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.SuspicionCallHeadQuarters;
            Assert.True(ai.Can(RobotAiState.Searching));
        }
Esempio n. 12
0
        public void TestAlertAttackAndAlertRepositionLostSightOfPlayerCanMoveToFollowUp()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;


            robot.CanSeePlayer         = false;
            robot.DetectionLineOfSight = true;
            ai.PlayerLocations.Add(new PlayerLocation(DateTime.Now, new MockLocation(10, 10, 10), true, true));

            ai.State = RobotAiState.AlertAttack;
            Assert.True(ai.Can(RobotAiState.AlertFollowUp));

            ai.State = RobotAiState.AlertReposition;
            Assert.True(ai.Can(RobotAiState.AlertFollowUp));
        }
Esempio n. 13
0
        public void TestAlertCallHeadQuartersCanMoveToAttack()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.AlertCallHeadQuarters;
            Assert.True(ai.Can(RobotAiState.AlertAttack));
        }
Esempio n. 14
0
        public void TestSearchingLookAroundPointOfInterestShouldFlipFlopIfPlayerHasBeenSeen()
        {
            RobotAi ai = new MockRobotAi();

            ai.PlayerLocations.Add(new PlayerLocation(DateTime.Now, new MockLocation(), true, true));

            ai.TimeMarker = DateTime.Now - TimeSpan.FromMinutes(10);

            ai.State = RobotAiState.SearchingLookAroundPlayerLastSeen;
            Assert.False(ai.Can(RobotAiState.SearchingFollowUpPlayerLastSeen));
            Assert.True(ai.Can(RobotAiState.SearchingFollowUpPointOfInterest));

            ai.State = RobotAiState.SearchingLookAroundPointOfInterest;
            Assert.False(ai.Can(RobotAiState.SearchingFollowUpPointOfInterest));
            Assert.True(ai.Can(RobotAiState.SearchingFollowUpPlayerLastSeen));
        }
        public void TestHeldUpSubStatesCannotMoveToGetDownIfNotPlayingAnimation()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.PlayingAnimation     = RobotAnimation.None;
            ai.HasHeldUpDemandBeenMade = false;

            ai.State = RobotAiState.HeldUpRefuse;
            Assert.False(ai.Can(RobotAiState.HeldUpGetDown));

            ai.State = RobotAiState.HeldUpDemandMarkAmmo;
            Assert.False(ai.Can(RobotAiState.HeldUpGetDown));

            ai.State = RobotAiState.HeldUpDemandMarkEnemies;
            Assert.False(ai.Can(RobotAiState.HeldUpGetDown));
        }
Esempio n. 16
0
        public void TestAlertCannotMoveToCallHeadQuartersBefore2Seconds()
        {
            RobotAi ai = new MockRobotAi();

            ai.State      = RobotAiState.Alert;
            ai.TimeMarker = DateTime.Now - TimeSpan.FromSeconds(1);
            Assert.False(ai.Can(RobotAiState.AlertCallHeadQuarters));
        }
Esempio n. 17
0
        public void TestAlertCanMoveToCallHeadQuartersAfter2Seconds()
        {
            RobotAi ai = new MockRobotAi();

            ai.State      = RobotAiState.Alert;
            ai.TimeMarker = DateTime.Now - TimeSpan.FromSeconds(3);
            Assert.True(ai.Can(RobotAiState.AlertCallHeadQuarters));
        }
Esempio n. 18
0
        public void TestAlertAttackCannotMoveToAlertRepositionAfterBursting4Times()
        {
            RobotAi ai = new MockRobotAi();

            ai.State       = RobotAiState.AlertAttack;
            ai.BurstsFired = 4;
            Assert.True(ai.Can(RobotAiState.AlertReposition));
        }
        public void TestHeldUpGetDownCannotMoveToHeldUp()
        {
            RobotAi ai = new MockRobotAi();

            ai.HasHeldUpDemandBeenMade = false;
            ai.State = RobotAiState.HeldUpGetDown;
            Assert.False(ai.Can(RobotAiState.HeldUp));
        }
        public void TestHeldUpRefuse()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.HeldUp;
            ai.HasHeldUpDemandBeenMade = true;
            Assert.True(ai.Can(RobotAiState.HeldUpRefuse));
        }
        public void TestHeldUpCanMarkEnemies()
        {
            RobotAi ai = new MockRobotAi();

            ai.State = RobotAiState.HeldUp;
            ai.MarkEnemiesRequested = true;
            Assert.True(ai.Can(RobotAiState.HeldUpDemandMarkEnemies));
        }
Esempio n. 22
0
        public void TestAlertAttackAndAlertCannotRepositionWhenInSightAndInRange()
        {
            RobotAi    ai     = new MockRobotAi();
            MockPlayer player = (MockPlayer)ai.Player;
            MockRobot  robot  = (MockRobot)ai.Robot;

            player.Location            = new MockLocation(1, 1, 1);
            robot.Location             = new MockLocation(1, 1, 1);
            robot.CanSeePlayer         = true;
            robot.DetectionLineOfSight = true;
            ai.PlayerLocations.Add(new PlayerLocation(DateTime.Now, player.Location, true, true));

            ai.State = RobotAiState.AlertAttack;
            Assert.False(ai.Can(RobotAiState.AlertFollowUp));

            ai.State = RobotAiState.AlertReposition;
            Assert.False(ai.Can(RobotAiState.AlertFollowUp));
        }
Esempio n. 23
0
        public void TestAlertAttackAndAlertRepositionTooFarOfPlayerCanMoveToFollowUp()
        {
            RobotAi    ai     = new MockRobotAi();
            MockPlayer player = (MockPlayer)ai.Player;
            MockRobot  robot  = (MockRobot)ai.Robot;

            player.Location            = new MockLocation(100, 100, 100);
            robot.Location             = new MockLocation(1, 1, 1);
            robot.CanSeePlayer         = true;
            robot.DetectionLineOfSight = true;
            ai.PlayerLocations.Add(new PlayerLocation(DateTime.Now, player.Location, true, true));

            ai.State = RobotAiState.AlertAttack;
            Assert.True(ai.Can(RobotAiState.AlertFollowUp));

            ai.State = RobotAiState.AlertReposition;
            Assert.True(ai.Can(RobotAiState.AlertFollowUp));
        }
Esempio n. 24
0
        public void TestSearchingLookAroundCanFollowUpPointOfInterestIfPlayerNeverSeen()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            ai.State      = RobotAiState.SearchingLookAroundPointOfInterest;
            ai.TimeMarker = DateTime.Now - TimeSpan.FromMinutes(10);
            Assert.True(ai.Can(RobotAiState.SearchingFollowUpPointOfInterest));
        }
        public void TestNoHealthMoveToDisabled()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.Health = 0;
            ai.State     = RobotAiState.Patrol;
            Assert.True(ai.Can(RobotAiState.Disabled));
        }
Esempio n. 26
0
        public void TestAlertAttackCannotMoveToAlertRepositionBeforeBursting()
        {
            RobotAi ai = new MockRobotAi();

            ai.State       = RobotAiState.AlertAttack;
            ai.BurstsFired = 0;

            Assert.False(ai.Can(RobotAiState.AlertReposition));
        }
        public void TestHeldUpSubStatesCanMoveToGetDownIfPlayingAnimation()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.PlayingAnimation     = RobotAnimation.CoweringOnGround;
            ai.HasHeldUpDemandBeenMade = false;
            ai.MarkEnemiesRequested    = ai.MarkItemsRequested = ai.GetDownRequested = true;

            ai.State = RobotAiState.HeldUpRefuse;
            Assert.True(ai.Can(RobotAiState.HeldUpGetDown));

            ai.State = RobotAiState.HeldUpDemandMarkAmmo;
            Assert.True(ai.Can(RobotAiState.HeldUpGetDown));

            ai.State = RobotAiState.HeldUpDemandMarkEnemies;
            Assert.True(ai.Can(RobotAiState.HeldUpGetDown));
        }
        public void TestHeadShotMoveToDisabled()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.Head.Shot = true;
            ai.State        = RobotAiState.Patrol;
            Assert.True(ai.Can(RobotAiState.Disabled));
        }
        public void TestHitToHurt()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.HitWithItem = true;
            robot.Health      = 100;
            ai.State          = RobotAiState.Patrol;
            Assert.True(ai.Can(RobotAiState.Hurt));
        }
Esempio n. 30
0
        public void TestPatrolReachedWalkingDestinationCanMoveToLookAround()
        {
            RobotAi   ai    = new MockRobotAi();
            MockRobot robot = (MockRobot)ai.Robot;

            robot.Location = new MockLocation(1, 1, 1);

            // Reached ending
            ai.State          = RobotAiState.PatrolMarchToEnd;
            robot.PatrolStart = new MockLocation(100, 100, 100);
            robot.PatrolEnd   = new MockLocation(1, 1, 1);
            Assert.True(ai.Can(RobotAiState.PatrolLookAround));

            // Reached beginning
            ai.State          = RobotAiState.PatrolMarchToStart;
            robot.PatrolEnd   = new MockLocation(100, 100, 100);
            robot.PatrolStart = new MockLocation(1, 1, 1);
            Assert.True(ai.Can(RobotAiState.PatrolLookAround));
        }