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

68 lines
1.1 KiB
JavaScript

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