34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
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);
|
||
|
|
});
|
||
|
|
});
|