Home Reference Source Test

test/use-cases.spec.js

import expect from 'expect';
import { Matrix } from '../src/matrix';
import { vec2, vec3, Vector } from '../src/vector';

describe('some example use cases', () => {
  it('Can transform from one dimension to another', () => {
    // 3d to 2d
    let m = new Matrix(2, 3, [
      2, 0, 0,
      0, 3, 0,
    ]);
    let v = vec3(2, -2, 4);

    let t = m.dot(v);
    expect(t.length).toBe(2);
    expect(t).toEqual([4, -6]);

    // 3d to 1d
    m = new Matrix(1, 3, [2, 0, 0]);
    v = vec3(2, -2, 4);

    t = m.dot(v);
    expect(t).toEqual([4]);

    // 2d to 3d
    m = new Matrix(3, 2, [
      1, 0,
      0, 1,
      1, 1,
    ]);

    v = vec2(2, -5);

    t = m.dot(v, new Vector(3));
    expect(t.length).toBe(3);
    expect(t).toEqual([2, -5, -3]);
  });
});