You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					56 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					56 lines
				
				1.6 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | module.exports = (function(){ | ||
|  | var AssertionError = (function() { | ||
|  |     function AssertionError(a) { | ||
|  |         this.constructor$(a); | ||
|  |         this.message = a; | ||
|  |         this.name = "AssertionError"; | ||
|  |     } | ||
|  |     AssertionError.prototype = new Error(); | ||
|  |     AssertionError.prototype.constructor = AssertionError; | ||
|  |     AssertionError.prototype.constructor$ = Error; | ||
|  |     return AssertionError; | ||
|  | })(); | ||
|  | 
 | ||
|  | function getParams(args) { | ||
|  |     var params = []; | ||
|  |     for (var i = 0; i < args.length; ++i) params.push("arg" + i); | ||
|  |     return params; | ||
|  | } | ||
|  | 
 | ||
|  | function nativeAssert(callName, args, expect) { | ||
|  |     try { | ||
|  |         var params = getParams(args); | ||
|  |         var constructorArgs = params; | ||
|  |         constructorArgs.push("return " + | ||
|  |                 callName + "("+ params.join(",") + ");"); | ||
|  |         var fn = Function.apply(null, constructorArgs); | ||
|  |         return fn.apply(null, args); | ||
|  |     } catch (e) { | ||
|  |         if (!(e instanceof SyntaxError)) { | ||
|  |             throw e; | ||
|  |         } else { | ||
|  |             return expect; | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | return function assert(boolExpr, message) { | ||
|  |     if (boolExpr === true) return; | ||
|  | 
 | ||
|  |     if (typeof boolExpr === "string" && | ||
|  |         boolExpr.charAt(0) === "%") { | ||
|  |         var nativeCallName = boolExpr; | ||
|  |         var $_len = arguments.length;var args = new Array(Math.max($_len - 2, 0)); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}; | ||
|  |         if (nativeAssert(nativeCallName, args, message) === message) return; | ||
|  |         message = (nativeCallName + " !== " + message); | ||
|  |     } | ||
|  | 
 | ||
|  |     var ret = new AssertionError(message); | ||
|  |     if (Error.captureStackTrace) { | ||
|  |         Error.captureStackTrace(ret, assert); | ||
|  |     } | ||
|  |     throw ret; | ||
|  | }; | ||
|  | })(); |