Justin Ridgewell 0740e61131 Use strict
2017-06-08 00:47:19 -04:00

64 lines
889 B
JavaScript

"use strict";
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);