import { Ball } from '../../entities/ball/ball'; import { processBall } from './processBall'; describe('processBall', () => { it('Возвращает null при неверных типах аргументов', () => { const ball = new Ball(100, 100, 10, 3); expect(processBall(null, 800, 600)).toBeNull(); expect(processBall(ball, '800', 600)).toBeNull(); expect(processBall(ball, -1, 600)).toBeNull(); expect(processBall(ball, 800, -1)).toBeNull(); }); it('Возвращает false, если мяч не касается стен', () => { const ball = new Ball(400, 300, 10, 3); expect(processBall(ball, 800, 600)).toBe(false); }); it('Отражает мяч от боковой стены и возвращает true', () => { const ball = new Ball(10, 300, 10, 3); ball.horizontalSpeed = -10; expect(processBall(ball, 800, 600)).toBe(true); expect(ball.x).toBe(ball.radius); expect(ball.horizontalSpeed).toBe(10); }); it('Отражает мяч от верхней стены и возвращает true', () => { const ball = new Ball(400, 10, 10, 3); ball.horizontalSpeed = 0; ball.verticalSpeed = -10; expect(processBall(ball, 800, 600)).toBe(true); expect(ball.y).toBe(ball.radius); expect(ball.verticalSpeed).toBe(10); }); it('Помечает мяч вышедшим за нижнюю границу', () => { const ball = new Ball(400, 595, 10, 3); expect(processBall(ball, 800, 600)).toBe(true); expect(ball.status).toBe('out'); }); });