123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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);
- });
|