]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma/ObjectObjects/15.2.1.1.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma / ObjectObjects / 15.2.1.1.js
1 /* The contents of this file are subject to the Netscape Public
2 * License Version 1.1 (the "License"); you may not use this file
3 * except in compliance with the License. You may obtain a copy of
4 * the License at http://www.mozilla.org/NPL/
5 *
6 * Software distributed under the License is distributed on an "AS
7 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
8 * implied. See the License for the specific language governing
9 * rights and limitations under the License.
10 *
11 * The Original Code is Mozilla Communicator client code, released March
12 * 31, 1998.
13 *
14 * The Initial Developer of the Original Code is Netscape Communications
15 * Corporation. Portions created by Netscape are
16 * Copyright (C) 1998 Netscape Communications Corporation. All
17 * Rights Reserved.
18 *
19 * Contributor(s):
20 *
21 */
22 /**
23 File Name: 15.2.1.1.js
24 ECMA Section: 15.2.1.1 The Object Constructor Called as a Function:
25 Object(value)
26 Description: When Object is called as a function rather than as a
27 constructor, the following steps are taken:
28
29 1. If value is null or undefined, create and return a
30 new object with no properties other than internal
31 properties exactly as if the object constructor
32 had been called on that same value (15.2.2.1).
33 2. Return ToObject (value), whose rules are:
34
35 undefined generate a runtime error
36 null generate a runtime error
37 boolean create a new Boolean object whose default
38 value is the value of the boolean.
39 number Create a new Number object whose default
40 value is the value of the number.
41 string Create a new String object whose default
42 value is the value of the string.
43 object Return the input argument (no conversion).
44
45 Author: christine@netscape.com
46 Date: 17 july 1997
47 */
48
49 var SECTION = "15.2.1.1";
50 var VERSION = "ECMA_1";
51 startTest();
52 var TITLE = "Object( value )";
53
54 writeHeaderToLog( SECTION + " "+ TITLE);
55
56 var testcases = getTestCases();
57 test();
58
59 function getTestCases() {
60 var array = new Array();
61 var item = 0;
62
63 var NULL_OBJECT = Object(null);
64
65 array[item++] = new TestCase( SECTION, "Object(null).valueOf()", NULL_OBJECT, (NULL_OBJECT).valueOf() );
66 array[item++] = new TestCase( SECTION, "typeof Object(null)", "object", typeof (Object(null)) );
67 array[item++] = new TestCase( SECTION, "Object(null).__proto__", Object.prototype, (Object(null)).__proto__ );
68
69 var UNDEFINED_OBJECT = Object( void 0 );
70
71 array[item++] = new TestCase( SECTION, "Object(void 0).valueOf()", UNDEFINED_OBJECT, (UNDEFINED_OBJECT).valueOf() );
72 array[item++] = new TestCase( SECTION, "typeof Object(void 0)", "object", typeof (Object(void 0)) );
73 array[item++] = new TestCase( SECTION, "Object(void 0).__proto__", Object.prototype, (Object(void 0)).__proto__ );
74
75 array[item++] = new TestCase( SECTION, "Object(true).valueOf()", true, (Object(true)).valueOf() );
76 array[item++] = new TestCase( SECTION, "typeof Object(true)", "object", typeof Object(true) );
77 array[item++] = new TestCase( SECTION, "var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("var MYOB = Object(true); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
78
79 array[item++] = new TestCase( SECTION, "Object(false).valueOf()", false, (Object(false)).valueOf() );
80 array[item++] = new TestCase( SECTION, "typeof Object(false)", "object", typeof Object(false) );
81 array[item++] = new TestCase( SECTION, "var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Boolean]", eval("var MYOB = Object(false); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
82
83 array[item++] = new TestCase( SECTION, "Object(0).valueOf()", 0, (Object(0)).valueOf() );
84 array[item++] = new TestCase( SECTION, "typeof Object(0)", "object", typeof Object(0) );
85 array[item++] = new TestCase( SECTION, "var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
86
87 array[item++] = new TestCase( SECTION, "Object(-0).valueOf()", -0, (Object(-0)).valueOf() );
88 array[item++] = new TestCase( SECTION, "typeof Object(-0)", "object", typeof Object(-0) );
89 array[item++] = new TestCase( SECTION, "var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(-0); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
90
91 array[item++] = new TestCase( SECTION, "Object(1).valueOf()", 1, (Object(1)).valueOf() );
92 array[item++] = new TestCase( SECTION, "typeof Object(1)", "object", typeof Object(1) );
93 array[item++] = new TestCase( SECTION, "var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
94
95 array[item++] = new TestCase( SECTION, "Object(-1).valueOf()", -1, (Object(-1)).valueOf() );
96 array[item++] = new TestCase( SECTION, "typeof Object(-1)", "object", typeof Object(-1) );
97 array[item++] = new TestCase( SECTION, "var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(-1); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
98
99 array[item++] = new TestCase( SECTION, "Object(Number.MAX_VALUE).valueOf()", 1.7976931348623157e308, (Object(Number.MAX_VALUE)).valueOf() );
100 array[item++] = new TestCase( SECTION, "typeof Object(Number.MAX_VALUE)", "object", typeof Object(Number.MAX_VALUE) );
101 array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.MAX_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
102
103 array[item++] = new TestCase( SECTION, "Object(Number.MIN_VALUE).valueOf()", 5e-324, (Object(Number.MIN_VALUE)).valueOf() );
104 array[item++] = new TestCase( SECTION, "typeof Object(Number.MIN_VALUE)", "object", typeof Object(Number.MIN_VALUE) );
105 array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.MIN_VALUE); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
106
107 array[item++] = new TestCase( SECTION, "Object(Number.POSITIVE_INFINITY).valueOf()", Number.POSITIVE_INFINITY, (Object(Number.POSITIVE_INFINITY)).valueOf() );
108 array[item++] = new TestCase( SECTION, "typeof Object(Number.POSITIVE_INFINITY)", "object", typeof Object(Number.POSITIVE_INFINITY) );
109 array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.POSITIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
110
111 array[item++] = new TestCase( SECTION, "Object(Number.NEGATIVE_INFINITY).valueOf()", Number.NEGATIVE_INFINITY, (Object(Number.NEGATIVE_INFINITY)).valueOf() );
112 array[item++] = new TestCase( SECTION, "typeof Object(Number.NEGATIVE_INFINITY)", "object", typeof Object(Number.NEGATIVE_INFINITY) );
113 array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.NEGATIVE_INFINITY); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
114
115 array[item++] = new TestCase( SECTION, "Object(Number.NaN).valueOf()", Number.NaN, (Object(Number.NaN)).valueOf() );
116 array[item++] = new TestCase( SECTION, "typeof Object(Number.NaN)", "object", typeof Object(Number.NaN) );
117 array[item++] = new TestCase( SECTION, "var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object Number]", eval("var MYOB = Object(Number.NaN); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
118
119 array[item++] = new TestCase( SECTION, "Object('a string').valueOf()", "a string", (Object("a string")).valueOf() );
120 array[item++] = new TestCase( SECTION, "typeof Object('a string')", "object", typeof (Object("a string")) );
121 array[item++] = new TestCase( SECTION, "var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object('a string'); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
122
123 array[item++] = new TestCase( SECTION, "Object('').valueOf()", "", (Object("")).valueOf() );
124 array[item++] = new TestCase( SECTION, "typeof Object('')", "object", typeof (Object("")) );
125 array[item++] = new TestCase( SECTION, "var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object(''); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
126
127 array[item++] = new TestCase( SECTION, "Object('\\r\\t\\b\\n\\v\\f').valueOf()", "\r\t\b\n\v\f", (Object("\r\t\b\n\v\f")).valueOf() );
128 array[item++] = new TestCase( SECTION, "typeof Object('\\r\\t\\b\\n\\v\\f')", "object", typeof (Object("\\r\\t\\b\\n\\v\\f")) );
129 array[item++] = new TestCase( SECTION, "var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object('\\r\\t\\b\\n\\v\\f'); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
130
131 array[item++] = new TestCase( SECTION, "Object( '\\\'\\\"\\' ).valueOf()", "\'\"\\", (Object("\'\"\\")).valueOf() );
132 array[item++] = new TestCase( SECTION, "typeof Object( '\\\'\\\"\\' )", "object", typeof Object("\'\"\\") );
133 // array[item++] = new TestCase( SECTION, "var MYOB = Object( '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()", "[object String]", eval("var MYOB = Object( '\\\'\\\"\\' ); MYOB.toString = Object.prototype.toString; MYOB.toString()") );
134
135 return ( array );
136 }
137
138 function test() {
139 for ( tc = 0; tc < testcases.length; tc++ ) {
140 testcases[tc].passed = writeTestCaseResult(
141 testcases[tc].expect,
142 testcases[tc].actual,
143 testcases[tc].description +" = "+
144 testcases[tc].actual );
145
146 testcases[tc].reason +=
147 ( testcases[tc].passed ) ? "" : "wrong value ";
148 }
149 stopTest();
150 return ( testcases );
151 }