| var assert = function (result, expected, message) { |
| if (result !== expected) { |
| throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message ); |
| } |
| }; |
| |
| var assertThrow = function (cb, errorText) { |
| var error = null; |
| try { |
| cb(); |
| } catch (e) { |
| error = e.toString(); |
| } |
| if (error === null) |
| throw new Error('Expected error'); |
| if (error !== errorText) |
| throw new Error('Expected error ' + errorText + ' but was ' + error); |
| }; |
| |
| { |
| eval('{ function foo() {} }'); |
| assert(this.hasOwnProperty("foo"), true); |
| assert(typeof foo, 'function'); |
| } |
| |
| Object.defineProperty(this, "globalNonWritable", { |
| value: false, |
| configurable: true, |
| writable: false, |
| enumerable: true |
| }); |
| eval("{function globalNonWritable() { return 1; }}"); |
| var globalNonWritableDescriptor |
| = Object.getOwnPropertyDescriptor(this, "globalNonWritable"); |
| assert(globalNonWritableDescriptor.enumerable, true); |
| |
| Object.freeze(this); |
| { |
| var error = false; |
| try { |
| eval('{ function boo() {} }'); |
| } catch (e) { |
| error = true; |
| } |
| assert(this.hasOwnProperty("boo"), false); |
| assert(error, false); |
| assertThrow(() => boo, 'ReferenceError: Can\'t find variable: boo'); |
| } |