refactor: Создана функция processBrickCollision для инкапсуляции логики проверки столкновения мяча с кирпичами

This commit is contained in:
Ilia Mashkov
2026-07-19 17:41:51 +03:00
parent dccdb02f73
commit a734600390
2 changed files with 107 additions and 0 deletions
@@ -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);
});
});