deepequal
Version:
Deep comparison of two variables
122 lines (92 loc) • 3.54 kB
JavaScript
var deepEqual = require('..')
, should = require('should')
;
describe('deepequal', function () {
it('should pass all `deep-equal` tests', function () {
deepEqual(
{ a : [ 2, 3 ], b : [ 4 ] },
{ a : [ 2, 3 ], b : [ 4 ] }
).should.be.true;
deepEqual(
{ x : 5, y : [6] },
{ x : 5, y : 6 }
).should.be.false;
deepEqual(
[ null, null, null ],
[ null, null, null ]
).should.be.true;
deepEqual(
[ { a: 3 }, { b: 4 } ],
[ { a: '3' }, { b: '4' } ],
true
).should.be.false;
deepEqual(3, 3).should.be.true;
deepEqual('beep', 'beep').should.be.true;
deepEqual('3', 3).should.be.true;
deepEqual('3', 3, true).should.be.false;
deepEqual('3', [3]).should.be.false;
deepEqual(
(function(){return arguments})(1,2,3),
(function(){return arguments})(1,2,3)
).should.be.true;
deepEqual(
(function(){return arguments})(1,2,3),
[1,2,3]
).should.be.false;
deepEqual(
[1,2,3],
(function(){return arguments})(1,2,3)
).should.be.false;
var d0 = new Date(1387585278000);
var d1 = new Date('Fri Dec 20 2013 16:21:18 GMT-0800 (PST)');
deepEqual(d0, d1).should.be.true;
});
it('should return true for NaN', function () {
deepEqual(NaN, NaN).should.be.true;
deepEqual({ a: NaN }, { a: NaN }).should.be.true;
deepEqual(123, NaN).should.be.false;
deepEqual(NaN, 'abc').should.be.false;
deepEqual('abc', NaN).should.be.false;
});
it('should compare buffers', function () {
var b1 = new Buffer('foobar')
, b2 = new Buffer('foobar')
, b3 = new Buffer('foobaz')
;
deepEqual(b1, b2).should.be.true;
deepEqual(b1, b3).should.be.false;
deepEqual(b1, 'foobar').should.be.false;
deepEqual('foobar', b1).should.be.false;
});
it('should inspect all values of an array', function () {
var a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
, b = a.slice()
, c = a .slice()
;
c[7] = 3;
deepEqual(a, b).should.be.true;
deepEqual(a, c).should.be.false;
deepEqual('abc', a).should.be.false;
});
it('should compare regular expressions', function () {
var a = /abc/gi
, b = new RegExp('abc', 'gi')
, c = /abc/gim
, d = /def/gi
, e = /abc/gi
;
e.test('foo abc bar');
deepEqual(a, b).should.be.true;
deepEqual(a, c).should.be.false;
deepEqual(a, d).should.be.false;
deepEqual(a, e).should.be.false;
});
it('should compare null and undefined', function () {
deepEqual(null, null).should.be.true;
deepEqual(undefined, undefined).should.be.true;
deepEqual(null, undefined).should.be.false;
deepEqual(null, false).should.be.false;
deepEqual({ a: 1 }, null).should.be.false;
deepEqual({ a: 1 }, undefined).should.be.false;
});
});