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);
  });
});
