]>
git.saurik.com Git - apple/javascriptcore.git/blob - 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/
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.
11 * The Original Code is Mozilla Communicator client code, released March
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
23 File Name: 15.2.1.1.js
24 ECMA Section: 15.2.1.1 The Object Constructor Called as a Function:
26 Description: When Object is called as a function rather than as a
27 constructor, the following steps are taken:
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:
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).
45 Author: christine@netscape.com
49 var SECTION
= "15.2.1.1";
50 var VERSION
= "ECMA_1";
52 var TITLE
= "Object( value )";
54 writeHeaderToLog( SECTION
+ " "+ TITLE
);
56 var testcases
= getTestCases();
59 function getTestCases() {
60 var array
= new Array();
63 var NULL_OBJECT
= Object(null);
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__
);
69 var UNDEFINED_OBJECT
= Object( void 0 );
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__
);
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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()") );
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
);
146 testcases
[tc
].reason
+=
147 ( testcases
[tc
].passed
) ? "" : "wrong value ";
150 return ( testcases
);