michael@0: function failWrapper(callback) { michael@0: try { michael@0: callback(); // this should fail michael@0: throw "test-error"; // and if it didn't we have a problem` michael@0: } catch (e) { michael@0: if (e == "test-error") michael@0: throw ("Testing error when running " + callback.toString()); michael@0: } michael@0: } michael@0: michael@0: michael@0: print ("Deleting standard classes"); michael@0: delete Function; michael@0: delete Object; michael@0: delete Array; michael@0: delete Boolean; michael@0: delete JSON; michael@0: delete Date; michael@0: delete Math; michael@0: delete Number; michael@0: delete String; michael@0: delete Regexp; michael@0: delete Reflect; michael@0: delete Proxy; michael@0: delete Error; michael@0: delete Iterator; michael@0: delete Generator; michael@0: delete StopIteration; michael@0: delete Float32Array; michael@0: delete Float64Array; michael@0: delete Int16Array; michael@0: delete Int32Array; michael@0: delete Int32Array; michael@0: delete Uint16Array; michael@0: delete Uint32Array; michael@0: delete Uint8Array; michael@0: delete Uint8ClampedArray; michael@0: delete Weakmap; michael@0: michael@0: michael@0: print ("Accessing standard classes shouldn't recreate them"); michael@0: failWrapper(function () { Function; }); michael@0: failWrapper(function () { Object; }); michael@0: failWrapper(function () { Array; }); michael@0: failWrapper(function () { Boolean; }); michael@0: failWrapper(function () { JSON; }); michael@0: failWrapper(function () { Date; }); michael@0: failWrapper(function () { Math; }); michael@0: failWrapper(function () { Number; }); michael@0: failWrapper(function () { String; }); michael@0: failWrapper(function () { Regexp; }); michael@0: failWrapper(function () { Reflect; }); michael@0: failWrapper(function () { Proxy; }); michael@0: failWrapper(function () { Error; }); michael@0: failWrapper(function () { Iterator; }); michael@0: failWrapper(function () { Generator; }); michael@0: failWrapper(function () { StopIteration; }); michael@0: failWrapper(function () { Float32Array; }); michael@0: failWrapper(function () { Float64Array; }); michael@0: failWrapper(function () { Int16Array; }); michael@0: failWrapper(function () { Int32Array; }); michael@0: failWrapper(function () { Int32Array; }); michael@0: failWrapper(function () { Uint16Array; }); michael@0: failWrapper(function () { Uint32Array; }); michael@0: failWrapper(function () { Uint8Array; }); michael@0: failWrapper(function () { Uint8ClampedArray; }); michael@0: failWrapper(function () { Weakmap; }); michael@0: michael@0: michael@0: print ("Enumerate over the global object"); michael@0: for (c in this) {} michael@0: michael@0: print ("That shouldn't have recreated the standard classes either"); michael@0: failWrapper(function () { Function; }); michael@0: failWrapper(function () { Object; }); michael@0: failWrapper(function () { Array; }); michael@0: failWrapper(function () { Boolean; }); michael@0: failWrapper(function () { JSON; }); michael@0: failWrapper(function () { Date; }); michael@0: failWrapper(function () { Math; }); michael@0: failWrapper(function () { Number; }); michael@0: failWrapper(function () { String; }); michael@0: failWrapper(function () { Regexp; }); michael@0: failWrapper(function () { Reflect; }); michael@0: failWrapper(function () { Proxy; }); michael@0: failWrapper(function () { Error; }); michael@0: failWrapper(function () { Iterator; }); michael@0: failWrapper(function () { Generator; }); michael@0: failWrapper(function () { StopIteration; }); michael@0: failWrapper(function () { Float32Array; }); michael@0: failWrapper(function () { Float64Array; }); michael@0: failWrapper(function () { Int16Array; }); michael@0: failWrapper(function () { Int32Array; }); michael@0: failWrapper(function () { Int32Array; }); michael@0: failWrapper(function () { Uint16Array; }); michael@0: failWrapper(function () { Uint32Array; }); michael@0: failWrapper(function () { Uint8Array; }); michael@0: failWrapper(function () { Uint8ClampedArray; }); michael@0: failWrapper(function () { Weakmap; }); michael@0: michael@0: print ("success");