mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-25 09:30:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| test("basic functionality", () => {
 | |
|     const A = class {
 | |
|         constructor(x) {
 | |
|             this.x = x;
 | |
|         }
 | |
| 
 | |
|         getX() {
 | |
|             return this.x * 2;
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     expect(new A(10).getX()).toBe(20);
 | |
| });
 | |
| 
 | |
| test("inline instantiation", () => {
 | |
|     // prettier-ignore
 | |
|     const a = new class {
 | |
|         constructor() {
 | |
|             this.x = 10;
 | |
|         }
 | |
| 
 | |
|         getX() {
 | |
|             return this.x * 2;
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     expect(a.getX()).toBe(20);
 | |
| });
 | |
| 
 | |
| test("inline instantiation with argument", () => {
 | |
|     // prettier-ignore
 | |
|     const a = new class {
 | |
|         constructor(x) {
 | |
|             this.x = x;
 | |
|         }
 | |
| 
 | |
|         getX() {
 | |
|             return this.x * 2;
 | |
|         }
 | |
|     }(10);
 | |
| 
 | |
|     expect(a.getX()).toBe(20);
 | |
| });
 | |
| 
 | |
| test("extending class expressions", () => {
 | |
|     class A extends class {
 | |
|         constructor(x) {
 | |
|             this.x = x;
 | |
|         }
 | |
|     } {
 | |
|         constructor(y) {
 | |
|             super(y);
 | |
|             this.y = y * 2;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     const a = new A(10);
 | |
|     expect(a.x).toBe(10);
 | |
|     expect(a.y).toBe(20);
 | |
| });
 | |
| 
 | |
| test("class expression name", () => {
 | |
|     let A = class {};
 | |
|     expect(A.name).toBe("A");
 | |
| 
 | |
|     let B = class C {};
 | |
|     expect(B.name).toBe("C");
 | |
| });
 |