tests_image_voiLut.test.js

import {
  VoiLutLinearFunction,
  VoiLutSigmoidFunction
} from '../../src/image/voiLut.js';

/**
 * Tests for the 'image/voiLut.js' file.
 */

/* global QUnit */
QUnit.module('image');

/**
 * Tests for {@link VoiLutLinearFunction}.
 *
 * @function module:tests/image~VoiLutLinearFunction
 */
QUnit.test('VoiLutLinearFunction class', function (assert) {
  let isExact = false;

  // x range = [0,9]
  const f00 = new VoiLutLinearFunction(5, 10, isExact);
  assert.equal(f00.getY(0), 0, 'VoiLutLinearFunction #00');
  assert.equal(f00.getY(4.5), 127.5, 'VoiLutLinearFunction #01');
  assert.equal(f00.getY(9), 255, 'VoiLutLinearFunction #02');

  // x range = [0.5,8.5]
  const f10 = new VoiLutLinearFunction(5, 9, isExact);
  assert.equal(f10.getY(0.5), 0, 'VoiLutLinearFunction #10');
  assert.equal(f10.getY(4.5), 127.5, 'VoiLutLinearFunction #11');
  assert.equal(f10.getY(8.5), 255, 'VoiLutLinearFunction #12');

  // linear exact
  isExact = true;

  // x range = [0,10]
  const f20 = new VoiLutLinearFunction(5, 10, isExact);
  assert.equal(f20.getY(0), 0, 'VoiLutLinearFunction #20');
  assert.equal(f20.getY(5), 127.5, 'VoiLutLinearFunction #21');
  assert.equal(f20.getY(10), 255, 'VoiLutLinearFunction #22');

  // x range = [0.5,9.5]
  const f30 = new VoiLutLinearFunction(5, 9, isExact);
  assert.equal(f30.getY(0.5), 0, 'VoiLutLinearFunction #30');
  assert.true(Math.abs(f30.getY(5) - 127.5) < 1e-4, 'VoiLutLinearFunction #31');
  assert.true(Math.abs(f30.getY(9.5) - 255) < 1e-4, 'VoiLutLinearFunction #32');
});

/**
 * Tests for {@link VoiLutSigmoidFunction}.
 *
 * @function module:tests/image~VoiLutSigmoidFunction
 */
QUnit.test('VoiLutSigmoidFunction class', function (assert) {
  const f00 = new VoiLutSigmoidFunction(5, 10);
  assert.true(Math.abs(f00.getY(0) - 30.39) < 0.1, 'VoiLutSigmoidFunction #00');
  assert.equal(f00.getY(5), 127.5, 'VoiLutSigmoidFunction #01');
  assert.true(
    Math.abs(f00.getY(10) - 224.6) < 0.1, 'VoiLutSigmoidFunction #02');

  const f10 = new VoiLutSigmoidFunction(5, 9);
  assert.true(
    Math.abs(f10.getY(0.5) - 30.39) < 0.1, 'VoiLutSigmoidFunction #10');
  assert.equal(f10.getY(5), 127.5, 'VoiLutSigmoidFunction #11');
  assert.true(
    Math.abs(f10.getY(9.5) - 224.6) < 0.1, 'VoiLutSigmoidFunction #12');
});