Added equals.md and tests

This commit is contained in:
Angelos Chalaris
2018-01-15 18:34:11 +02:00
parent 5c75b328c1
commit c62cf0eff3
4 changed files with 59 additions and 0 deletions

13
test/equals/equals.js Normal file
View File

@ -0,0 +1,13 @@
module.exports = equals = (a, b) => {
if (a === b) return true;
if (a instanceof Date && b instanceof Date)
return a.getTime() === b.getTime();
if (!a || !b || (typeof a != 'object' && typeof b !== 'object'))
return a == b;
if (a === null || a === undefined || b === null || b === undefined)
return false;
if (a.prototype !== b.prototype) return false;
let keys = Object.keys(a);
if (keys.length !== Object.keys(b).length) return false;
return keys.every(k => equals(a[k], b[k]));
};

View File

@ -0,0 +1,18 @@
const test = require('tape');
const equals = require('./equals.js');
test('Testing equals', (t) => {
//For more information on all the methods supported by tape
//Please go to https://github.com/substack/tape
t.true(typeof equals === 'function', 'equals is a Function');
t.true(equals({ a: [2, {e: 3}], b: [4], c: 'foo' }, { a: [2, {e: 3}], b: [4], c: 'foo' }), "{ a: [2, {e: 3}], b: [4], c: 'foo' } is equal to { a: [2, {e: 3}], b: [4], c: 'foo' }");
t.true(equals([1, 2, 3], [1, 2, 3]), '[1,2,3] is equal to [1,2,3]');
t.false(equals({ a: [2, 3], b: [4] }, { a: [2, 3], b: [6] }), '{ a: [2, 3], b: [4] } is not equal to { a: [2, 3], b: [6] }');
t.false(equals([1, 2, 3], [1, 2, 4]), '[1,2,3] is not equal to [1,2,4]');
t.true(equals([1, 2, 3], { 0: 1, 1: 2, 2: 3 }), '[1, 2, 3] should be equal to { 0: 1, 1: 2, 2: 3 }) - type is different, but their enumerable properties match.')
//t.deepEqual(equals(args..), 'Expected');
//t.equal(equals(args..), 'Expected');
//t.false(equals(args..), 'Expected');
//t.throws(equals(args..), 'Expected');
t.end();
});