import { getCrossPointOfLine, isInSegment } from '../../src/algorithm/edge'; describe('algorithm/edge', () => { // one intersection test('one intersection', () => { const line1 = [ { x: 0, y: 0, }, { x: 10, y: 10, }, ]; const line2 = [ { x: 10, y: 0, }, { x: 0, y: 10, }, ]; expect( getCrossPointOfLine(line1[0], line1[1], line2[0], line2[1]), ).toBeTruthy(); }); // multiple intersection test('multiple intersection', () => { const line1 = [ { x: 0, y: 0, }, { x: 10, y: 10, }, ]; const line2 = [ { x: 0, y: 0, }, { x: 10, y: 10, }, ]; expect( getCrossPointOfLine(line1[0], line1[1], line2[0], line2[1]), ).toBeFalsy(); }); // no intersection test('intersection', () => { const line1 = [ { x: 0, y: 0, }, { x: 10, y: 10, }, ]; const line2 = [ { x: 10, y: 0, }, { x: 20, y: 10, }, ]; expect( getCrossPointOfLine(line1[0], line1[1], line2[0], line2[1]), ).toBeFalsy(); }); test('in segment', () => { const point = { x: 0, y: 0, }; const line = [ { x: -10, y: -10, }, { x: 10, y: 10, }, ]; expect(isInSegment(point, line[0], line[1])).toBeTruthy(); }); // not in segment test('not in segment', () => { const point = { x: 10, y: 0, }; const line = [ { x: -10, y: -10, }, { x: 10, y: 10, }, ]; expect(isInSegment(point, line[0], line[1])).toBeFalsy(); }); });