@logicflow/core
Version:
LogicFlow, help you quickly create flowcharts
42 lines (40 loc) • 1.39 kB
text/typescript
import { Matrix } from '../../src/util/matrix'
describe('util/matrix', () => {
test('construct', () => {
const m = new Matrix([1, 2, 3], [4, 5, 6], [7, 8, 9])
expect(m[0]).toEqual([1, 2, 3])
expect(m[1]).toEqual([4, 5, 6])
expect(m[2]).toEqual([7, 8, 9])
})
test('cross', () => {
const m = new Matrix([1, 2, 3], [4, 5, 6], [7, 8, 9])
const n = new Matrix([9, 8, 7], [6, 5, 4], [3, 2, 1])
expect(m.cross(n)).toEqual(
new Matrix([30, 24, 18], [84, 69, 54], [138, 114, 90]),
)
})
test('transpose', () => {
const m = new Matrix([1, 2, 3], [4, 5, 6], [7, 8, 9])
expect(m.transpose()).toEqual(new Matrix([1, 4, 7], [2, 5, 8], [3, 6, 9]))
})
test('translate', () => {
const m = new Matrix([1, 0, 0], [0, 1, 0], [0, 0, 1])
expect(m.translate(2, 3)).toEqual(
new Matrix([1, 0, 0], [0, 1, 0], [2, 3, 1]),
)
})
test('rotate', () => {
const m = new Matrix([1, 0, 0], [0, 1, 0], [0, 0, 1])
expect(m.rotate(Math.PI / 2)).toEqual(
new Matrix([0, 1, 0], [-1, 0, 0], [0, 0, 1]),
)
})
test('scale', () => {
const m = new Matrix([1, 0, 0], [0, 1, 0], [0, 0, 1])
expect(m.scale(2, 3)).toEqual(new Matrix([2, 0, 0], [0, 3, 0], [0, 0, 1]))
})
test('toString', () => {
const m = new Matrix([1, 0, 0], [0, 1, 0], [1, 1, 1])
expect(m.toString()).toEqual('matrix(1 0 0 1 1 1)')
})
})