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

Side by Side Diff: test/mjsunit/harmony/array-length.js

Issue 1433473003: Ship Harmony ToLength (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: add --harmony-tolength flag back into tests Created 5 years, 1 month 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
« no previous file with comments | « test/mjsunit/es6/regexp-tolength.js ('k') | test/mjsunit/harmony/regexp-tolength.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --harmony-tolength
6
7 // Test array functions do not cause infinite loops when length is negative,
8 // max_value, etc.
9
10 // ArrayToString
11
12 var o = { length: Number.MIN_VALUE };
13 var result = Array.prototype.toString.call(o);
14 assertEquals("[object Object]", result);
15
16 // ArrayToLocaleString
17
18 var o = { length: Number.MIN_VALUE };
19 var result = Array.prototype.toLocaleString.call(o);
20 assertEquals("", result);
21
22 // ArrayJoin
23
24 var o = { length: Number.MIN_VALUE };
25 var result = Array.prototype.join.call(o);
26 assertEquals(0, result.length);
27
28 // ArrayPush
29
30 var o = { length: Number.MIN_VALUE };
31 Array.prototype.push.call(o, 1);
32 assertEquals(1, o.length);
33 assertEquals(1, o[0]);
34
35 var o = { length: Number.MAX_VALUE };
36 assertThrows(() => Array.prototype.push.call(o, 1), TypeError);
37
38 // ArrayPop
39
40 var o = { length: 0 };
41 Array.prototype.pop.call(o);
42 assertEquals(0, o.length);
43
44 var o = { length: Number.MIN_VALUE };
45 Array.prototype.pop.call(o);
46 assertEquals(0, o.length);
47
48 var o = { length: Number.MAX_VALUE };
49 Array.prototype.pop.call(o);
50 assertEquals(o.length, Number.MAX_SAFE_INTEGER - 1);
51
52 // ArrayReverse
53
54 var o = { 0: 'foo', length: Number.MIN_VALUE }
55 var result = Array.prototype.reverse.call(o);
56 assertEquals('object', typeof(result));
57 assertEquals(Number.MIN_VALUE, result.length);
58 assertEquals(Number.MIN_VALUE, o.length);
59
60 // ArrayShift
61
62 var o = { 0: "foo", length: Number.MIN_VALUE }
63 var result = Array.prototype.shift.call(o);
64 assertEquals(undefined, result);
65 assertEquals(0, o.length);
66
67 // ArrayUnshift
68
69 var o = { length: 0 };
70 Array.prototype.unshift.call(o);
71 assertEquals(0, o.length);
72
73 var o = { length: 0 };
74 Array.prototype.unshift.call(o, 'foo');
75 assertEquals('foo', o[0]);
76 assertEquals(1, o.length);
77
78 var o = { length: Number.MIN_VALUE };
79 Array.prototype.unshift.call(o);
80 assertEquals(0, o.length);
81
82 var o = { length: Number.MIN_VALUE };
83 Array.prototype.unshift.call(o, 'foo');
84 assertEquals('foo', o[0]);
85 assertEquals(1, o.length);
86
87 // ArraySplice
88
89 var o = { length: Number.MIN_VALUE };
90 Array.prototype.splice.call(o);
91 assertEquals(0, o.length);
92
93 var o = { length: Number.MIN_VALUE };
94 Array.prototype.splice.call(o, 0, 10, ['foo']);
95 assertEquals(['foo'], o[0]);
96 assertEquals(1, o.length);
97
98 var o = { length: Number.MIN_VALUE };
99 Array.prototype.splice.call(o, -1);
100 assertEquals(0, o.length);
101
102 var o = { length: Number.MAX_SAFE_INTEGER };
103 Array.prototype.splice.call(o, -1);
104 assertEquals(Number.MAX_SAFE_INTEGER - 1, o.length);
105
106 // ArraySlice
107
108 var o = { length: Number.MIN_VALUE };
109 var result = Array.prototype.slice.call(o);
110 assertEquals(0, result.length);
111
112 var o = { length: Number.MIN_VALUE };
113 var result = Array.prototype.slice.call(o, Number.MAX_VALUE);
114 assertEquals(0, result.length);
115
116 var o = { length: Number.MAX_VALUE };
117 var result = Array.prototype.slice.call(o, Number.MAX_VALUE - 1);
118 assertEquals(0, result.length);
119
120 // ArrayIndexOf
121
122 var o = { length: Number.MIN_VALUE };
123 var result = Array.prototype.indexOf.call(o);
124 assertEquals(-1, result);
125
126 var o = { length: Number.MAX_SAFE_INTEGER }
127 o[Number.MAX_SAFE_INTEGER - 1] = "foo"
128 var result = Array.prototype.indexOf.call(o,
129 "foo", Number.MAX_SAFE_INTEGER - 2);
130 assertEquals(Number.MAX_SAFE_INTEGER - 1, result);
131
132 var o = { length: Number.MAX_SAFE_INTEGER };
133 o[Number.MAX_SAFE_INTEGER - 1] = "foo";
134 var result = Array.prototype.indexOf.call(o, "foo", -1);
135 assertEquals(Number.MAX_SAFE_INTEGER - 1, result);
136
137 // ArrayLastIndexOf
138
139 var o = { length: Number.MIN_VALUE };
140 var result = Array.prototype.lastIndexOf.call(o);
141 assertEquals(-1, result);
142
143 var o = { length: Number.MAX_SAFE_INTEGER }
144 o[Number.MAX_SAFE_INTEGER - 1] = "foo"
145 var result = Array.prototype.lastIndexOf.call(o,
146 "foo", Number.MAX_SAFE_INTEGER);
147 assertEquals(Number.MAX_SAFE_INTEGER - 1, result);
148
149 var o = { length: Number.MAX_SAFE_INTEGER };
150 o[Number.MAX_SAFE_INTEGER - 1] = "foo";
151 var result = Array.prototype.lastIndexOf.call(o, "foo", -1);
152 assertEquals(Number.MAX_SAFE_INTEGER - 1, result);
153
154 // ArrayFilter
155
156 var func = function(v) { return v; }
157
158 var o = { length: Number.MIN_VALUE };
159 Array.prototype.filter.call(o, func);
160 assertEquals(Number.MIN_VALUE, o.length);
161
162 // ArrayForEach
163
164 var o = { length: Number.MIN_VALUE };
165 Array.prototype.forEach.call(o, func);
166 assertEquals(Number.MIN_VALUE, o.length);
167
168 // ArraySome
169
170 var o = { length: Number.MIN_VALUE };
171 Array.prototype.some.call(o, func);
172 assertEquals(Number.MIN_VALUE, o.length);
173
174 // ArrayEvery
175
176 var o = { length: Number.MIN_VALUE };
177 Array.prototype.every.call(o, func);
178 assertEquals(Number.MIN_VALUE, o.length);
179
180 // ArrayMap
181
182 var o = { length: Number.MIN_VALUE };
183 Array.prototype.map.call(o, func);
184 assertEquals(Number.MIN_VALUE, o.length);
185
186 // ArrayReduce
187
188 var o = { length: Number.MIN_VALUE };
189 Array.prototype.reduce.call(o, func, 0);
190 assertEquals(Number.MIN_VALUE, o.length);
191
192 // ArrayReduceRight
193
194 var o = { length: Number.MIN_VALUE };
195 Array.prototype.reduceRight.call(o, func, 0);
196 assertEquals(Number.MIN_VALUE, o.length);
197
198 // ArrayFill
199
200 var o = { length: Number.MIN_VALUE };
201 Array.prototype.fill(o, 0);
202 assertEquals(Number.MIN_VALUE, o.length);
OLDNEW
« no previous file with comments | « test/mjsunit/es6/regexp-tolength.js ('k') | test/mjsunit/harmony/regexp-tolength.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698