Add exec tests
This commit is contained in:
14
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/assignment-left.js
vendored
Normal file
14
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/assignment-left.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0,
|
||||
},
|
||||
};
|
||||
|
||||
obj?.a.b = 1;
|
||||
assert.equal(obj.a.b, 1);
|
||||
|
||||
obj?.a?.b = 2;
|
||||
assert.equal(obj.a.b, 2);
|
||||
|
||||
obj?.b?.b = 3;
|
||||
assert.equal(obj.b, undefined);
|
||||
26
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/assignment-right.js
vendored
Normal file
26
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/assignment-right.js
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
const obj = {
|
||||
a: {
|
||||
b: {
|
||||
c: {
|
||||
d: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const a = obj?.a;
|
||||
assert.equal(a, obj.a);
|
||||
|
||||
const b = obj?.a?.b;
|
||||
assert.equal(b, obj.a.b);
|
||||
|
||||
const bad = obj?.b?.b;
|
||||
assert.equal(bad, undefined);
|
||||
|
||||
let val;
|
||||
val = obj?.a?.b;
|
||||
assert.equal(val, obj.a.b);
|
||||
|
||||
assert.throws(() => {
|
||||
const bad = obj?.b.b;
|
||||
});
|
||||
61
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/call.js
vendored
Normal file
61
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/call.js
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
let calls = 0;
|
||||
const obj = {
|
||||
a: {
|
||||
b(val) {
|
||||
assert.equal(val, 1);
|
||||
assert.equal(this, obj.a);
|
||||
return calls++;
|
||||
},
|
||||
},
|
||||
c(val) {
|
||||
assert.equal(val, 1);
|
||||
assert.equal(this, obj);
|
||||
return calls++;
|
||||
},
|
||||
};
|
||||
|
||||
let ab = obj?.a?.b(1);
|
||||
assert.equal(ab, 0);
|
||||
|
||||
ab = obj?.a.b(1);
|
||||
assert.equal(ab, 1);
|
||||
|
||||
ab = obj?.a?.b?.(1);
|
||||
assert.equal(ab, 2);
|
||||
|
||||
ab = obj?.a.b?.(1);
|
||||
assert.equal(ab, 3);
|
||||
|
||||
ab = obj?.b?.b(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
ab = obj?.b?.b?.(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
let c = obj?.c(1);
|
||||
assert.equal(c, 4);
|
||||
|
||||
c = obj?.c?.(1);
|
||||
assert.equal(c, 5);
|
||||
|
||||
c = obj?.d?.(1);
|
||||
assert.equal(c, undefined);
|
||||
|
||||
obj?.a.b(1);
|
||||
assert.equal(calls, 7);
|
||||
|
||||
obj?.a?.b(1);
|
||||
assert.equal(calls, 8);
|
||||
|
||||
obj?.a?.b?.(1);
|
||||
assert.equal(calls, 9);
|
||||
|
||||
obj?.a.b?.(1);
|
||||
assert.equal(calls, 10);
|
||||
|
||||
obj?.c?.(1);
|
||||
assert.equal(calls, 11);
|
||||
|
||||
obj?.b?.b(1);
|
||||
obj?.b?.b?.(1);
|
||||
obj?.d?.(1);
|
||||
20
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/delete.js
vendored
Normal file
20
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/delete.js
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
const obj = {
|
||||
a: {
|
||||
b: 0,
|
||||
},
|
||||
};
|
||||
|
||||
let test = delete obj?.a?.b;
|
||||
assert.equal(obj.a.b, undefined);
|
||||
assert.equal(test, true);
|
||||
|
||||
test = delete obj?.a.b;
|
||||
assert.equal(obj.a.b, undefined);
|
||||
assert.equal(test, true);
|
||||
|
||||
test = delete obj?.b?.b;
|
||||
assert.equal(obj.b, undefined);
|
||||
assert.equal(test, undefined);
|
||||
|
||||
delete obj?.a;
|
||||
assert.equal(obj.a, undefined);
|
||||
65
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/new.js
vendored
Normal file
65
packages/babel-plugin-transform-optional-chaining/test/fixtures/execute/new.js
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
let calls = 0;
|
||||
const obj = {
|
||||
a: {
|
||||
b: class {
|
||||
constructor(val) {
|
||||
assert.equal(val, 1);
|
||||
assert(this instanceof obj.a.b);
|
||||
calls++;
|
||||
}
|
||||
},
|
||||
},
|
||||
c: class {
|
||||
constructor(val) {
|
||||
assert.equal(val, 1);
|
||||
assert(this instanceof obj.c);
|
||||
calls++;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
let ab = new obj?.a?.b(1);
|
||||
assert(ab instanceof obj.a.b);
|
||||
|
||||
ab = new obj?.a.b(1);
|
||||
assert(ab instanceof obj.a.b);
|
||||
|
||||
ab = new obj?.a?.b?.(1);
|
||||
assert(ab instanceof obj.a.b);
|
||||
|
||||
ab = new obj?.a.b?.(1);
|
||||
assert(ab instanceof obj.a.b);
|
||||
|
||||
ab = new obj?.b?.b(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
ab = new obj?.b?.b?.(1);
|
||||
assert.equal(ab, undefined);
|
||||
|
||||
let c = new obj?.c(1);
|
||||
assert(c instanceof obj.c);
|
||||
|
||||
c = new obj?.c?.(1);
|
||||
assert(c instanceof obj.c);
|
||||
|
||||
c = new obj?.d?.(1);
|
||||
assert.equal(c, undefined);
|
||||
|
||||
new obj?.a.b(1);
|
||||
assert.equal(calls, 7);
|
||||
|
||||
new obj?.a?.b(1);
|
||||
assert.equal(calls, 8);
|
||||
|
||||
new obj?.a?.b?.(1);
|
||||
assert.equal(calls, 9);
|
||||
|
||||
new obj?.a.b?.(1);
|
||||
assert.equal(calls, 10);
|
||||
|
||||
new obj?.c?.(1);
|
||||
assert.equal(calls, 11);
|
||||
|
||||
new obj?.b?.b(1);
|
||||
new obj?.b?.b?.(1);
|
||||
new obj?.d?.(1);
|
||||
Reference in New Issue
Block a user