summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Tests/classes/class-basic.js
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Tests/classes/class-basic.js')
-rw-r--r--Libraries/LibJS/Tests/classes/class-basic.js274
1 files changed, 5 insertions, 269 deletions
diff --git a/Libraries/LibJS/Tests/classes/class-basic.js b/Libraries/LibJS/Tests/classes/class-basic.js
index 2fd856ac36..844bbe68fc 100644
--- a/Libraries/LibJS/Tests/classes/class-basic.js
+++ b/Libraries/LibJS/Tests/classes/class-basic.js
@@ -1,269 +1,5 @@
-load("test-common.js");
-
-try {
- class X {
- constructor() {
- this.x = 3;
- }
- getX() {
- return 3;
- }
-
- init() {
- this.y = 3;
- }
- }
-
- assert(X.name === "X");
- assert(X.length === 0);
-
- class Y extends X {
- init() {
- super.init();
- this.y += 3;
- }
- }
-
- assert(new Y().getX() === 3);
- assert(new Y().x === 3);
-
- let x = new X();
- assert(x.x === 3);
- assert(x.getX() === 3);
-
- let y = new Y();
- assert(y.x === 3);
- assert(y.y === undefined);
- y.init();
- assert(y.y === 6);
- assert(y.hasOwnProperty("y"));
-
- class Foo {
- constructor(x) {
- this.x = x;
- }
- }
- assert(Foo.length === 1);
-
- class Bar extends Foo {
- constructor() {
- super(5);
- }
- }
-
- class Baz {
- constructor() {
- this.foo = 55;
- this._bar = 33;
- }
-
- get bar() {
- return this._bar;
- }
-
- set bar(value) {
- this._bar = value;
- }
-
- ["get" + "Foo"]() {
- return this.foo;
- }
-
- static get staticFoo() {
- assert(this === Baz);
- return 11;
- }
- }
-
- let barPropertyDescriptor = Object.getOwnPropertyDescriptor(Baz.prototype, "bar");
- assert(barPropertyDescriptor.get.name === "get bar");
- assert(barPropertyDescriptor.set.name === "set bar");
-
- let baz = new Baz();
- assert(baz.foo === 55);
- assert(baz.bar === 33);
- baz.bar = 22;
- assert(baz.bar === 22);
-
- assert(baz.getFoo() === 55);
- assert(Baz.staticFoo === 11);
-
- assert(new Bar().x === 5);
-
- class ExtendsFunction extends function () {
- this.foo = 22;
- } {}
- assert(new ExtendsFunction().foo === 22);
-
- class ExtendsString extends String {}
- assert(new ExtendsString() instanceof String);
- assert(new ExtendsString() instanceof ExtendsString);
- assert(new ExtendsString("abc").charAt(1) === "b");
-
- class MyWeirdString extends ExtendsString {
- charAt(i) {
- return "#" + super.charAt(i);
- }
- }
- assert(new MyWeirdString("abc").charAt(1) === "#b");
-
- class ExtendsNull extends null {}
-
- assertThrowsError(
- () => {
- new ExtendsNull();
- },
- {
- error: ReferenceError,
- }
- );
- assert(Object.getPrototypeOf(ExtendsNull.prototype) === null);
-
- class ExtendsClassExpression extends class {
- constructor(x) {
- this.x = x;
- }
- } {
- constructor(y) {
- super(5);
- this.y = 6;
- }
- }
- let extendsClassExpression = new ExtendsClassExpression();
- assert(extendsClassExpression.x === 5);
- assert(extendsClassExpression.y === 6);
-
- class InStrictMode {
- constructor() {
- assert(isStrictMode());
- }
-
- method() {
- assert(isStrictMode());
- }
- }
-
- let resultOfAnExpression = new (class {
- constructor(x) {
- this.x = x;
- }
- getX() {
- return this.x + 10;
- }
- })(55);
- assert(resultOfAnExpression.x === 55);
- assert(resultOfAnExpression.getX() === 65);
-
- let ClassExpression = class Foo {};
- assert(ClassExpression.name === "Foo");
-
- new InStrictMode().method();
- assert(!isStrictMode());
-
- assertIsSyntaxError(`
- class GetterWithArgument {
- get foo(bar) {
- return 0;
- }
- }
- `);
-
- assertIsSyntaxError(`
- class SetterWithNoArgumetns {
- set foo() {
- }
- }
- `);
-
- assertIsSyntaxError(`
- class SetterWithMoreThanOneArgument {
- set foo(bar, baz) {
- }
- }
- `);
-
- assertIsSyntaxError(`
- class FooBase {}
- class IsASyntaxError extends FooBase {
- bar() {
- function f() { super.baz; }
- }
- }
- `);
-
- assertIsSyntaxError(`
- class NoBaseSuper {
- constructor() {
- super();
- }
- }
- `);
-
- assertThrowsError(
- () => {
- class BadExtends extends 3 {}
- },
- {
- error: TypeError,
- }
- );
-
- assertThrowsError(
- () => {
- class BadExtends extends undefined {}
- },
- {
- error: TypeError,
- }
- );
-
- class SuperNotASyntaxError {
- bar() {
- () => {
- super.baz;
- };
- }
- }
-
- class SuperNoBasePropertyLookup {
- constructor() {
- super.foo;
- }
- }
-
- assertThrowsError(
- () => {
- class Base {}
- class DerivedDoesntCallSuper extends Base {
- constructor() {
- this;
- }
- }
-
- new DerivedDoesntCallSuper();
- },
- {
- error: ReferenceError,
- }
- );
- assertThrowsError(
- () => {
- class Base {}
- class CallsSuperTwice extends Base {
- constructor() {
- super();
- super();
- }
- }
-
- new CallsSuperTwice();
- },
- {
- error: ReferenceError,
- }
- );
-
- console.log("PASS");
-} catch (e) {
- console.log("FAIL: " + e);
-}
+test("class properties", () => {
+ class A {}
+ expect(A.name).toBe("A");
+ expect(A).toHaveLength(0);
+});