mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-18 14:59:29 +00:00
117 lines
3.6 KiB
JavaScript
117 lines
3.6 KiB
JavaScript
// test arithmetic functions
|
|
|
|
var assert = require('assert');
|
|
var math = require('../../math.js');
|
|
|
|
// test abs
|
|
assert.equal(math.abs(-4.2), 4.2);
|
|
assert.equal(math.abs(-3.5), 3.5);
|
|
assert.equal(math.abs(100), 100);
|
|
assert.equal(math.abs(0), 0);
|
|
assert.equal(math.abs(math.complex(3, -4)), 5);
|
|
assert.throws(function () {
|
|
math.abs(math.unit(5, 'km'));
|
|
});
|
|
assert.throws(function () {
|
|
math.abs('a string');
|
|
});
|
|
var a1 = math.abs(math.matrix([1,-2,3]));
|
|
assert.ok(a1 instanceof math.type.Matrix);
|
|
assert.deepEqual(a1.size(), [3]);
|
|
assert.deepEqual(a1.valueOf(), [1,2,3]);
|
|
a1 = math.abs(math.range(-2,2));
|
|
assert.ok(a1 instanceof Array);
|
|
assert.deepEqual(a1.length, 5);
|
|
assert.deepEqual(a1, [2,1,0,1,2]);
|
|
|
|
// test add
|
|
assert.equal(math.add(2, 3), 5);
|
|
assert.equal(math.add(-2, 3), 1);
|
|
assert.equal(math.add(2, -3), -1);
|
|
assert.equal(math.add(-5, -3), -8);
|
|
assert.equal(math.add(math.complex(3, -4), math.complex(8, 2)), '11 - 2i');
|
|
assert.equal(math.add(math.complex(3, -4), 10), '13 - 4i');
|
|
assert.equal(math.add(10, math.complex(3, -4)), '13 - 4i');
|
|
assert.equal(math.add(math.unit(5, 'km'), math.unit(100, 'mile')).toString(), '165.9344 km');
|
|
assert.throws(function () {
|
|
math.add(math.unit(5, 'km'), math.unit(100, 'gram'));
|
|
});
|
|
assert.equal(math.add('hello ', 'world'), 'hello world');
|
|
assert.equal(math.add('str', 123), 'str123');
|
|
assert.equal(math.add(123, 'str'), '123str');
|
|
|
|
var a2 = math.matrix([[1,2],[3,4]]);
|
|
var a3 = math.matrix([[5,6],[7,8]]);
|
|
var a4 = math.add(a2, a3);
|
|
assert.ok(a4 instanceof math.type.Matrix);
|
|
assert.deepEqual(a4.size(), [2,2]);
|
|
assert.deepEqual(a4.valueOf(), [[6,8],[10,12]]);
|
|
var a5 = math.pow(a2, 2);
|
|
assert.ok(a5 instanceof math.type.Matrix);
|
|
assert.deepEqual(a5.size(), [2,2]);
|
|
assert.deepEqual(a5.valueOf(), [[7,10],[15,22]]);
|
|
|
|
// TODO: test ceil
|
|
// TODO: test cube
|
|
// TODO: test divide
|
|
// TODO: test equal
|
|
// TODO: test exp
|
|
// TODO: test fix
|
|
// TODO: test floor
|
|
// TODO: test larger
|
|
// TODO: test largereq
|
|
// TODO: test log
|
|
// TODO: test log10
|
|
// TODO: test mod
|
|
|
|
|
|
// test multiply
|
|
assert.equal(math.multiply(2, 3), 6);
|
|
assert.equal(math.multiply(-2, 3), -6);
|
|
assert.equal(math.multiply(-2, -3), 6);
|
|
assert.equal(math.multiply(5, 0), 0);
|
|
assert.equal(math.multiply(0, 5), 0);
|
|
assert.equal(math.multiply(2, math.unit('5 mm')).toString(), '10 mm');
|
|
assert.equal(math.multiply(2, math.unit('5 mm')).toString(), '10 mm');
|
|
assert.equal(math.multiply(math.unit('5 mm'), 2).toString(), '10 mm');
|
|
assert.equal(math.multiply(math.unit('5 mm'), 0).toString(), '0 m');
|
|
var a = math.matrix([[1,2],[3,4]]);
|
|
var b = math.matrix([[5,6],[7,8]]);
|
|
var c = math.matrix([[5],[6]]);
|
|
var d = math.matrix([[5,6]]);
|
|
assert.deepEqual(math.multiply(a, 3).valueOf(), [[3,6],[9,12]]);
|
|
assert.deepEqual(math.multiply(3, a).valueOf(), [[3,6],[9,12]]);
|
|
assert.deepEqual(math.multiply(a, b).valueOf(), [[19,22],[43,50]]);
|
|
assert.deepEqual(math.multiply(a, c).valueOf(), [[17],[39]]);
|
|
assert.deepEqual(math.multiply(d, a).valueOf(), [[23,34]]);
|
|
assert.deepEqual(math.multiply(d, b).valueOf(), [[67,78]]);
|
|
assert.deepEqual(math.multiply(d, c).valueOf(), [[61]]);
|
|
assert.throws(function () {math.multiply(c, b)});
|
|
|
|
// TODO: test pow
|
|
// TODO: test round
|
|
// TODO: test sign
|
|
// TODO: test smaller
|
|
// TODO: test smallereq
|
|
|
|
|
|
// test sqrt
|
|
assert.equal(math.sqrt(25), 5);
|
|
assert.equal(math.sqrt(-4), '2i');
|
|
assert.equal(math.sqrt(0), '');
|
|
assert.equal(math.sqrt(math.complex(3, -4)), '2 - i');
|
|
assert.throws(function () {
|
|
math.sqrt(math.unit(5, 'km'));
|
|
});
|
|
assert.throws(function () {
|
|
math.sqrt('a string');
|
|
});
|
|
assert.deepEqual(math.sqrt([4,9,16,25]), [2,3,4,5]);
|
|
assert.deepEqual(math.sqrt([[4,9],[16,25]]), [[2,3],[4,5]]);
|
|
|
|
|
|
// TODO: test square
|
|
// TODO: test subtract
|
|
// TODO: test unaryminus
|
|
// TODO: test unequal
|