import { Ball } from '../ball';
import { clone } from './clone';

describe('clone', () => {
  it('Возвращает корректное значение при неверных типах аргументов', () => {
    expect(clone(null, 20)).toBeNull();
    expect(clone(new Ball(0, 0, 10, 3), '20')).toBeNull();
  });

  it('Клонирует мяч и задает корректное значение скоростей по осям X и Y', () => {
    const ball = new Ball(100, 200, 10, 90);
    ball.status = 'moving';
    ball.horizontalSpeed = 3;
    ball.verticalSpeed = 4;

    const clonedBall = clone(ball, 90);

    expect(clonedBall).toBeInstanceOf(Ball);
    expect(clonedBall).not.toEqual(ball);
    expect(clonedBall.x).toBe(100);
    expect(clonedBall.y).toBe(200);
    expect(clonedBall.status).toBe('moving');
    expect(clonedBall.horizontalSpeed).toBeCloseTo(-4);
    expect(clonedBall.verticalSpeed).toBeCloseTo(3);
  });
});
