* Private Static Class Fields Implementation * Redo testing without class transform for static private * Add a call() test for private static * Use Object.defineProperty in loose mode
70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
class Base {
|
|
static #foo = 1;
|
|
|
|
static getThis() {
|
|
return this.#foo;
|
|
}
|
|
|
|
static updateThis(val) {
|
|
return (this.#foo = val);
|
|
}
|
|
|
|
static getClass() {
|
|
return Base.#foo;
|
|
}
|
|
|
|
static updateClass(val) {
|
|
return (Base.#foo = val);
|
|
}
|
|
}
|
|
|
|
class Sub1 extends Base {
|
|
static #foo = 2;
|
|
|
|
static update(val) {
|
|
return (this.#foo = val);
|
|
}
|
|
}
|
|
|
|
class Sub2 extends Base {}
|
|
|
|
expect(Base.getThis()).toBe(1);
|
|
expect(Base.getClass()).toBe(1);
|
|
expect(() => Sub1.getThis()).toThrow();
|
|
expect(Sub1.getClass()).toBe(1);
|
|
expect(() => Sub2.getThis()).toThrow();
|
|
expect(Sub2.getClass()).toBe(1);
|
|
|
|
expect(Sub1.update(3)).toBe(3);
|
|
expect(Base.getThis()).toBe(1);
|
|
expect(Base.getClass()).toBe(1);
|
|
expect(() => Sub1.getThis()).toThrow();
|
|
expect(Sub1.getClass()).toBe(1);
|
|
expect(() => Sub2.getThis()).toThrow();
|
|
expect(Sub2.getClass()).toBe(1);
|
|
|
|
expect(Base.updateThis(4)).toBe(4);
|
|
expect(Base.getThis()).toBe(4);
|
|
expect(Base.getClass()).toBe(4);
|
|
expect(() => Sub1.getThis()).toThrow();
|
|
expect(Sub1.getClass()).toBe(4);
|
|
expect(() => Sub2.getThis()).toThrow();
|
|
expect(Sub2.getClass()).toBe(4);
|
|
|
|
expect(Base.updateClass(5)).toBe(5);
|
|
expect(Base.getThis()).toBe(5);
|
|
expect(Base.getClass()).toBe(5);
|
|
expect(() => Sub1.getThis()).toThrow();
|
|
expect(Sub1.getClass()).toBe(5);
|
|
expect(() => Sub2.getThis()).toThrow();
|
|
expect(Sub2.getClass()).toBe(5);
|
|
|
|
expect(() => Sub2.updateThis(6)).toThrow();
|
|
expect(Sub2.updateClass(7)).toBe(7);
|
|
expect(Base.getThis()).toBe(7);
|
|
expect(Base.getClass()).toBe(7);
|
|
expect(() => Sub1.getThis()).toThrow();
|
|
expect(Sub1.getClass()).toBe(7);
|
|
expect(() => Sub2.getThis()).toThrow();
|
|
expect(Sub2.getClass()).toBe(7);
|