mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-31 05:10:57 +00:00 
			
		
		
		
	
		
			
	
	
		
			88 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | test("basic functionality", () => { | ||
|  |     class A { | ||
|  |         number = 3; | ||
|  | 
 | ||
|  |         string = "foo"; | ||
|  | 
 | ||
|  |         uninitialized; | ||
|  |     } | ||
|  | 
 | ||
|  |     const a = new A(); | ||
|  |     expect(a.number).toBe(3); | ||
|  |     expect(a.string).toBe("foo"); | ||
|  |     expect(a.uninitialized).toBeUndefined(); | ||
|  | }); | ||
|  | 
 | ||
|  | test("extended name syntax", () => { | ||
|  |     class A { | ||
|  |         "field with space" = 1; | ||
|  | 
 | ||
|  |         12 = "twelve"; | ||
|  | 
 | ||
|  |         [`he${"llo"}`] = 3; | ||
|  |     } | ||
|  | 
 | ||
|  |     const a = new A(); | ||
|  |     expect(a["field with space"]).toBe(1); | ||
|  |     expect(a[12]).toBe("twelve"); | ||
|  |     expect(a.hello).toBe(3); | ||
|  | }); | ||
|  | 
 | ||
|  | test("initializer has correct this value", () => { | ||
|  |     class A { | ||
|  |         this_val = this; | ||
|  | 
 | ||
|  |         this_name = this.this_val; | ||
|  |     } | ||
|  | 
 | ||
|  |     const a = new A(); | ||
|  |     expect(a.this_val).toBe(a); | ||
|  |     expect(a.this_name).toBe(a); | ||
|  | }); | ||
|  | 
 | ||
|  | test("static fields", () => { | ||
|  |     class A { | ||
|  |         static simple = 1; | ||
|  |         simple = 2; | ||
|  | 
 | ||
|  |         static "with space" = 3; | ||
|  | 
 | ||
|  |         static 24 = "two dozen"; | ||
|  | 
 | ||
|  |         static [`he${"llo"}`] = "friends"; | ||
|  | 
 | ||
|  |         static this_val = this; | ||
|  |         static this_name = this.name; | ||
|  |         static this_val2 = this.this_val; | ||
|  |     } | ||
|  | 
 | ||
|  |     expect(A.simple).toBe(1); | ||
|  |     expect(A["with space"]).toBe(3); | ||
|  |     expect(A[24]).toBe("two dozen"); | ||
|  |     expect(A.hello).toBe("friends"); | ||
|  | 
 | ||
|  |     expect(A.this_val).toBe(A); | ||
|  |     expect(A.this_name).toBe("A"); | ||
|  |     expect(A.this_val2).toBe(A); | ||
|  | 
 | ||
|  |     const a = new A(); | ||
|  |     expect(a.simple).toBe(2); | ||
|  | }); | ||
|  | 
 | ||
|  | test("with super class", () => { | ||
|  |     class A { | ||
|  |         super_field = 3; | ||
|  |     } | ||
|  | 
 | ||
|  |     class B extends A { | ||
|  |         references_super_field = super.super_field; | ||
|  |         arrow_ref_super = () => (super.super_field = 4); | ||
|  |     } | ||
|  | 
 | ||
|  |     const b = new B(); | ||
|  |     expect(b.super_field).toBe(3); | ||
|  |     expect(b.references_super_field).toBeUndefined(); | ||
|  |     b.arrow_ref_super(); | ||
|  |     expect(b.super_field).toBe(4); | ||
|  | }); |