planck-js
Version:
2D physics engine for JavaScript/HTML5 game development
129 lines (99 loc) • 2.52 kB
JavaScript
var expect = require('./testutil/expect');
var sinon = require('sinon');
var Math = require('../lib/common/Math');
var Vec2 = require('../lib/common/Vec2');
var Vec3 = require('../lib/common/Vec2');
describe('Math', function() {
it('Math', function() {
expect(Math.isFinite(+'NaN')).be(false);
expect(Math.isFinite(Infinity)).be(false);
expect(Math.isFinite('0')).be(false);
expect(Math.isFinite('')).be(false);
expect(Math.isFinite(1)).be(true);
expect(Math.isFinite(0)).be(true);
expect(Math.isFinite(-1)).be(true);
// InvSqrt
// NextPowerOfTwo
// IsPowerOfTwo
// Clamp
// EPSILON
});
it('Vec2', function() {
var r, v = new Vec2();
expect(v.x).be(0);
expect(v.y).be(0);
v.Set(3, 4);
expect(v.x).be(3);
expect(v.y).be(4);
expect(v.Length()).be(5);
expect(v.LengthSquared()).be(25);
v.Normalize(3, 4);
expect(v.x).near(3 / 5);
expect(v.y).near(4 / 5);
v.SetZero();
expect(v.x).be(0);
expect(v.y).be(0);
v.Add(new Vec2(3, 2));
expect(v.x).be(3);
expect(v.y).be(2);
v.Sub(new Vec2(2, 1));
expect(v.x).be(1);
expect(v.y).be(1);
v.Mul(5);
expect(v.x).be(5);
expect(v.y).be(5);
v.Set(2, 3);
expect(v.x).be(2);
expect(v.y).be(3);
r = Vec2.Skew(v);
expect(r.x).be(-3);
expect(r.y).be(2);
r = Vec2.Dot(v, new Vec2(2, 3));
expect(r).be(13);
r = Vec2.Cross(v, new Vec2(2, 3));
expect(r).be(0);
r = Vec2.Cross(v, 5);
expect(r.x).be(15);
expect(r.y).be(-10);
r = Vec2.Clamp(Vec2(6, 8), 5);
expect(r.x).near(3);
expect(r.y).near(4);
});
it('Vec3', function() {
return;
var r, v = Vec3();
expect(v.x).be(0);
expect(v.y).be(0);
expect(v.z).be(0);
v = Vec3(3, 4, 5);
expect(v.x).be(3);
expect(v.y).be(4);
expect(v.z).be(5);
v.SetZero();
expect(v.x).be(0);
expect(v.y).be(0);
expect(v.z).be(0);
v.Add(Vec3(3, 2, 1));
expect(v.x).be(3);
expect(v.y).be(2);
expect(v.z).be(1);
v.Sub(Vec3(0, 1, 2));
expect(v.x).be(3);
expect(v.y).be(1);
expect(v.z).be(-1);
v.Mul(5);
expect(v.x).be(15);
expect(v.y).be(5);
expect(v.z).be(-5);
v.Set(2, 3, 4);
expect(v.x).be(2);
expect(v.y).be(3);
expect(v.z).be(4);
r = Vec3.Dot(v, Vec3(2, 0, -1));
expect(r).be(0);
r = Vec3.Cross(v, Vec3(2, 0, -1));
expect(r.x).be(-3);
expect(r.y).be(10);
expect(r.z).be(-6);
});
});