| 
									
										
										
										
											2020-04-23 00:33:13 +01:00
										 |  |  | load("test-common.js"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     var a = [1, 2, 3]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert(a.length === 3); | 
					
						
							|  |  |  |     assert(a[0] === 1); | 
					
						
							|  |  |  |     assert(a[1] === 2); | 
					
						
							|  |  |  |     assert(a[2] === 3); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.length = 5; | 
					
						
							|  |  |  |     assert(a.length === 5); | 
					
						
							|  |  |  |     assert(a[0] === 1); | 
					
						
							|  |  |  |     assert(a[1] === 2); | 
					
						
							|  |  |  |     assert(a[2] === 3); | 
					
						
							|  |  |  |     assert(a[3] === undefined); | 
					
						
							|  |  |  |     assert(a[4] === undefined); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.length = 1; | 
					
						
							| 
									
										
										
										
											2020-04-23 00:33:13 +01:00
										 |  |  |     assert(a.length === 1); | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     assert(a[0] === 1); | 
					
						
							| 
									
										
										
										
											2020-04-23 00:33:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     a.length = 0; | 
					
						
							|  |  |  |     assert(a.length === 0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.length = "42"; | 
					
						
							|  |  |  |     assert(a.length === 42); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.length = []; | 
					
						
							|  |  |  |     assert(a.length === 0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.length = true; | 
					
						
							|  |  |  |     assert(a.length === 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [undefined, "foo", -1, Infinity, -Infinity, NaN].forEach(value => { | 
					
						
							|  |  |  |         assertThrowsError( | 
					
						
							|  |  |  |             () => { | 
					
						
							|  |  |  |                 a.length = value; | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 error: RangeError, | 
					
						
							|  |  |  |                 message: "Invalid array length", | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |         assert(a.length === 1); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     console.log("PASS"); | 
					
						
							| 
									
										
										
										
											2020-04-23 00:33:13 +01:00
										 |  |  | } catch (e) { | 
					
						
							| 
									
										
										
										
											2020-07-06 07:37:45 -07:00
										 |  |  |     console.log("FAIL: " + e); | 
					
						
							| 
									
										
										
										
											2020-04-23 00:33:13 +01:00
										 |  |  | } |