| 
									
										
										
										
											2020-07-05 17:26:26 -07:00
										 |  |  | test("basic functionality", () => { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     const sum = (a, b, c) => a + b + c; | 
					
						
							|  |  |  |     const a = [1, 2, 3]; | 
					
						
							| 
									
										
										
										
											2020-05-05 22:36:24 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     expect(sum(...a)).toBe(6); | 
					
						
							|  |  |  |     expect(sum(1, ...a)).toBe(4); | 
					
						
							|  |  |  |     expect(sum(...a, 10)).toBe(6); | 
					
						
							| 
									
										
										
										
											2020-05-05 22:36:24 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     const foo = (a, b, c) => c; | 
					
						
							| 
									
										
										
										
											2020-05-05 22:36:24 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     const o = { bar: [1, 2, 3] }; | 
					
						
							|  |  |  |     expect(foo(...o.bar)).toBe(3); | 
					
						
							|  |  |  |     expect(foo(..."abc")).toBe("c"); | 
					
						
							| 
									
										
										
										
											2020-07-05 17:26:26 -07:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2020-05-05 22:36:24 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-13 08:27:20 -07:00
										 |  |  | test("spreading custom iterable", () => { | 
					
						
							|  |  |  |     let o = { | 
					
						
							|  |  |  |         [Symbol.iterator]() { | 
					
						
							|  |  |  |             return { | 
					
						
							|  |  |  |                 i: 0, | 
					
						
							|  |  |  |                 next() { | 
					
						
							|  |  |  |                     if (this.i++ === 3) { | 
					
						
							|  |  |  |                         return { done: true }; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     return { value: this.i }; | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(Math.max(...o)).toBe(3); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-05 17:26:26 -07:00
										 |  |  | test("spreading non iterable", () => { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     expect(() => { | 
					
						
							|  |  |  |         [...1]; | 
					
						
							|  |  |  |     }).toThrowWithMessage(TypeError, "1 is not iterable"); | 
					
						
							| 
									
										
										
										
											2020-07-05 17:26:26 -07:00
										 |  |  | }); |