tests/math/path.test.js

/**
 * Tests for the 'math/shapes.js' file.
 */
// Do not warn if these variables were not defined before.
/* global QUnit */

/**
 * Tests for {@link dwv.math.Path}.
 *
 * @function module:tests/math~Path
 */
QUnit.test('Test Path.', function (assert) {
  var path0 = new dwv.math.Path();
  // getLength
  assert.equal(path0.getLength(), 0, 'getLength');
  // add a point
  var p0 = new dwv.math.Point2D(0, 0);
  path0.addPoint(p0);
  // getLength
  assert.equal(path0.getLength(), 1, 'getLength');
  // add another point
  var p1 = new dwv.math.Point2D(-4, -4);
  path0.addPoint(p1);
  // getPoint first
  assert.equal(path0.getPoint(0), p0, 'getPoint first');
  // getPoint second
  assert.equal(path0.getPoint(1), p1, 'getPoint second');
  var p2 = new dwv.math.Point2D(1, 1);
  var p3 = new dwv.math.Point2D(1, 2);
  path0.addPoints([p2, p3]);
  assert.equal(path0.getPoint(0), p0, 'addPoints getPoint first');
  assert.equal(path0.getPoint(1), p1, 'addPoints getPoint second');
  assert.equal(path0.getPoint(2), p2, 'addPoints getPoint third');
  assert.equal(path0.getPoint(3), p3, 'addPoints getPoint fourth');

  // add first point a control point
  path0.addControlPoint(p0);
  // check if control point
  assert.equal(path0.isControlPoint(p0), 1, 'isControlPoint');
  // bad control point
  var p10 = new dwv.math.Point2D(1, 1);
  assert.throws(function () {
    path0.addControlPoint(p10);
  },
  new Error('Cannot mark a non registered point as control point.'),
  'bad control point');

  // append path
  var path1 = new dwv.math.Path();
  var p4 = new dwv.math.Point2D(1, 3);
  path1.addPoint(p4);
  path0.appenPath(path1);
  assert.equal(path0.getPoint(4), p4, 'appenPath getPoint fifth');
});