aa9886e7755f33e202d32afc6af4c69f961917f9.svn-base
792 Bytes
const Same = require('./same.js')
const Format = require('./format.js')
class Strict extends Same {
test () {
const a = this.object
const b = this.expect
const st = super.test()
return (
st === false ? false
: a === b ? true
: a !== a ? b !== b
: typeof a !== 'object' || typeof b !== 'object' ? false
: Buffer.isBuffer(a) && Buffer.isBuffer(b) ? st
: a instanceof Date && b instanceof Date ? st
: a instanceof RegExp && b instanceof RegExp ? st
: this.isArguments() && !(new Format(b).isArguments()) ? false
: a.constructor !== b.constructor &&
!(Array.isArray(b) && Array.isArray(b) &&
a.constructor.name === b.constructor.name)
? false
: 'COMPLEX'
)
}
}
module.exports = Strict