js-2dmath
Version:
Fast 2d geometry math: Vector2, Rectangle, Circle, Matrix2x3 (2D transformation), Circle, BoundingBox, Line2, Segment2, Intersections, Distances, Transitions (animation/tween), Random numbers, Noise
80 lines (55 loc) • 2.19 kB
JavaScript
var tap = require("tap"),
test = tap.test,
Vec2 = require("../index.js").Vec2;
//setup
test("Vec2 init", function(t) {
var v1 = Vec2.create(10, 15),
v2 = Vec2.create(15, 10),
out = Vec2.zero();
t.equal(v1[0], 10, "t1");
t.equal(v1[1], 15, "t2");
t.equal(v2[0], 15, "t3");
t.equal(v2[1], 10, "t4");
t.equal(Vec2.equals(v1, v2), false, "t5");
t.equal(Vec2.equals(v1, v1), true, "t6");
t.equal(Vec2.equalsEpsilon(v1, v2), false, "t5-2");
t.equal(Vec2.equalsEpsilon(v1, v1), true, "t6-2");
//t.equal(Vec2.gt([10,10], [5,10]), false, "t7");
//t.equal(Vec2.gt([10,10], [10,10]), false, "t8");
//t.equal(Vec2.gt([10,10], [15,15]), true, "t9");
//
//t.equal(Vec2.lt([10,10], [5,10]), true, "t10"); // fail
//t.equal(Vec2.lt([10,10], [10,10]), false, "t11");
//t.equal(Vec2.lt([10,10], [15,15]), false, "t12");
// test: add, sub
Vec2.add(out, v1, v2);
t.equal(out[0], 25, "t12");
t.equal(out[1], 25, "t13");
Vec2.sub(out, v1, v2);
t.equal(out[0], -5, "t14");
t.equal(out[1], 5, "t15");
// test: add, sub (self)
Vec2.add(v1, v1, v2);
t.equal(v1[0], 25, "t16");
t.equal(v1[1], 25, "t17");
//reset
v1 = Vec2.create(10, 15);
Vec2.sub(v1, v1, v2);
t.equal(v1[0], -5, "t18");
t.equal(v1[1], 5, "t19");
t.equal(Vec2.near([10,10], [10,15], 6), true, "t20");
t.equal(Vec2.near([10,10], [10,15], 4), false, "t21");
t.deepEqual(Vec2.negate(v1, v1), [5, -5], "t22");
t.deepEqual(Vec2.negate([], v1), [-5, 5], "t23");
t.deepEqual(Vec2.compare([0,0], [0,0]), 0, "t24");
t.deepEqual(Vec2.compare([0,0], [0,10]), 1, "t25");
t.deepEqual(Vec2.compare([0,0], [10,10]), 2, "t26");
t.deepEqual(Vec2.compare([0,0], [10,0]), 3, "t27");
t.deepEqual(Vec2.compare([0,0], [10,-10]), 4, "t28");
t.deepEqual(Vec2.compare([0,0], [0,-10]), 5, "t29");
t.deepEqual(Vec2.compare([0,0], [-10,-10]), 6, "t30");
t.deepEqual(Vec2.compare([0,0], [-10,0]), 7, "t31");
t.deepEqual(Vec2.compare([0,0], [-10,10]), 8, "t32");
t.equal(Vec2.angle([10,10]) - Math.QUATER_PI < 0.001, true, "t33");
t.end();
});