UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

61 lines (51 loc) 2.23 kB
const test = require('ava') const { bezier } = require('../index') test('Linear bezier (straight line between two points)', (t) => { const straightLine = bezier.create([10, 20]) t.deepEqual(straightLine.points, [10, 20]) t.is(straightLine.pointType, 'float_single') t.deepEqual(straightLine.permutations, [1, 1]) t.deepEqual(straightLine.tangentPermutations, [1]) t.is(straightLine.dimensions, 0) }) test('bezier with non-numbers throws error', (t) => { t.throws(() => bezier.create(['what', 20]), { instanceOf: Error }) }) test('quadratic bezier (3 control points)', (t) => { const OneDCurve = bezier.create([0, 10, 20]) t.deepEqual(OneDCurve.points, [0, 10, 20]) t.is(OneDCurve.pointType, 'float_single') t.deepEqual(OneDCurve.permutations, [1, 2, 1]) t.deepEqual(OneDCurve.tangentPermutations, [1, 1]) t.is(OneDCurve.dimensions, 0) }) test('quadratic bezier (4 control points)', (t) => { const OneDCurve = bezier.create([0, 0, 20, 20]) t.deepEqual(OneDCurve.points, [0, 0, 20, 20]) t.is(OneDCurve.pointType, 'float_single') t.deepEqual(OneDCurve.permutations, [1, 3, 3, 1]) t.deepEqual(OneDCurve.tangentPermutations, [1, 2, 1]) t.is(OneDCurve.dimensions, 0) }) test('bezier with numbers and array of numbers throws error', (t) => { t.throws(() => bezier.create([[0, 5, 10], 20]), { instanceOf: Error }) }) test('bezier with array of numbers of different size throws error', (t) => { t.throws(() => bezier.create([[0, 5, 10], [20, 0]]), { instanceOf: Error }) }) test('quadratic bezier one dimension, 3 control points', (t) => { const OneDCurve = bezier.create([[0], [10], [20]]) t.deepEqual(OneDCurve.points, [[0], [10], [20]]) t.is(OneDCurve.pointType, 'float_1') t.deepEqual(OneDCurve.permutations, [1, 2, 1]) t.deepEqual(OneDCurve.tangentPermutations, [1, 1]) t.is(OneDCurve.dimensions, 1) }) test('quadratic bezier 2 dimensions, 3 control points', (t) => { const TwoDCurve = bezier.create([[0, 10], [30, 10], [60, 20]]) t.deepEqual(TwoDCurve.points, [[0, 10], [30, 10], [60, 20]]) t.is(TwoDCurve.pointType, 'float_2') t.deepEqual(TwoDCurve.permutations, [1, 2, 1]) t.deepEqual(TwoDCurve.tangentPermutations, [1, 1]) t.is(TwoDCurve.dimensions, 2) })