import assert from 'node:assert'; import { Vec2 } from '../src/2d.js'; describe('Vec2', function () { it('construct', function() { let p = new Vec2(1, 2); assert.equal(p.x, 1); assert.equal(p.y, 2); }); it('equal', function() { assert.ok((new Vec2(1, 2)).equal(new Vec2(1, 2))); assert.ok(!(new Vec2(1, 2)).equal(new Vec2(1, 12))); }); it('vector calculation', function() { let p = new Vec2(2, 4), q = new Vec2(3, 1); assert.ok(p.add(q).equal(new Vec2(5, 5))); assert.ok(p.sub(q).equal(new Vec2(-1, 3))); assert.ok(p.mul(1.5).equal(new Vec2(3, 6))); assert.ok(p.yx().equal(new Vec2(4, 2))); }); it('vector calculation(TO)', function () { let p = new Vec2(2, 4), q = new Vec2(3, 1); p.addTo(q); assert.ok(p.equal(new Vec2(5, 5))); p.subTo(q); assert.ok(p.equal(new Vec2(2, 4))); p.mulTo(1.5); assert.ok(p.equal(new Vec2(3, 6))); }); it('abs & norm', function() { let p = new Vec2(3, 4); assert.equal(p.abs(), 5); assert.equal(p.norm(), 25); }); it('complex calculation', function() { let p = new Vec2(1, 4), q = new Vec2(0, 1); assert.ok(p.complexMul(q).equal(new Vec2(-4, 1))); assert.ok(p.complexDiv(q).equal(new Vec2(4, -1))); assert.equal(q.arg(), Math.PI / 2); }); it('dot & cross product', function() { let p = new Vec2(2, 4), q = new Vec2(3, 1); assert.equal(p.dot(q), 10); assert.equal(p.cross(q), -10); }); });