|
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.2.4.2.js |
|
9 ECMA Section: 15.2.4.2 Object.prototype.toString() |
|
10 |
|
11 Description: When the toString method is called, the following |
|
12 steps are taken: |
|
13 1. Get the [[Class]] property of this object |
|
14 2. Call ToString( Result(1) ) |
|
15 3. Compute a string value by concatenating the three |
|
16 strings "[object " + Result(2) + "]" |
|
17 4. Return Result(3). |
|
18 |
|
19 Author: christine@netscape.com |
|
20 Date: 28 october 1997 |
|
21 |
|
22 */ |
|
23 var SECTION = "15.2.4.2"; |
|
24 var VERSION = "ECMA_1"; |
|
25 startTest(); |
|
26 var TITLE = "Object.prototype.toString()"; |
|
27 |
|
28 writeHeaderToLog( SECTION + " "+ TITLE); |
|
29 |
|
30 new TestCase( SECTION, "(new Object()).toString()", "[object Object]", (new Object()).toString() ); |
|
31 |
|
32 new TestCase( SECTION, "myvar = this; myvar.toString = Object.prototype.toString; myvar.toString()", |
|
33 GLOBAL.replace(/ @ 0x[0-9a-fA-F]+ \(native @ 0x[0-9a-fA-F]+\)/, ''), |
|
34 eval("myvar = this; myvar.toString = Object.prototype.toString; myvar.toString()") |
|
35 ); |
|
36 |
|
37 new TestCase( SECTION, "myvar = MyObject; myvar.toString = Object.prototype.toString; myvar.toString()", |
|
38 "[object Function]", |
|
39 eval("myvar = MyObject; myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
40 |
|
41 new TestCase( SECTION, "myvar = new MyObject( true ); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
42 '[object Object]', |
|
43 eval("myvar = new MyObject( true ); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
44 |
|
45 new TestCase( SECTION, "myvar = new Number(0); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
46 "[object Number]", |
|
47 eval("myvar = new Number(0); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
48 |
|
49 new TestCase( SECTION, "myvar = new String(''); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
50 "[object String]", |
|
51 eval("myvar = new String(''); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
52 |
|
53 new TestCase( SECTION, "myvar = Math; myvar.toString = Object.prototype.toString; myvar.toString()", |
|
54 "[object Math]", |
|
55 eval("myvar = Math; myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
56 |
|
57 new TestCase( SECTION, "myvar = new Function(); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
58 "[object Function]", |
|
59 eval("myvar = new Function(); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
60 |
|
61 new TestCase( SECTION, "myvar = new Array(); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
62 "[object Array]", |
|
63 eval("myvar = new Array(); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
64 |
|
65 new TestCase( SECTION, "myvar = new Boolean(); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
66 "[object Boolean]", |
|
67 eval("myvar = new Boolean(); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
68 |
|
69 new TestCase( SECTION, "myvar = new Date(); myvar.toString = Object.prototype.toString; myvar.toString()", |
|
70 "[object Date]", |
|
71 eval("myvar = new Date(); myvar.toString = Object.prototype.toString; myvar.toString()") ); |
|
72 |
|
73 new TestCase( SECTION, "var MYVAR = new Object( this ); MYVAR.toString()", |
|
74 GLOBAL.replace(/ @ 0x[0-9a-fA-F]+ \(native @ 0x[0-9a-fA-F]+\)/, ''), |
|
75 eval("var MYVAR = new Object( this ); MYVAR.toString()") |
|
76 ); |
|
77 |
|
78 new TestCase( SECTION, "var MYVAR = new Object(); MYVAR.toString()", |
|
79 "[object Object]", |
|
80 eval("var MYVAR = new Object(); MYVAR.toString()") ); |
|
81 |
|
82 new TestCase( SECTION, "var MYVAR = new Object(void 0); MYVAR.toString()", |
|
83 "[object Object]", |
|
84 eval("var MYVAR = new Object(void 0); MYVAR.toString()") ); |
|
85 |
|
86 new TestCase( SECTION, "var MYVAR = new Object(null); MYVAR.toString()", |
|
87 "[object Object]", |
|
88 eval("var MYVAR = new Object(null); MYVAR.toString()") ); |
|
89 |
|
90 |
|
91 function MyObject( value ) { |
|
92 this.value = new Function( "return this.value" ); |
|
93 this.toString = new Function ( "return this.value+''"); |
|
94 } |
|
95 |
|
96 test(); |