| 
									
										
										
										
											2021-06-09 00:08:47 +03:00
										 |  |  | test("constructor properties", () => { | 
					
						
							|  |  |  |     expect(Set).toHaveLength(0); | 
					
						
							|  |  |  |     expect(Set.name).toBe("Set"); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("errors", () => { | 
					
						
							|  |  |  |     test("invalid array iterators", () => { | 
					
						
							|  |  |  |         [-100, Infinity, NaN, {}, 152n].forEach(value => { | 
					
						
							|  |  |  |             expect(() => { | 
					
						
							|  |  |  |                 new Set(value); | 
					
						
							|  |  |  |             }).toThrowWithMessage(TypeError, "is not iterable"); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     test("called without new", () => { | 
					
						
							|  |  |  |         expect(() => { | 
					
						
							|  |  |  |             Set(); | 
					
						
							|  |  |  |         }).toThrowWithMessage(TypeError, "Set constructor must be called with 'new'"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe("normal behavior", () => { | 
					
						
							|  |  |  |     test("typeof", () => { | 
					
						
							|  |  |  |         expect(typeof new Set()).toBe("object"); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     test("constructor with single array argument", () => { | 
					
						
							|  |  |  |         var a = new Set([0, 1, 2]); | 
					
						
							|  |  |  |         expect(a instanceof Set).toBeTrue(); | 
					
						
							|  |  |  |         expect(a).toHaveSize(3); | 
					
						
							| 
									
										
										
										
											2021-06-09 00:14:08 +03:00
										 |  |  |         var seen = [false, false, false]; | 
					
						
							|  |  |  |         a.forEach(x => { | 
					
						
							|  |  |  |             seen[x] = true; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |         expect(seen[0] && seen[1] && seen[2]); | 
					
						
							| 
									
										
										
										
											2021-06-09 00:08:47 +03:00
										 |  |  |     }); | 
					
						
							|  |  |  | }); |