Skip to content
32 linesCodeBlameRaw
1const assert = require("node:assert");
2const math = require("./math");
3assert.strictEqual(math.subtract(5, 3), 2);
4
5assert.strictEqual(math.add(2, 3), 5);
6assert.strictEqual(math.multiply(4, 5), 20);
7assert.strictEqual(math.divide(10, 4), 2.5);
8assert.throws(() => math.divide(1, 0), RangeError);
9assert.strictEqual(math.mod(7, 3), 1);
10assert.strictEqual(math.mod(-1, 3), 2);
11assert.strictEqual(math.mod(6, 3), 0);
12assert.strictEqual(math.mod(-1, -3), 2);
13assert.throws(() => math.mod(1, 0), RangeError);
14assert.strictEqual(math.power(2, 10), 1024);
15assert.strictEqual(math.power(5, 0), 1);
16assert.throws(() => math.power(2, -1), RangeError);
17assert.strictEqual(math.mean([1, 2, 3]), 2);
18assert.strictEqual(math.mean([1, 2, 3, 4]), 2.5);
19assert.strictEqual(math.median([1, 2, 3]), 2);
20assert.strictEqual(math.median([3, 1, 2]), 2);
21assert.strictEqual(math.median([4, 1, 3, 2]), 2.5);
22assert.strictEqual(math.standard_deviation([1, 2, 3]), Math.sqrt(2 / 3));
23assert.strictEqual(math.standard_deviation([2, 4, 4, 4, 5, 5, 7, 9]), 2);
24for (const fn of [math.mean, math.median, math.standard_deviation]) {
25 assert.throws(() => fn([]), TypeError);
26}
27assert.strictEqual(math.clamp(5, 0, 10), 5);
28assert.strictEqual(math.clamp(-5, 0, 10), 0);
29assert.strictEqual(math.clamp(15, 0, 10), 10);
30assert.strictEqual(math.clamp(3, 3, 3), 3);
31assert.throws(() => math.clamp(1, 10, 0), RangeError);
32console.log("all tests passed");