oj
Version:
A unified templating language for the people. Thirsty people.
1 lines • 3.11 kB
JavaScript
function replacer(e,t){return util.isUndefined(t)?""+t:util.isNumber(t)&&(isNaN(t)||!isFinite(t))?t.toString():util.isFunction(t)||util.isRegExp(t)?t.toString():t}function truncate(e,t){return util.isString(e)?e.length<t?e:e.slice(0,t):e}function getMessage(e){return truncate(JSON.stringify(e.actual,replacer),128)+" "+e.operator+" "+truncate(JSON.stringify(e.expected,replacer),128)}function fail(e,t,n,r,i){throw new assert.AssertionError({message:n,actual:e,expected:t,operator:r,stackStartFunction:i})}function ok(e,t){e||fail(e,!0,t,"==",assert.ok)}function _deepEqual(e,t){if(e===t)return!0;if(util.isBuffer(e)&&util.isBuffer(t)){if(e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return util.isDate(e)&&util.isDate(t)?e.getTime()===t.getTime():util.isRegExp(e)&&util.isRegExp(t)?e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase:!util.isObject(e)&&!util.isObject(t)?e==t:objEquiv(e,t)}function isArguments(e){return Object.prototype.toString.call(e)=="[object Arguments]"}function objEquiv(e,t){if(util.isNullOrUndefined(e)||util.isNullOrUndefined(t))return!1;if(e.prototype!==t.prototype)return!1;if(isArguments(e))return isArguments(t)?(e=pSlice.call(e),t=pSlice.call(t),_deepEqual(e,t)):!1;try{var n=Object.keys(e),r=Object.keys(t),i,s}catch(o){return!1}if(n.length!=r.length)return!1;n.sort(),r.sort();for(s=n.length-1;s>=0;s--)if(n[s]!=r[s])return!1;for(s=n.length-1;s>=0;s--){i=n[s];if(!_deepEqual(e[i],t[i]))return!1}return!0}function expectedException(e,t){return!e||!t?!1:Object.prototype.toString.call(t)=="[object RegExp]"?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function _throws(e,t,n,r){var i;util.isString(n)&&(r=n,n=null);try{t()}catch(s){i=s}r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&fail(i,n,"Missing expected exception"+r),!e&&expectedException(i,n)&&fail(i,n,"Got unwanted exception"+r);if(e&&i&&n&&!expectedException(i,n)||!e&&i)throw i}var util=require("util"),pSlice=Array.prototype.slice,assert=module.exports=ok;assert.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,this.message=t.message||getMessage(this);var n=t.stackStartFunction||fail;Error.captureStackTrace(this,n)},util.inherits(assert.AssertionError,Error),assert.fail=fail,assert.ok=ok,assert.equal=function(t,n,r){t!=n&&fail(t,n,r,"==",assert.equal)},assert.notEqual=function(t,n,r){t==n&&fail(t,n,r,"!=",assert.notEqual)},assert.deepEqual=function(t,n,r){_deepEqual(t,n)||fail(t,n,r,"deepEqual",assert.deepEqual)},assert.notDeepEqual=function(t,n,r){_deepEqual(t,n)&&fail(t,n,r,"notDeepEqual",assert.notDeepEqual)},assert.strictEqual=function(t,n,r){t!==n&&fail(t,n,r,"===",assert.strictEqual)},assert.notStrictEqual=function(t,n,r){t===n&&fail(t,n,r,"!==",assert.notStrictEqual)},assert.throws=function(e,t,n){_throws.apply(this,[!0].concat(pSlice.call(arguments)))},assert.doesNotThrow=function(e,t){_throws.apply(this,[!1].concat(pSlice.call(arguments)))},assert.ifError=function(e){if(e)throw e}