mathjs/test/function/utils/isPrime.test.js
2016-07-21 20:24:59 -04:00

50 lines
2.0 KiB
JavaScript

var assert = require('assert');
var math = require('../../../index');
var isPrime = math.isPrime;
var bignumber = math.bignumber;
var complex = math.complex;
describe('isPrime', function() {
it('should test whether a number is prime', function() {
assert.strictEqual(isPrime(0), false);
assert.strictEqual(isPrime(-0), false);
assert.strictEqual(isPrime(-1), false);
assert.strictEqual(isPrime(1), false);
assert.strictEqual(isPrime(2), true);
assert.strictEqual(isPrime(3), true);
assert.strictEqual(isPrime(5), true);
assert.strictEqual(isPrime(7), true);
assert.strictEqual(isPrime(4), false);
assert.strictEqual(isPrime(100), false);
assert.strictEqual(isPrime(102), false);
assert.strictEqual(isPrime(999), false);
});
it('should test whether a BigNumber is prime', function() {
assert.strictEqual(isPrime(bignumber(0)), false);
assert.strictEqual(isPrime(bignumber(-0)), false);
assert.strictEqual(isPrime(bignumber(-1)), false);
assert.strictEqual(isPrime(bignumber(1)), false);
assert.strictEqual(isPrime(bignumber(2)), true);
assert.strictEqual(isPrime(bignumber(3)), true);
assert.strictEqual(isPrime(bignumber(5)), true);
assert.strictEqual(isPrime(bignumber(7)), true);
assert.strictEqual(isPrime(bignumber(4)), false);
assert.strictEqual(isPrime(bignumber(100)), false);
assert.strictEqual(isPrime(bignumber(102)), false);
assert.strictEqual(isPrime(bignumber(999)), false);
});
it('should test isPrime element wise on an Array', function() {
assert.deepEqual(isPrime([0, 1, 2, 5, 9]), [false, false, true, true, false]);
});
it('should throw an error in case of unsupported data types', function() {
assert.throws(function () {isPrime(complex(2, 3))}, /TypeError: Unexpected type of argument/);
assert.throws(function () {isPrime(new Date())}, /TypeError: Unexpected type of argument/);
assert.throws(function () {isPrime({})}, /TypeError: Unexpected type of argument/);
});
});