summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Tests/classes/class-methods.js
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Tests/classes/class-methods.js')
-rw-r--r--Libraries/LibJS/Tests/classes/class-methods.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/Libraries/LibJS/Tests/classes/class-methods.js b/Libraries/LibJS/Tests/classes/class-methods.js
new file mode 100644
index 0000000000..4bc04ea5a5
--- /dev/null
+++ b/Libraries/LibJS/Tests/classes/class-methods.js
@@ -0,0 +1,51 @@
+test("basic functionality", () => {
+ class A {
+ number() {
+ return 2;
+ }
+
+ string() {
+ return "foo";
+ }
+ }
+
+ const a = new A();
+ expect(a.number()).toBe(2);
+ expect(a.string()).toBe("foo");
+});
+
+test("length", () => {
+ class A {
+ method1() {}
+
+ method2(a, b, c, d) {}
+
+ method3(a, b, ...c) {}
+ }
+
+ const a = new A();
+ expect(a.method1).toHaveLength(0);
+ expect(a.method2).toHaveLength(4);
+ expect(a.method3).toHaveLength(2);
+});
+
+test("extended name syntax", () => {
+ class A {
+ "method with space"() {
+ return 1;
+ }
+
+ 12() {
+ return 2;
+ }
+
+ [`he${"llo"}`]() {
+ return 3;
+ }
+ }
+
+ const a = new A();
+ expect(a["method with space"]()).toBe(1);
+ expect(a[12]()).toBe(2);
+ expect(a.hello()).toBe(3);
+});