/* The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Mozilla Communicator client code, released March * 31, 1998. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * */ /** File Name: 10.1.3.js ECMA Section: 10.1.3.js Variable Instantiation Description: Author: christine@netscape.com Date: 11 september 1997 */ var SECTION = "10.1.3"; var VERSION = "ECMA_1"; startTest(); var TITLE = "Variable instantiation"; var BUGNUMBER = "20256"; writeHeaderToLog( SECTION + " "+ TITLE); var testcases = getTestCases(); test(); function getTestCases() { var array = new Array(); var item = 0; // overriding a variable or function name with a function should succeed array[item++] = new TestCase(SECTION, "function t() { return \"first\" };" + "function t() { return \"second\" };t() ", "second", eval("function t() { return \"first\" };" + "function t() { return \"second\" };t()")); array[item++] = new TestCase(SECTION, "var t; function t(){}; typeof(t)", "function", eval("var t; function t(){}; typeof(t)")); // formal parameter tests array[item++] = new TestCase(SECTION, "function t1(a,b) { return b; }; t1( 4 );", void 0, eval("function t1(a,b) { return b; }; t1( 4 );") ); array[item++] = new TestCase(SECTION, "function t1(a,b) { return a; }; t1(4);", 4, eval("function t1(a,b) { return a; }; t1(4)")); array[item++] = new TestCase(SECTION, "function t1(a,b) { return a; }; t1();", void 0, eval("function t1(a,b) { return a; }; t1()")); array[item++] = new TestCase(SECTION, "function t1(a,b) { return a; }; t1(1,2,4);", 1, eval("function t1(a,b) { return a; }; t1(1,2,4)")); /* array[item++] = new TestCase(SECTION, "function t1(a,a) { return a; }; t1( 4 );", void 0, eval("function t1(a,a) { return a; }; t1( 4 )")); array[item++] = new TestCase(SECTION, "function t1(a,a) { return a; }; t1( 1,2 );", 2, eval("function t1(a,a) { return a; }; t1( 1,2 )")); */ // variable declarations array[item++] = new TestCase(SECTION, "function t1(a,b) { return a; }; t1( false, true );", false, eval("function t1(a,b) { return a; }; t1( false, true );")); array[item++] = new TestCase(SECTION, "function t1(a,b) { return b; }; t1( false, true );", true, eval("function t1(a,b) { return b; }; t1( false, true );")); array[item++] = new TestCase(SECTION, "function t1(a,b) { return a+b; }; t1( 4, 2 );", 6, eval("function t1(a,b) { return a+b; }; t1( 4, 2 );")); array[item++] = new TestCase(SECTION, "function t1(a,b) { return a+b; }; t1( 4 );", Number.NaN, eval("function t1(a,b) { return a+b; }; t1( 4 );")); // overriding a function name with a variable should fail array[item++] = new TestCase(SECTION, "function t() { return 'function' };" + "var t = 'variable'; typeof(t)", "string", eval("function t() { return 'function' };" + "var t = 'variable'; typeof(t)")); // function as a constructor array[item++] = new TestCase(SECTION, "function t1(a,b) { var a = b; return a; } t1(1,3);", 3, eval("function t1(a, b){ var a = b; return a;}; t1(1,3)")); array[item++] = new TestCase(SECTION, "function t2(a,b) { this.a = b; } x = new t2(1,3); x.a", 3, eval("function t2(a,b) { this.a = b; };" + "x = new t2(1,3); x.a")); array[item++] = new TestCase(SECTION, "function t2(a,b) { this.a = a; } x = new t2(1,3); x.a", 1, eval("function t2(a,b) { this.a = a; };" + "x = new t2(1,3); x.a")); array[item++] = new TestCase(SECTION, "function t2(a,b) { this.a = b; this.b = a; } " + "x = new t2(1,3);x.a;", 3, eval("function t2(a,b) { this.a = b; this.b = a; };" + "x = new t2(1,3);x.a;")); array[item++] = new TestCase(SECTION, "function t2(a,b) { this.a = b; this.b = a; }" + "x = new t2(1,3);x.b;", 1, eval("function t2(a,b) { this.a = b; this.b = a; };" + "x = new t2(1,3);x.b;") ); return (array); }