Beispiel #1
0
        public async Task GhostMovesRandomlyWhileFrightened()
        {
            var testDirectionPicker = new TestDirectionPicker();

            testDirectionPicker.DefaultDirection = Direction.Up;
            var allDirections = new[] { Direction.Down, Direction.Up, Direction.Right };

            testDirectionPicker.Returns(allDirections, Direction.Right);

            _gameSettings.DirectionPicker = testDirectionPicker;
            var ghostStart1 = _gameSettings.PacMan.Location.FarAway();
            var ghost1      = GhostBuilder.New()
                              .WithLocation(ghostStart1)
                              .Create();

            _gameSettings.Ghosts.Add(ghost1);

            _gameSettings.PowerPills.Add(_gameSettings.PacMan.Location.Left);

            var game = new Game(_gameClock, _gameSettings);

            game.StartGame();

            // PacMan Eat Pill
            await game.ChangeDirection(Direction.Left);

            await _gameClock.Tick();

            await _gameClock.Tick();

            await _gameClock.Tick();

            await _gameClock.Tick();

            await _gameClock.Tick();

            using var _ = new AssertionScope();
            game.Ghosts[ghost1.Name].Should().BeEquivalentTo(new
            {
                Location = ghostStart1.Right.Right
            });
        }