/
safety.js
48 lines (42 loc) · 1.23 KB
/
safety.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
* Tools for safe coding in the main window.
* (see workersafety.js for analogs in web workers)
*
* Copyright (c) 2012, Fritz Obermeyer
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*/
//------------------------------------------------------------------------------
// Global safety & testing
var globalEval = eval;
'use strict';
var AssertException = function (message) {
this.message = message || '(unspecified)';
};
AssertException.prototype.toString = function () {
return 'Assertion Failed: ' + this.message;
};
var assert = function (condition, message) {
if (!condition) {
throw new AssertException(message);
}
};
var assertEval = function (message) {
assert(eval(message), message);
};
var assertEqual = function (actual, expected, message) {
if (!(actual instanceof String) || !(expected instanceof String)) {
actual = JSON.stringify(actual);
expected = JSON.stringify(expected);
}
assert(actual === expected,
(message || '') +
'\n actual = ' + actual +
'\n expected = ' + expected);
};
var log;
if (window.console && window.console.log) {
log = function (message) { console.log(message); };
} else {
log = function (message) {}; // ignore
}