summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js')
-rw-r--r--Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js b/Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js
new file mode 100644
index 0000000000..02b513800b
--- /dev/null
+++ b/Userland/Libraries/LibJS/Tests/object-getter-setter-shorthand.js
@@ -0,0 +1,62 @@
+test("normal methods named get and set", () => {
+ let o = {
+ get() {
+ return 5;
+ },
+ set() {
+ return 10;
+ },
+ };
+ expect(o.get()).toBe(5);
+ expect(o.set()).toBe(10);
+});
+
+test("basic get and set", () => {
+ let o = {
+ get x() {
+ return 5;
+ },
+ set x(_) {},
+ };
+ expect(o.x).toBe(5);
+ o.x = 10;
+ expect(o.x).toBe(5);
+});
+
+test("get and set with 'this'", () => {
+ let o = {
+ get x() {
+ return this._x + 1;
+ },
+ set x(value) {
+ this._x = value + 1;
+ },
+ };
+
+ expect(o.x).toBeNaN();
+ o.x = 10;
+ expect(o.x).toBe(12);
+ o.x = 20;
+ expect(o.x).toBe(22);
+});
+
+test("multiple getters", () => {
+ let o = {
+ get x() {
+ return 5;
+ },
+ get x() {
+ return 10;
+ },
+ };
+ expect(o.x).toBe(10);
+});
+
+test("setter return value", () => {
+ o = {
+ set x(value) {
+ return 10;
+ },
+ };
+ expect((o.x = 20)).toBe(20);
+});