js/src/tests/ecma/FunctionObjects/15.3.2.1-1.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:ade69c5b450d
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
7 /**
8 File Name: 15.3.2.1.js
9 ECMA Section: 15.3.2.1 The Function Constructor
10 new Function(p1, p2, ..., pn, body )
11
12 Description: The last argument specifies the body (executable code)
13 of a function; any preceding arguments sepcify formal
14 parameters.
15
16 See the text for description of this section.
17
18 This test examples from the specification.
19
20 Author: christine@netscape.com
21 Date: 28 october 1997
22
23 */
24 var SECTION = "15.3.2.1";
25 var VERSION = "ECMA_1";
26 startTest();
27 var TITLE = "The Function Constructor";
28
29 writeHeaderToLog( SECTION + " "+ TITLE);
30
31 var MyObject = new Function( "value", "this.value = value; this.valueOf = new Function( 'return this.value' ); this.toString = new Function( 'return String(this.value);' )" );
32
33 var myfunc = new Function();
34
35 // not going to test toString here since it is implementation dependent.
36 // new TestCase( SECTION, "myfunc.toString()", "function anonymous() { }", myfunc.toString() );
37
38 myfunc.toString = Object.prototype.toString;
39
40 new TestCase( SECTION, "myfunc = new Function(); myfunc.toString = Object.prototype.toString; myfunc.toString()",
41 "[object Function]",
42 myfunc.toString() );
43
44 new TestCase( SECTION,
45 "myfunc.length",
46 0,
47 myfunc.length );
48
49 new TestCase( SECTION,
50 "myfunc.prototype.toString()",
51 "[object Object]",
52 myfunc.prototype.toString() );
53
54 new TestCase( SECTION,
55 "myfunc.prototype.constructor",
56 myfunc,
57 myfunc.prototype.constructor );
58
59 new TestCase( SECTION,
60 "myfunc.arguments",
61 null,
62 myfunc.arguments );
63
64 new TestCase( SECTION,
65 "var OBJ = new MyObject(true); OBJ.valueOf()",
66 true,
67 eval("var OBJ = new MyObject(true); OBJ.valueOf()") );
68
69 new TestCase( SECTION,
70 "OBJ.toString()",
71 "true",
72 OBJ.toString() );
73
74 new TestCase( SECTION,
75 "OBJ.toString = Object.prototype.toString; OBJ.toString()", "[object Object]",
76 eval("OBJ.toString = Object.prototype.toString; OBJ.toString()") );
77
78 new TestCase( SECTION,
79 "MyObject.toString = Object.prototype.toString; MyObject.toString()",
80 "[object Function]",
81 eval("MyObject.toString = Object.prototype.toString; MyObject.toString()") );
82
83 new TestCase( SECTION,
84 "MyObject.length",
85 1,
86 MyObject.length );
87
88 new TestCase( SECTION,
89 "MyObject.prototype.constructor",
90 MyObject,
91 MyObject.prototype.constructor );
92
93 new TestCase( SECTION,
94 "MyObject.arguments",
95 null,
96 MyObject.arguments );
97
98 test();

mercurial