inspect-wrapped-promise.js (4296B)
1 load(libdir + "asserts.js"); 2 3 ignoreUnhandledRejections(); 4 5 let g = newGlobal({newCompartment: true}); 6 let dbg = new Debugger(); 7 let gw = dbg.addDebuggee(g); 8 9 g.promise1 = new Promise(() => {}); 10 g.promise2 = Promise.resolve(42); 11 g.promise3 = Promise.reject(42); 12 g.promise4 = new Object(); 13 g.promise5 = Promise.prototype; 14 15 let promiseDO1 = gw.getOwnPropertyDescriptor('promise1').value; 16 let promiseDO2 = gw.getOwnPropertyDescriptor('promise2').value; 17 let promiseDO3 = gw.getOwnPropertyDescriptor('promise3').value; 18 let promiseDO4 = gw.getOwnPropertyDescriptor('promise4').value; 19 let promiseDO5 = gw.getOwnPropertyDescriptor('promise5').value; 20 21 assertEq(promiseDO1.isPromise, true); 22 assertEq(promiseDO2.isPromise, true); 23 assertEq(promiseDO3.isPromise, true); 24 assertEq(promiseDO4.isPromise, false); 25 assertEq(promiseDO5.isPromise, false); 26 27 assertEq(promiseDO1.promiseState, "pending"); 28 assertEq(promiseDO2.promiseState, "fulfilled"); 29 assertEq(promiseDO3.promiseState, "rejected"); 30 assertThrowsInstanceOf(function () { promiseDO4.promiseState }, TypeError); 31 assertThrowsInstanceOf(function () { promiseDO5.promiseState }, TypeError); 32 33 assertThrowsInstanceOf(function () { promiseDO1.promiseValue }, TypeError); 34 assertEq(promiseDO2.promiseValue, 42); 35 assertThrowsInstanceOf(function () { promiseDO3.promiseValue }, TypeError); 36 assertThrowsInstanceOf(function () { promiseDO4.promiseValue }, TypeError); 37 assertThrowsInstanceOf(function () { promiseDO5.promiseValue }, TypeError); 38 39 assertThrowsInstanceOf(function () { promiseDO1.promiseReason }, TypeError); 40 assertThrowsInstanceOf(function () { promiseDO2.promiseReason }, TypeError); 41 assertEq(promiseDO3.promiseReason, 42); 42 assertThrowsInstanceOf(function () { promiseDO4.promiseReason }, TypeError); 43 assertThrowsInstanceOf(function () { promiseDO5.promiseReason }, TypeError); 44 45 // Depending on whether async stacks are activated, this can be null, which 46 // has typeof null. 47 assertEq(typeof promiseDO1.promiseAllocationSite === "object", true); 48 assertEq(typeof promiseDO2.promiseAllocationSite === "object", true); 49 assertEq(typeof promiseDO3.promiseAllocationSite === "object", true); 50 assertThrowsInstanceOf(function () { promiseDO4.promiseAllocationSite }, TypeError); 51 assertThrowsInstanceOf(function () { promiseDO5.promiseAllocationSite }, TypeError); 52 53 // Depending on whether async stacks are activated, this can be null, which 54 // has typeof null. 55 assertThrowsInstanceOf(function () { promiseDO1.promiseResolutionSite }, TypeError); 56 assertEq(typeof promiseDO2.promiseResolutionSite === "object", true); 57 assertEq(typeof promiseDO3.promiseResolutionSite === "object", true); 58 assertThrowsInstanceOf(function () { promiseDO4.promiseResolutionSite }, TypeError); 59 assertThrowsInstanceOf(function () { promiseDO5.promiseResolutionSite }, TypeError); 60 61 assertEq(promiseDO1.promiseID, 1); 62 assertEq(promiseDO2.promiseID, 2); 63 assertEq(promiseDO3.promiseID, 3); 64 assertThrowsInstanceOf(function () { promiseDO4.promiseID }, TypeError); 65 assertThrowsInstanceOf(function () { promiseDO5.promiseID }, TypeError); 66 67 assertEq(typeof promiseDO1.promiseDependentPromises, "object"); 68 assertEq(typeof promiseDO2.promiseDependentPromises, "object"); 69 assertEq(typeof promiseDO3.promiseDependentPromises, "object"); 70 assertThrowsInstanceOf(function () { promiseDO4.promiseDependentPromises }, TypeError); 71 assertThrowsInstanceOf(function () { promiseDO5.promiseDependentPromises }, TypeError); 72 73 assertEq(promiseDO1.promiseDependentPromises.length, 0); 74 assertEq(promiseDO2.promiseDependentPromises.length, 0); 75 assertEq(promiseDO3.promiseDependentPromises.length, 0); 76 77 assertEq(typeof promiseDO1.promiseLifetime, "number"); 78 assertEq(typeof promiseDO2.promiseLifetime, "number"); 79 assertEq(typeof promiseDO3.promiseLifetime, "number"); 80 assertThrowsInstanceOf(function () { promiseDO4.promiseLifetime }, TypeError); 81 assertThrowsInstanceOf(function () { promiseDO5.promiseLifetime }, TypeError); 82 83 assertThrowsInstanceOf(function () { promiseDO1.promiseTimeToResolution }, TypeError); 84 assertEq(typeof promiseDO2.promiseTimeToResolution, "number"); 85 assertEq(typeof promiseDO3.promiseTimeToResolution, "number"); 86 assertThrowsInstanceOf(function () { promiseDO4.promiseTimeToResolution }, TypeError); 87 assertThrowsInstanceOf(function () { promiseDO5.promiseTimeToResolution }, TypeError);