michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: var BUGNUMBER = '53268'; michael@0: var status = 'Testing scope after changing obj.__proto__'; michael@0: var expect= ''; michael@0: var actual = ''; michael@0: var obj = {}; michael@0: const five = 5; michael@0: michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: test(); michael@0: //----------------------------------------------------------------------------- michael@0: michael@0: michael@0: function test() michael@0: { michael@0: enterFunc ("test"); michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (status); michael@0: michael@0: michael@0: status= 'Step 1: setting obj.__proto__ = global object'; michael@0: obj.__proto__ = this; michael@0: michael@0: actual = obj.five; michael@0: expect=5; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: obj.five=1; michael@0: actual = obj.five; michael@0: expect=5; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: michael@0: michael@0: status= 'Step 2: setting obj.__proto__ = null'; michael@0: obj.__proto__ = null; michael@0: michael@0: actual = obj.five; michael@0: expect=undefined; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: obj.five=2; michael@0: actual = obj.five; michael@0: expect=2; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: michael@0: michael@0: status= 'Step 3: setting obj.__proto__ to global object again'; michael@0: obj.__proto__ = this; michael@0: michael@0: actual = obj.five; michael@0: expect=2; //<--- (FROM STEP 2 ABOVE) michael@0: reportCompare (expect, actual, status); michael@0: michael@0: obj.five=3; michael@0: actual = obj.five; michael@0: expect=3; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: michael@0: michael@0: status= 'Step 4: setting obj.__proto__ to null again'; michael@0: obj.__proto__ = null; michael@0: michael@0: actual = obj.five; michael@0: expect=3; //<--- (FROM STEP 3 ABOVE) michael@0: reportCompare (expect, actual, status); michael@0: michael@0: obj.five=4; michael@0: actual = obj.five; michael@0: expect=4; michael@0: reportCompare (expect, actual, status); michael@0: michael@0: michael@0: exitFunc ("test"); michael@0: }