deep-close-to
Version:
out of the box assert.deepCloseTo with configurable comparator
123 lines (106 loc) • 2.79 kB
JavaScript
var test = require('tape');
var equal = require('../');
var isArguments = require('../lib/is_arguments.js');
var objectKeys = require('../lib/keys.js');
test('equal', function (t) {
t.ok(equal(
{a: [2, 3], b: [4]},
{a: [2, 3], b: [4]}
));
t.end();
});
test('not equal', function (t) {
t.notOk(equal(
{x: 5, y: [6]},
{x: 5, y: 6}
));
t.end();
});
test('nested nulls', function (t) {
t.ok(equal([null, null, null], [null, null, null]));
t.end();
});
test('strict equal', function (t) {
t.notOk(equal(
[{a: 3}, {b: 4}],
[{a: '3'}, {b: '4'}],
{strict: true}
));
t.end();
});
test('non-objects', function (t) {
t.ok(equal(3, 3));
t.ok(equal('beep', 'beep'));
t.ok(equal('3', 3));
t.notOk(equal('3', 3, {strict: true}));
t.notOk(equal('3', [3]));
t.end();
});
test('arguments class', function (t) {
t.ok(equal(
(function () {
return arguments
})(1, 2, 3),
(function () {
return arguments
})(1, 2, 3),
"compares arguments"
));
t.notOk(equal(
(function () {
return arguments
})(1, 2, 3),
[1, 2, 3],
"differenciates array and arguments"
));
t.end();
});
test('test the arguments shim', function (t) {
t.ok(isArguments.supported((function () {
return arguments
})()));
t.notOk(isArguments.supported([1, 2, 3]));
t.ok(isArguments.unsupported((function () {
return arguments
})()));
t.notOk(isArguments.unsupported([1, 2, 3]));
t.end();
});
test('test the keys shim', function (t) {
t.deepEqual(objectKeys.shim({a: 1, b: 2}), ['a', 'b']);
t.end();
});
test('dates', function (t) {
var d0 = new Date(1387585278000);
var d1 = new Date('Fri Dec 20 2013 16:21:18 GMT-0800 (PST)');
t.ok(equal(d0, d1));
t.end();
});
test('buffers', function (t) {
t.ok(equal(Buffer('xyz'), Buffer('xyz')));
t.end();
});
test('booleans and arrays', function (t) {
t.notOk(equal(true, []));
t.end();
});
test('null == undefined', function (t) {
t.ok(equal(null, undefined));
t.notOk(equal(null, undefined, {strict: true}));
t.end()
});
test('float values', function (t) {
t.ok(equal(1.000000000001, 1));
t.ok(equal({a: 1.000000000001}, {a: 1}));
t.ok(equal([1.000000000001], [1]));
t.ok(equal({a: 1.000000000001, b:{c:0.52}}, {a: 1, b:{c:0.52000001}}));
t.end();
});
function closeTo(delta, actual, expected) {
return Math.abs(actual - expected) < delta;
}
test('tolerances', function (t) {
t.ok(equal(1.0001, 1, {comp: closeTo.bind(null, 0.0001)}));
t.notOk(equal(1.0001, 1, {comp: closeTo.bind(null, 0.00001)}));
t.end();
});