import { getClosestAnchor, isInNode, getCrossPointWithCircle, getCrossPointWithEllipse, } from '../../src/util/node'; describe('util/node', () => { test('get closest anchor', () => { const position = { x: 0, y: 0 }; const node = { anchors: [ { x: 0, y: 0, id: '1' }, { x: 1, y: 1, id: '2' }, { x: 2, y: 2, id: '3' }, ], }; expect(getClosestAnchor(position, node)).toEqual({ anchor: { x: 0, y: 0, id: '1' }, index: 0, }); }); test('is point inside the node', () => { const position1 = { x: 0, y: 0 }; const position2 = { x: 110, y: 110 }; const node = { x: 0, y: 0, width: 100, height: 100, }; expect(isInNode(position1, node)).toBeTruthy(); expect(isInNode(position2, node)).toBeFalsy(); }); test('get cross point with circle', () => { const position = { x: 0, y: 0 }; const node = { x: 0, y: 0, r: 10, }; expect(getCrossPointWithCircle(position, 'horizontal', node)).toEqual({ x: 10, y: 0, }); expect(getCrossPointWithCircle(position, 'vertical', node)).toEqual({ x: 0, y: 10, }); }); test('get cross point with ellipse', () => { const position = { x: 0, y: 0 }; const node = { x: 0, y: 0, rx: 10, ry: 5, }; expect(getCrossPointWithEllipse(position, 'horizontal', node)).toEqual({ x: 10, y: 0, }); expect(getCrossPointWithEllipse(position, 'vertical', node)).toEqual({ x: 0, y: 5, }); }); });