public void PredictableMonster_GoThroughWalls_MonsterCantGoThroughWalls(string testMap)
        {
            Game.CreateMap(testMap);
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = MonsterThinkingTime * 2 + TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[1, 1].Length.Should().Be(1);
            Game.Map[1, 1].First().Should().BeAssignableTo <PredictableRobot>();
        }
        public void BreakableWall_ConflictedObjectFire_BreakableWallBroke()
        {
            var testMap = @"
####
#W #
####";

            Game.CreateMap(testMap);
            Game.Map[2, 1] = new ICreature[] { new Fire(1, Direction.Left) };
            var gameState = new GameState();

            gameState.BeginAct();
            gameState.EndAct();

            Game.Map[1, 1].Should().BeEmpty();
        }
Exemplo n.º 3
0
        public void Player_GetImageFileNameTurnedPlayer_CorrectImageName()
        {
            var testMap = @"
####
# P#
####";

            Game.CreateMap(testMap);
            var gameState = new GameState();

            Game.KeyPressed = Keys.Left;
            gameState.BeginAct();
            gameState.EndAct();

            Game.Map[1, 1].First().GetImageFileName().Should().Be("running-left.png");
        }
Exemplo n.º 4
0
        public void Fire_ConflictedObjectUnbreakableWall_FireDied()
        {
            var testMap = @"
####
#  #
####";

            Game.CreateMap(testMap);
            Game.Map[2, 1] = new ICreature[] { new Fire(1, Direction.Right) };
            var gameState = new GameState();

            gameState.BeginAct();
            gameState.EndAct();

            Game.Map[2, 2].Length.Should().Be(1);
            Game.Map[2, 2].Should().ContainItemsAssignableTo <UnbreakableWall>();
        }
Exemplo n.º 5
0
        public void Fire_FireFlyByDirection_FlyCorrectly(string testMap, int x, int y, Direction direction,
                                                         int expX, int expY)
        {
            Game.CreateMap(testMap);
            Game.Map[x, y] = new ICreature[] { new Fire(1, direction) };
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[expX, expY].Length.Should().Be(1);
            Game.Map[expX, expY].Should().ContainItemsAssignableTo <Fire>();
        }
        public void PredictableMonster_MonsterCanMove_MonsterPredictablyMoved(string testMap, int xWas, int yWas,
                                                                              int x, int y)
        {
            Game.CreateMap(testMap);
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = MonsterThinkingTime + TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[xWas, yWas].Should().BeEmpty();
            Game.Map[x, y].Length.Should().Be(1);
            Game.Map[x, y].First().Should().BeAssignableTo <PredictableRobot>();
        }
Exemplo n.º 7
0
        public void Player_SetBomb_BombAndPlayerInTheSameCell()
        {
            var testMap = @"
######
#  P #
######";

            Game.CreateMap(testMap);
            var gameState = new GameState();

            Game.KeyPressed = Keys.Space;
            gameState.BeginAct();
            gameState.EndAct();

            Game.Map[3, 1].Length.Should().Be(2);
            Game.Map[3, 1].Select(n => n.GetType().Name).Should().Contain("Bomb");
            Game.Map[3, 1].Select(n => n.GetType().Name).Should().Contain("Player");
        }
Exemplo n.º 8
0
        public void Fire_NowhereFly_FireDisappear()
        {
            var testMap = @"
###
# #
###";

            Game.CreateMap(testMap);
            Game.Map[1, 1] = new ICreature[] { new Fire(1, Direction.Down) };
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[1, 1].Should().BeEmpty();
        }
Exemplo n.º 9
0
        public void Player_TestPlayerMoves(IEnumerable <Keys> keys, int expX, int expY)
        {
            var testMap = @"
##########
#        #
#    P   #
#        #
##########";

            Game.CreateMap(testMap);
            var gameState = new GameState();

            foreach (var key in keys)
            {
                Game.KeyPressed = key;
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[expX, expY].Length.Should().Be(1);
            Game.Map[expX, expY].First().Should().BeAssignableTo <Player>();
        }
Exemplo n.º 10
0
        public void Player_ConflictedObjectsMonster_PlayerDied()
        {
            var testMap = @"
######
#MP  #
######";

            Game.CreateMap(testMap);
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap + MonsterThinkingTime;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[2, 1].Length.Should().Be(1);
            Game.Map[2, 1].Select(c => c.GetType().Name).Should().NotContain("Player");
            Game.Map[2, 1].Should().ContainItemsAssignableTo <PredictableRobot>();
        }
        public void PredictableMonster_ConflictedObjectFire_MonsterDied()
        {
            var testMap = @"
#####
# M #
#####";

            Game.CreateMap(testMap);
            Game.Map[1, 1] = new ICreature[] { new Fire(1, Direction.Right) };
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[1, 1].Should().BeEmpty();
            Game.Map[2, 1].Should().BeEmpty();
            Game.Map[3, 1].Should().BeEmpty();
        }
Exemplo n.º 12
0
        public void Player_CantWalkThroughWalls(IEnumerable <Keys> keys, int expX, int expY,
                                                int expWallX, int expWallY, Type wallType)
        {
            var testMap = @"
#####
#P W#
#####";

            Game.CreateMap(testMap);
            var gameState = new GameState();

            foreach (var key in keys)
            {
                Game.KeyPressed = key;
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[expWallX, expWallY].Length.Should().Be(1);
            Game.Map[expX, expY].Length.Should().Be(1);
            Game.Map[expX, expY].First().Should().BeAssignableTo <Player>();
            Game.Map[expWallX, expWallY].First().Should().BeAssignableTo(wallType);
        }
Exemplo n.º 13
0
        public void Player_PlayerStayOnBomb_PlayerDied()
        {
            var testMap = @"
#####
# P #
#####";

            Game.CreateMap(testMap);
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap + SecondsBeforeExplosion;

            Game.KeyPressed = Keys.Space;
            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[2, 1].Length.Should().Be(4);
            Game.Map[2, 1].Should().ContainItemsAssignableTo <Fire>();
            Game.Map[2, 1].Should().NotContain(new Player());
        }
Exemplo n.º 14
0
        public void Player_ConflictedObjectFire_PlayerDied()
        {
            var testMap = @"
#####
# P #
#####";

            Game.CreateMap(testMap);
            var player = new Player();

            Game.Map[3, 1] = new ICreature[] { new Fire(1, Direction.Left) };
            var gameState = new GameState();
            var timer     = Stopwatch.StartNew();
            var testTime  = TimeGap;

            while (timer.Elapsed <= TimeSpan.FromSeconds(testTime))
            {
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[2, 1].Should().BeEmpty();
            Game.Map[2, 1].Should().NotContain(player);
        }
Exemplo n.º 15
0
        public void Player_TryOverstepBombsLimit_TryFail()
        {
            var testMap = @"
######
#  P #
######";

            Game.CreateMap(testMap);
            var gameState = new GameState();

            var keys = new[] { Keys.Space, Keys.Left, Keys.Space };

            foreach (var key in keys)
            {
                Game.KeyPressed = key;
                gameState.BeginAct();
                gameState.EndAct();
            }

            Game.Map[3, 1].Length.Should().Be(1);
            Game.Map[3, 1].First().Should().BeAssignableTo <Bomb>();
            Game.Map[2, 1].Length.Should().NotBe(2);
            Game.Map[2, 1].Should().ContainItemsAssignableTo <Player>();
        }