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

Side by Side Diff: test/mjsunit/harmony/spread-call.js

Issue 938443002: [es6] implement spread calls (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add construct support, clean out some gunk 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
(Empty)
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
3 // found in the LICENSE file.
4
5 // Flags: --harmony-spreadcalls
6
7 (function testSpreadCallsStrict() {
8 "use strict"
9 function countArgs() { return arguments.length; }
10
11 // Test this argument
12 function returnThis() { return this; }
13 assertEquals(void 0, returnThis(..."test"));
14
15 // Test argument counting with different iterables
16 assertEquals(0, countArgs(...""));
17 assertEquals(1, countArgs(..."t"));
18 assertEquals(2, countArgs(..."te"));
19 assertEquals(3, countArgs(..."tes"));
20 assertEquals(4, countArgs(..."test"));
21 assertEquals(4, countArgs(..."tes", ..."t"));
22 assertEquals(4, countArgs("t", ..."es", "t"));
23 assertEquals(5, countArgs(..."test!"));
24 assertEquals(5, countArgs(..."tes", ..."t!"));
25 assertEquals(6, countArgs(..."test!!"));
26 assertEquals(6, countArgs(..."tes", ..."t!!"));
27
28 assertEquals(1, countArgs(...[1]));
29 assertEquals(2, countArgs(...[1, 2]));
30 assertEquals(3, countArgs(...[1, 2, 3]));
31 assertEquals(4, countArgs(...[1, 2, 3, 4]));
32 assertEquals(5, countArgs(...[1, 2, 3, 4, 5]));
33 assertEquals(6, countArgs(...[1, 2, 3, 4, 5, 6]));
34
35 assertEquals(1, countArgs(...new Set([1])));
36 assertEquals(2, countArgs(...new Set([1, 2])));
37 assertEquals(3, countArgs(...new Set([1, 2, 3])));
38 assertEquals(4, countArgs(...new Set([1, 2, 3, 4])));
39 assertEquals(5, countArgs(...new Set([1, 2, 3, 4, 5])));
40 assertEquals(6, countArgs(...new Set([1, 2, 3, 4, 5, 6])));
41
42 assertEquals(3, countArgs(...(function*(){ yield 1; yield 2; yield 3; })()));
43
44 // Test values
45 function sum() {
46 var sum = arguments[0];
47 for (var i = 1; i < arguments.length; ++i) {
48 sum += arguments[i];
49 }
50 return sum;
51 }
52
53 assertEquals(void 0, sum(...""));
54 assertEquals(void 0, sum(...[]));
55 assertEquals(void 0, sum(...new Set));
56 assertEquals(void 0, sum(...(function*() { })()));
57
58 assertEquals("test", sum(..."test"));
59 assertEquals(10, sum(...[1, 2, 3, 4]));
60 assertEquals(10, sum(...[1, 2, 3], 4));
61 assertEquals(10, sum(1, ...[2, 3], 4));
62 assertEquals(10, sum(1, ...[2, 3], ...[4]));
63 assertEquals(10, sum(1, 2, ...[3, 4]));
64 assertEquals(10, sum(...new Set([1, 2, 3, 4])));
65 assertEquals(10, sum(...(function*() {
66 yield 1;
67 yield 2;
68 yield 3;
69 yield 4;
70 })()));
71
72 // nested spreads
73 function makeArray() {
74 var result = [];
75 for (var i = 0; i < arguments.length; ++i) {
76 result.push(arguments[i]);
77 }
78 return result;
79 }
80 assertEquals(10, sum(...makeArray(...[1, 2, 3, 4])));
81 assertEquals("test!!!", sum(...makeArray(..."test!!!")));
82
83 // Methods
84 var O = {
85 returnThis: returnThis,
86 countArgs: countArgs,
87 sum: sum,
88 makeArray: makeArray,
89
90 nested: {
91 returnThis: returnThis,
92 countArgs: countArgs,
93 sum: sum,
94 makeArray: makeArray
95 }
96 };
97
98 // Test this argument
99 assertEquals(O, O.returnThis(..."test"));
100 assertEquals(O, O["returnThis"](..."test"));
101 assertEquals(O.nested, O.nested.returnThis(..."test"));
102 assertEquals(O.nested, O.nested["returnThis"](..."test"));
103
104 // Test argument counting with different iterables
105 assertEquals(0, O.countArgs(...""));
106 assertEquals(1, O.countArgs(..."t"));
107 assertEquals(2, O.countArgs(..."te"));
108 assertEquals(3, O.countArgs(..."tes"));
109 assertEquals(4, O.countArgs(..."test"));
110 assertEquals(4, O.countArgs(..."tes", ..."t"));
111 assertEquals(4, O.countArgs("t", ..."es", "t"));
112 assertEquals(5, O.countArgs(..."test!"));
113 assertEquals(5, O.countArgs(..."tes", ..."t!"));
114 assertEquals(6, O.countArgs(..."test!!"));
115 assertEquals(6, O.countArgs(..."tes", ..."t!!"));
116
117 assertEquals(1, O.countArgs(...[1]));
118 assertEquals(2, O.countArgs(...[1, 2]));
119 assertEquals(3, O.countArgs(...[1, 2, 3]));
120 assertEquals(4, O.countArgs(...[1, 2, 3, 4]));
121 assertEquals(5, O.countArgs(...[1, 2, 3, 4, 5]));
122 assertEquals(6, O.countArgs(...[1, 2, 3, 4, 5, 6]));
123
124 assertEquals(1, O.countArgs(...new Set([1])));
125 assertEquals(2, O.countArgs(...new Set([1, 2])));
126 assertEquals(3, O.countArgs(...new Set([1, 2, 3])));
127 assertEquals(4, O.countArgs(...new Set([1, 2, 3, 4])));
128 assertEquals(5, O.countArgs(...new Set([1, 2, 3, 4, 5])));
129 assertEquals(6, O.countArgs(...new Set([1, 2, 3, 4, 5, 6])));
130
131 assertEquals(3, O.countArgs(...(function*(){ yield 1; yield 2; yield 3; })())) ;
132
133 // Test values
134 assertEquals(void 0, O.sum(...""));
135 assertEquals(void 0, O.sum(...[]));
136 assertEquals(void 0, O.sum(...new Set));
137 assertEquals(void 0, O.sum(...(function*() { })()));
138
139 assertEquals("test", O.sum(..."test"));
140 assertEquals(10, O.sum(...[1, 2, 3, 4]));
141 assertEquals(10, O.sum(...[1, 2, 3], 4));
142 assertEquals(10, O.sum(1, ...[2, 3], 4));
143 assertEquals(10, O.sum(1, ...[2, 3], ...[4]));
144 assertEquals(10, O.sum(1, 2, ...[3, 4]));
145 assertEquals(10, O.sum(...new Set([1, 2, 3, 4])));
146 assertEquals(10, O.sum(...(function*() {
147 yield 1;
148 yield 2;
149 yield 3;
150 yield 4;
151 })()));
152
153 // nested spreads
154 assertEquals(10, O.sum(...O.makeArray(...[1, 2, 3, 4])));
155 assertEquals("test!!!", O.sum(...O.makeArray(..."test!!!")));
156 })();
157
158
159 (function testSpreadCallsSloppy() {
160 function countArgs() { return arguments.length; }
161
162 // Test argument counting with different iterables
163 assertEquals(0, countArgs(...""));
164 assertEquals(1, countArgs(..."t"));
165 assertEquals(2, countArgs(..."te"));
166 assertEquals(3, countArgs(..."tes"));
167 assertEquals(4, countArgs(..."test"));
168 assertEquals(4, countArgs(..."tes", ..."t"));
169 assertEquals(4, countArgs("t", ..."es", "t"));
170 assertEquals(5, countArgs(..."test!"));
171 assertEquals(5, countArgs(..."tes", ..."t!"));
172 assertEquals(6, countArgs(..."test!!"));
173 assertEquals(6, countArgs(..."tes", ..."t!!"));
174
175 assertEquals(1, countArgs(...[1]));
176 assertEquals(2, countArgs(...[1, 2]));
177 assertEquals(3, countArgs(...[1, 2, 3]));
178 assertEquals(4, countArgs(...[1, 2, 3, 4]));
179 assertEquals(5, countArgs(...[1, 2, 3, 4, 5]));
180 assertEquals(6, countArgs(...[1, 2, 3, 4, 5, 6]));
181
182 assertEquals(1, countArgs(...new Set([1])));
183 assertEquals(2, countArgs(...new Set([1, 2])));
184 assertEquals(3, countArgs(...new Set([1, 2, 3])));
185 assertEquals(4, countArgs(...new Set([1, 2, 3, 4])));
186 assertEquals(5, countArgs(...new Set([1, 2, 3, 4, 5])));
187 assertEquals(6, countArgs(...new Set([1, 2, 3, 4, 5, 6])));
188
189 assertEquals(3, countArgs(...(function*(){ yield 1; yield 2; yield 3; })()));
190
191 // Test values
192 function sum() {
193 var sum = arguments[0];
194 for (var i = 1; i < arguments.length; ++i) {
195 sum += arguments[i];
196 }
197 return sum;
198 }
199
200 assertEquals(void 0, sum(...""));
201 assertEquals(void 0, sum(...[]));
202 assertEquals(void 0, sum(...new Set));
203 assertEquals(void 0, sum(...(function*() { })()));
204
205 assertEquals("test", sum(..."test"));
206 assertEquals(10, sum(...[1, 2, 3, 4]));
207 assertEquals(10, sum(...[1, 2, 3], 4));
208 assertEquals(10, sum(1, ...[2, 3], 4));
209 assertEquals(10, sum(1, ...[2, 3], ...[4]));
210 assertEquals(10, sum(1, 2, ...[3, 4]));
211 assertEquals(10, sum(...new Set([1, 2, 3, 4])));
212 assertEquals(10, sum(...(function*() {
213 yield 1;
214 yield 2;
215 yield 3;
216 yield 4;
217 })()));
218
219 // nested spreads
220 function makeArray() {
221 var result = [];
222 for (var i = 0; i < arguments.length; ++i) {
223 result.push(arguments[i]);
224 }
225 return result;
226 }
227 assertEquals(10, sum(...makeArray(...[1, 2, 3, 4])));
228 assertEquals("test!!!", sum(...makeArray(..."test!!!")));
229 })();
arv (Not doing code reviews) 2015/02/18 15:07:06 Maybe some tests with F.p.apply too? function f(s
caitp (gmail) 2015/02/18 15:32:08 Will do
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698