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

Side by Side Diff: test/mjsunit/array-splice.js

Issue 1312033003: Adding ElementsAccessor::Splice (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@2017-07-27_array_builtin_push
Patch Set: addressing comments, adding more tests Created 5 years, 3 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
« no previous file with comments | « test/mjsunit/array-natives-elements.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 // Check variants of negatives and positive indices. 109 // Check variants of negatives and positive indices.
110 (function() { 110 (function() {
111 var array, spliced; 111 var array, spliced;
112 for (var i = 0; i < 7; i++) { 112 for (var i = 0; i < 7; i++) {
113 array = [1, 2, 3, 4, 5, 6, 7]; 113 array = [1, 2, 3, 4, 5, 6, 7];
114 spliced = array.splice(-100); 114 spliced = array.splice(-100);
115 assertEquals([], array); 115 assertEquals([], array);
116 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); 116 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
117 117
118 array = [1, 2, 3, 4, 5, 6, 7]; 118 array = [1, 2, 3, 4, 5, 6, 7];
119 spliced = array.splice(-1e100);
120 assertEquals([], array);
121 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
122
123 array = [1, 2, 3, 4, 5, 6, 7];
119 spliced = array.splice(-3); 124 spliced = array.splice(-3);
120 assertEquals([1, 2, 3, 4], array); 125 assertEquals([1, 2, 3, 4], array);
121 assertEquals([5, 6, 7], spliced); 126 assertEquals([5, 6, 7], spliced);
122 127
123 array = [1, 2, 3, 4, 5, 6, 7]; 128 array = [1, 2, 3, 4, 5, 6, 7];
129 spliced = array.splice(-3.999999);
130 assertEquals([1, 2, 3, 4], array);
131 assertEquals([5, 6, 7], spliced);
132
133 array = [1, 2, 3, 4, 5, 6, 7];
134 spliced = array.splice(-3.000001);
135 assertEquals([1, 2, 3, 4], array);
136 assertEquals([5, 6, 7], spliced);
137
138 array = [1, 2, 3, 4, 5, 6, 7];
124 spliced = array.splice(4); 139 spliced = array.splice(4);
125 assertEquals([1, 2, 3, 4], array); 140 assertEquals([1, 2, 3, 4], array);
126 assertEquals([5, 6, 7], spliced); 141 assertEquals([5, 6, 7], spliced);
127 142
128 array = [1, 2, 3, 4, 5, 6, 7]; 143 array = [1, 2, 3, 4, 5, 6, 7];
144 spliced = array.splice(4.999999);
145 assertEquals([1, 2, 3, 4], array);
146 assertEquals([5, 6, 7], spliced);
147
148 array = [1, 2, 3, 4, 5, 6, 7];
149 spliced = array.splice(4.000001);
150 assertEquals([1, 2, 3, 4], array);
151 assertEquals([5, 6, 7], spliced);
152
153 array = [1, 2, 3, 4, 5, 6, 7];
129 spliced = array.splice(6); 154 spliced = array.splice(6);
130 assertEquals([1, 2, 3, 4, 5, 6], array); 155 assertEquals([1, 2, 3, 4, 5, 6], array);
131 assertEquals([7], spliced); 156 assertEquals([7], spliced);
132 157
133 array = [1, 2, 3, 4, 5, 6, 7]; 158 array = [1, 2, 3, 4, 5, 6, 7];
134 spliced = array.splice(7); 159 spliced = array.splice(7);
135 assertEquals([1, 2, 3, 4, 5, 6, 7], array); 160 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
136 assertEquals([], spliced); 161 assertEquals([], spliced);
137 162
138 array = [1, 2, 3, 4, 5, 6, 7]; 163 array = [1, 2, 3, 4, 5, 6, 7];
139 spliced = array.splice(8); 164 spliced = array.splice(8);
140 assertEquals([1, 2, 3, 4, 5, 6, 7], array); 165 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
141 assertEquals([], spliced); 166 assertEquals([], spliced);
142 167
143 array = [1, 2, 3, 4, 5, 6, 7]; 168 array = [1, 2, 3, 4, 5, 6, 7];
144 spliced = array.splice(100); 169 spliced = array.splice(100);
145 assertEquals([1, 2, 3, 4, 5, 6, 7], array); 170 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
146 assertEquals([], spliced); 171 assertEquals([], spliced);
147 172
148 array = [1, 2, 3, 4, 5, 6, 7]; 173 array = [1, 2, 3, 4, 5, 6, 7];
174 spliced = array.splice(1e100);
175 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
176 assertEquals([], spliced);
177
178 array = [1, 2, 3, 4, 5, 6, 7];
149 spliced = array.splice(0, -100); 179 spliced = array.splice(0, -100);
150 assertEquals([1, 2, 3, 4, 5, 6, 7], array); 180 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
151 assertEquals([], spliced); 181 assertEquals([], spliced);
152 182
153 array = [1, 2, 3, 4, 5, 6, 7]; 183 array = [1, 2, 3, 4, 5, 6, 7];
184 spliced = array.splice(0, -1e100);
185 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
186 assertEquals([], spliced);
187
188 array = [1, 2, 3, 4, 5, 6, 7];
154 spliced = array.splice(0, -3); 189 spliced = array.splice(0, -3);
155 assertEquals([1, 2, 3, 4, 5, 6, 7], array); 190 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
156 assertEquals([], spliced); 191 assertEquals([], spliced);
157 192
158 array = [1, 2, 3, 4, 5, 6, 7]; 193 array = [1, 2, 3, 4, 5, 6, 7];
194 spliced = array.splice(0, -3.999999);
195 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
196 assertEquals([], spliced);
197
198 array = [1, 2, 3, 4, 5, 6, 7];
199 spliced = array.splice(0, -3.000001);
200 assertEquals([1, 2, 3, 4, 5, 6, 7], array);
201 assertEquals([], spliced);
202
203 array = [1, 2, 3, 4, 5, 6, 7];
159 spliced = array.splice(0, 4); 204 spliced = array.splice(0, 4);
160 assertEquals([5, 6, 7], array); 205 assertEquals([5, 6, 7], array);
161 assertEquals([1, 2, 3, 4], spliced); 206 assertEquals([1, 2, 3, 4], spliced);
162 207
163 array = [1, 2, 3, 4, 5, 6, 7]; 208 array = [1, 2, 3, 4, 5, 6, 7];
209 spliced = array.splice(0, 4.999999);
210 assertEquals([5, 6, 7], array);
211 assertEquals([1, 2, 3, 4], spliced);
212
213 array = [1, 2, 3, 4, 5, 6, 7];
214 spliced = array.splice(0, 4.000001);
215 assertEquals([5, 6, 7], array);
216 assertEquals([1, 2, 3, 4], spliced);
217
218 array = [1, 2, 3, 4, 5, 6, 7];
164 spliced = array.splice(0, 6); 219 spliced = array.splice(0, 6);
165 assertEquals([7], array); 220 assertEquals([7], array);
166 assertEquals([1, 2, 3, 4, 5, 6], spliced); 221 assertEquals([1, 2, 3, 4, 5, 6], spliced);
167 222
168 array = [1, 2, 3, 4, 5, 6, 7]; 223 array = [1, 2, 3, 4, 5, 6, 7];
169 spliced = array.splice(0, 7); 224 spliced = array.splice(0, 7);
170 assertEquals([], array); 225 assertEquals([], array);
171 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); 226 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
172 227
173 array = [1, 2, 3, 4, 5, 6, 7]; 228 array = [1, 2, 3, 4, 5, 6, 7];
174 spliced = array.splice(0, 8); 229 spliced = array.splice(0, 8);
175 assertEquals([], array); 230 assertEquals([], array);
176 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); 231 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
177 232
178 array = [1, 2, 3, 4, 5, 6, 7]; 233 array = [1, 2, 3, 4, 5, 6, 7];
179 spliced = array.splice(0, 100); 234 spliced = array.splice(0, 100);
180 assertEquals([], array); 235 assertEquals([], array);
181 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced); 236 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
182 237
238 array = [1, 2, 3, 4, 5, 6, 7];
239 spliced = array.splice(0, 1e100);
240 assertEquals([], array);
241 assertEquals([1, 2, 3, 4, 5, 6, 7], spliced);
242
183 // Some exotic cases. 243 // Some exotic cases.
184 obj = { toString: function() { throw 'Exception'; } }; 244 obj = { toString: function() { throw 'Exception'; } };
185 245
186 // Throwing an exception in conversion: 246 // Throwing an exception in conversion:
187 try { 247 try {
188 [1, 2, 3].splice(obj, 3); 248 [1, 2, 3].splice(obj, 3);
189 throw 'Should have thrown'; 249 throw 'Should have thrown';
190 } catch (e) { 250 } catch (e) {
191 assertEquals('Exception', e); 251 assertEquals('Exception', e);
192 } 252 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 433
374 (function() { 434 (function() {
375 for (var i = 0; i < 7; i++) { 435 for (var i = 0; i < 7; i++) {
376 var a = [7, 8, 9]; 436 var a = [7, 8, 9];
377 a.splice(0, 0, 1, 2, 3, 4, 5, 6); 437 a.splice(0, 0, 1, 2, 3, 4, 5, 6);
378 assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], a); 438 assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9], a);
379 assertFalse(a.hasOwnProperty(10), "a.hasOwnProperty(10)"); 439 assertFalse(a.hasOwnProperty(10), "a.hasOwnProperty(10)");
380 assertEquals(undefined, a[10]); 440 assertEquals(undefined, a[10]);
381 } 441 }
382 })(); 442 })();
OLDNEW
« no previous file with comments | « test/mjsunit/array-natives-elements.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698