Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: test/mjsunit/es6/array-tostring.js

Issue 895633004: Update harmony Object.prototype.toString to 2/2/2015 spec (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --harmony-tostring 5 // Flags: --harmony-tostring
6 6
7 var global = this; 7 var global = this;
8 8
9 var funs = { 9 var funs = {
10 Object: [ Object ], 10 Object: [ Object ],
(...skipping 15 matching lines...) Expand all
26 Array.prototype.toString.call(funs[f][i]), 26 Array.prototype.toString.call(funs[f][i]),
27 funs[f][i]); 27 funs[f][i]);
28 } 28 }
29 } 29 }
30 30
31 31
32 function testToStringTag(className) { 32 function testToStringTag(className) {
33 // Using builtin toStringTags 33 // Using builtin toStringTags
34 var obj = {}; 34 var obj = {};
35 obj[Symbol.toStringTag] = className; 35 obj[Symbol.toStringTag] = className;
36 assertEquals("[object ~" + className + "]", 36 assertEquals("[object " + className + "]",
37 Array.prototype.toString.call(obj)); 37 Array.prototype.toString.call(obj));
38 38
39 // Getter throws 39 // Getter throws
40 obj = {}; 40 obj = {};
41 Object.defineProperty(obj, Symbol.toStringTag, { 41 Object.defineProperty(obj, Symbol.toStringTag, {
42 get: function() { throw className; } 42 get: function() { throw className; }
43 }); 43 });
44 assertThrows(function() { 44 assertThrows(function() {
45 Array.prototype.toString.call(obj); 45 Array.prototype.toString.call(obj);
46 }, className); 46 }, className);
47 47
48 // Getter does not throw 48 // Getter does not throw
49 obj = {}; 49 obj = {};
50 Object.defineProperty(obj, Symbol.toStringTag, { 50 Object.defineProperty(obj, Symbol.toStringTag, {
51 get: function() { return className; } 51 get: function() { return className; }
52 }); 52 });
53 assertEquals("[object ~" + className + "]", 53 assertEquals("[object " + className + "]",
54 Array.prototype.toString.call(obj)); 54 Array.prototype.toString.call(obj));
55 55
56 // Custom, non-builtin toStringTags 56 // Custom, non-builtin toStringTags
57 obj = {}; 57 obj = {};
58 obj[Symbol.toStringTag] = "X" + className; 58 obj[Symbol.toStringTag] = "X" + className;
59 assertEquals("[object X" + className + "]", 59 assertEquals("[object X" + className + "]",
60 Array.prototype.toString.call(obj)); 60 Array.prototype.toString.call(obj));
61 61
62 // With getter 62 // With getter
63 obj = {}; 63 obj = {};
(...skipping 29 matching lines...) Expand all
93 "Function", 93 "Function",
94 "Number", 94 "Number",
95 "RegExp", 95 "RegExp",
96 "String" 96 "String"
97 ].forEach(testToStringTag); 97 ].forEach(testToStringTag);
98 98
99 99
100 function testToStringTagNonString(value) { 100 function testToStringTagNonString(value) {
101 var obj = {}; 101 var obj = {};
102 obj[Symbol.toStringTag] = value; 102 obj[Symbol.toStringTag] = value;
103 assertEquals("[object ???]", Array.prototype.toString.call(obj)); 103 assertEquals("[object Object]", Array.prototype.toString.call(obj));
104 104
105 // With getter 105 // With getter
106 obj = {}; 106 obj = {};
107 Object.defineProperty(obj, Symbol.toStringTag, { 107 Object.defineProperty(obj, Symbol.toStringTag, {
108 get: function() { return value; } 108 get: function() { return value; }
109 }); 109 });
110 assertEquals("[object ???]", Array.prototype.toString.call(obj)); 110 assertEquals("[object Object]", Array.prototype.toString.call(obj));
111 } 111 }
112 112
113 113
114 [ 114 [
115 null, 115 null,
116 function() {}, 116 function() {},
117 [], 117 [],
118 {}, 118 {},
119 /regexp/, 119 /regexp/,
120 42, 120 42,
(...skipping 10 matching lines...) Expand all
131 var desc = Object.getOwnPropertyDescriptor(Object.prototype, "toString"); 131 var desc = Object.getOwnPropertyDescriptor(Object.prototype, "toString");
132 assertTrue(desc.writable); 132 assertTrue(desc.writable);
133 assertFalse(desc.enumerable); 133 assertFalse(desc.enumerable);
134 assertTrue(desc.configurable); 134 assertTrue(desc.configurable);
135 } 135 }
136 testArrayToStringPropertyDesc(); 136 testArrayToStringPropertyDesc();
137 137
138 138
139 function testArrayToStringOwnNonStringValue() { 139 function testArrayToStringOwnNonStringValue() {
140 var obj = Object.defineProperty({}, Symbol.toStringTag, { value: 1 }); 140 var obj = Object.defineProperty({}, Symbol.toStringTag, { value: 1 });
141 assertEquals("[object ???]", ([]).toString.call(obj)); 141 assertEquals("[object Object]", ([]).toString.call(obj));
142 } 142 }
143 testArrayToStringOwnNonStringValue(); 143 testArrayToStringOwnNonStringValue();
144 144
145 145
146 function testArrayToStringBasic() { 146 function testArrayToStringBasic() {
147 assertEquals("1,2,3", [1,2,3].toString()); 147 assertEquals("1,2,3", [1,2,3].toString());
148 assertEquals(",,3", [,,3].toString()); 148 assertEquals(",,3", [,,3].toString());
149 } 149 }
150 testArrayToStringBasic(); 150 testArrayToStringBasic();
151 151
152 152
153 function testArrayToStringObjectWithCallableJoin() { 153 function testArrayToStringObjectWithCallableJoin() {
154 var obj = { join: function() { return "CallableJoin"; } }; 154 var obj = { join: function() { return "CallableJoin"; } };
155 assertEquals("CallableJoin", Array.prototype.toString.call(obj)); 155 assertEquals("CallableJoin", Array.prototype.toString.call(obj));
156 } 156 }
157 testArrayToStringObjectWithCallableJoin(); 157 testArrayToStringObjectWithCallableJoin();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698