// |reftest| skip -- obsolete test /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ //----------------------------------------------------------------------------- var BUGNUMBER = 320119; var summary = 'delegating objects and arguments, arity, caller, name'; var actual = ''; var expect = ''; printBugNumber(BUGNUMBER); printStatus (summary); printStatus('original test'); function origtest(name, bar) { this.name = name; this.bar = bar; } function Monty(id, name, bar) { this.id = id; this.base = origtest; this.base(name, bar); } Monty.prototype = origtest; function testtwo(notNamedName, bar) { this.name = notNamedName; this.bar = bar; } function Python(id, notNamedName, bar) { this.id = id; this.base = origtest; this.base(notNamedName, bar); } Python.prototype = testtwo; var foo = new Monty(1, 'my name', 'sna!'); var manchu = new Python(1, 'my name', 'sna!'); printStatus('foo.name: ' + foo.name); printStatus('manchu.name: ' + manchu.name); expect = 'my name:my name'; actual = foo.name + ':' + manchu.name; reportCompare(expect, actual, summary + ': override function..name'); // end original test printStatus('test shared properties'); function testshared() { } expect = false; actual = testshared.hasOwnProperty('arguments'); reportCompare(expect, actual, summary + ': arguments no longer shared'); expect = false; actual = testshared.hasOwnProperty('caller'); reportCompare(expect, actual, summary + ': caller no longer shared'); expect = false; actual = testshared.hasOwnProperty('arity'); reportCompare(expect, actual, summary + ': arity no longer shared'); expect = false; actual = testshared.hasOwnProperty('name'); reportCompare(expect, actual, summary + ': name no longer shared'); expect = true; actual = testshared.hasOwnProperty('length'); reportCompare(expect, actual, summary + ': length still shared'); printStatus('test overrides'); function Parent() { this.arguments = 'oarguments'; this.caller = 'ocaller'; this.arity = 'oarity'; this.length = 'olength'; this.name = 'oname'; } function Child() { this.base = Parent; this.base(); } Child.prototype = Parent; Child.prototype.value = function() { return this.arguments + ',' + this.caller + ',' + this.arity + ',' + this.length + ',' + this.name; }; var child = new Child(); expect = 'oarguments,ocaller,oarity,0,oname'; actual = child.value(); reportCompare(expect, actual, summary + ': overrides');