blob: d659c9b1967badf2ea366567cf88634bab01ae04 [file] [log] [blame]
window.assert = (function() {
function AssertionError(opts) {
if (!opts) opts = {};
$.extend(this, opts);
if (!this.message) this.message = this.explanation;
Error.call(this, this.message);
}
function noop() {}
noop.prototype = Error.prototype;
AssertionError.prototype = new noop();
function fail(opts) {
if (typeof opts === 'string') opts = { message: opts };
throw new AssertionError(opts);
}
return {
ok: function(thing, message) {
if (thing) return;
fail({
message: message,
explanation: 'expected '+thing+' to be truthy'
});
},
equal: function(thing1, thing2, message) {
if (thing1 === thing2) return;
fail({
message: message,
explanation: 'expected ('+thing1+') to equal ('+thing2+')'
});
},
throws: function(fn, message) {
var error = false;
try {
fn();
} catch(e) {
error = true;
}
if (error) return;
fail({
message: message,
explanation: 'expected '+fn+' to throw an error'
});
},
fail: function(message) {
fail({ message: message, explanation: 'generic fail' });
}
}
})();