refactor: Создана функция processBrickCollision для инкапсуляции логики проверки столкновения мяча с кирпичами
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { Game } from '../../game';
|
||||
import { processBrickCollision } from './processBrickCollision';
|
||||
|
||||
describe('processBrickCollision', () => {
|
||||
it('Возвращает корректное значение при неверных типах аргументов', () => {
|
||||
const game = new Game([[[1]]]);
|
||||
|
||||
expect(processBrickCollision(null, game.ball)).toBeNull();
|
||||
expect(processBrickCollision(game, null)).toBeNull();
|
||||
});
|
||||
|
||||
it('Возвращает креектное значение если мяч не касается кирпичей', () => {
|
||||
const game = new Game([[[1]]]);
|
||||
game.ball.x = 5;
|
||||
game.ball.y = 500;
|
||||
|
||||
expect(processBrickCollision(game, game.ball)).toBe(false);
|
||||
});
|
||||
|
||||
it('При столкновении разрушает кирпич и меняет направление мяча', () => {
|
||||
const game = new Game([[[1]]]);
|
||||
const brick = game.bricks[0];
|
||||
game.ball.x = brick.x + game.ball.radius + 1;
|
||||
game.ball.y = brick.y + brick.height + game.ball.radius + 1;
|
||||
game.ball.horizontalSpeed = 0;
|
||||
game.ball.verticalSpeed = -10;
|
||||
game.ball.moveForward(1);
|
||||
|
||||
expect(processBrickCollision(game, game.ball)).toBe(true);
|
||||
expect(brick.alive).toBe(false);
|
||||
expect(game.ball.verticalSpeed).toBe(10);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user