Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81160 views
1
"use strict";
2
module.exports = (function(){
3
var AssertionError = (function() {
4
function AssertionError(a) {
5
this.constructor$(a);
6
this.message = a;
7
this.name = "AssertionError";
8
}
9
AssertionError.prototype = new Error();
10
AssertionError.prototype.constructor = AssertionError;
11
AssertionError.prototype.constructor$ = Error;
12
return AssertionError;
13
})();
14
15
function getParams(args) {
16
var params = [];
17
for (var i = 0; i < args.length; ++i) params.push("arg" + i);
18
return params;
19
}
20
21
function nativeAssert(callName, args, expect) {
22
try {
23
var params = getParams(args);
24
var constructorArgs = params;
25
constructorArgs.push("return " +
26
callName + "("+ params.join(",") + ");");
27
var fn = Function.apply(null, constructorArgs);
28
return fn.apply(null, args);
29
} catch (e) {
30
if (!(e instanceof SyntaxError)) {
31
throw e;
32
} else {
33
return expect;
34
}
35
}
36
}
37
38
return function assert(boolExpr, message) {
39
if (boolExpr === true) return;
40
41
if (typeof boolExpr === "string" &&
42
boolExpr.charAt(0) === "%") {
43
var nativeCallName = boolExpr;
44
var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}
45
if (nativeAssert(nativeCallName, args, message) === message) return;
46
message = (nativeCallName + " !== " + message);
47
}
48
49
var ret = new AssertionError(message);
50
if (Error.captureStackTrace) {
51
Error.captureStackTrace(ret, assert);
52
}
53
throw ret;
54
};
55
})();
56
57