UNPKG

cloudboost-tv

Version:

Database Service that does Storage, Search, Real-time and a whole lot more.

75 lines (64 loc) 2.13 kB
/*! * Should * Copyright(c) 2010-2014 TJ Holowaychuk <tj@vision-media.ca> * MIT Licensed */ var eql = require('should-equal'); var type = require('should-type'); var util = require('../util'); function formatEqlResult(r, a, b, format) { return ((r.path.length > 0 ? 'at ' + r.path.map(util.formatProp).join(' -> ') : '') + (r.a === a ? '' : ', A has ' + format(r.a)) + (r.b === b ? '' : ' and B has ' + format(r.b)) + (r.showReason ? ' because ' + r.reason: '')).trim(); } module.exports = function(should, Assertion) { /** * Deep object equality comparison. For full spec see [`should-equal tests`](https://github.com/shouldjs/equal/blob/master/test.js). * * @name eql * @memberOf Assertion * @category assertion equality * @param {*} val Expected value * @param {string} [description] Optional message * @example * * (10).should.be.eql(10); * ('10').should.not.be.eql(10); * (-0).should.not.be.eql(+0); * * NaN.should.be.eql(NaN); * * ({ a: 10}).should.be.eql({ a: 10 }); * [ 'a' ].should.not.be.eql({ '0': 'a' }); */ Assertion.add('eql', function(val, description) { this.params = {operator: 'to equal', expected: val, message: description}; var strictResult = eql(this.obj, val, should.config); this.params.details = strictResult.result ? '': formatEqlResult(strictResult, this.obj, val, should.format); this.params.showDiff = type(this.obj) == type(val); this.assert(strictResult.result); }); /** * Exact comparison using ===. * * @name equal * @memberOf Assertion * @category assertion equality * @alias Assertion#exactly * @param {*} val Expected value * @param {string} [description] Optional message * @example * * 10.should.be.equal(10); * 'a'.should.be.exactly('a'); * * should(null).be.exactly(null); */ Assertion.add('equal', function(val, description) { this.params = {operator: 'to be', expected: val, message: description}; this.params.showDiff = type(this.obj) == type(val); this.assert(val === this.obj); }); Assertion.alias('equal', 'exactly'); };