mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:22:43 +00:00 
			
		
		
		
	LibJS: Convert all remaining non-Array tests to the new system :)
This commit is contained in:
		
							parent
							
								
									918f4affd5
								
							
						
					
					
						commit
						15de2eda2b
					
				
					 72 changed files with 2394 additions and 1998 deletions
				
			
		
							
								
								
									
										104
									
								
								Libraries/LibJS/Tests/classes/class-static-setters.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								Libraries/LibJS/Tests/classes/class-static-setters.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,104 @@ | |||
| describe("correct behavior", () => { | ||||
|   test("basic functionality", () => { | ||||
|     class A { | ||||
|       static get x() { | ||||
|         return this._x; | ||||
|       } | ||||
| 
 | ||||
|       static set x(value) { | ||||
|         this._x = value * 2; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     expect(A.x).toBeUndefined(); | ||||
|     expect(A).not.toHaveProperty("_x"); | ||||
|     A.x = 3; | ||||
|     expect(A.x).toBe(6); | ||||
|     expect(A).toHaveProperty("_x", 6); | ||||
|   }); | ||||
| 
 | ||||
|   test("name", () => { | ||||
|     class A { | ||||
|       static set x(v) {} | ||||
|     } | ||||
| 
 | ||||
|     const d = Object.getOwnPropertyDescriptor(A, "x"); | ||||
|     expect(d.set.name).toBe("set x"); | ||||
|   }); | ||||
| 
 | ||||
|   test("extended name syntax", () => { | ||||
|     class A { | ||||
|       static set "method with space"(value) { | ||||
|         this.a = value; | ||||
|       } | ||||
| 
 | ||||
|       static set 12(value) { | ||||
|         this.b = value; | ||||
|       } | ||||
| 
 | ||||
|       static set [`he${"llo"}`](value) { | ||||
|         this.c = value; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     A["method with space"] = 1; | ||||
|     A[12] = 2; | ||||
|     A.hello = 3; | ||||
|     expect(A.a).toBe(1); | ||||
|     expect(A.b).toBe(2); | ||||
|     expect(A.c).toBe(3); | ||||
|   }); | ||||
| 
 | ||||
|   test("inherited static setter", () => { | ||||
|     class Parent { | ||||
|       static get x() { | ||||
|         return this._x; | ||||
|       } | ||||
| 
 | ||||
|       static set x(value) { | ||||
|         this._x = value * 2; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     class Child extends Parent {} | ||||
| 
 | ||||
|     expect(Child.x).toBeUndefined(); | ||||
|     Child.x = 10; | ||||
|     expect(Child.x).toBe(20); | ||||
|   }); | ||||
| 
 | ||||
|   test("inherited static setter overriding", () => { | ||||
|     class Parent { | ||||
|       static get x() { | ||||
|         return this._x; | ||||
|       } | ||||
| 
 | ||||
|       static set x(value) { | ||||
|         this._x = value * 2; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     class Child extends Parent { | ||||
|       static get x() { | ||||
|         return this._x; | ||||
|       } | ||||
| 
 | ||||
|       static set x(value) { | ||||
|         this._x = value * 3; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     expect(Child.x).toBeUndefined(); | ||||
|     Child.x = 10; | ||||
|     expect(Child.x).toBe(30); | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| describe("errors", () => { | ||||
|   test('"set static" is a syntax error', () => { | ||||
|     expect(` | ||||
|     class A { | ||||
|       set static foo(value) {} | ||||
|     }`).not.toEval();
 | ||||
|   }); | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Matthew Olsson
						Matthew Olsson