You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.1 KiB
48 lines
2.1 KiB
import { __awaiter, __generator } from "tslib"; |
|
export var toBeGarbageCollected = function (actual) { |
|
return __awaiter(this, void 0, void 0, function () { |
|
var hint, pass, interval, timeout; |
|
return __generator(this, function (_a) { |
|
switch (_a.label) { |
|
case 0: |
|
hint = this.utils.matcherHint("toBeGarbageCollected"); |
|
if (!(actual instanceof WeakRef)) { |
|
throw new Error(hint + |
|
"\n\n" + |
|
"Expected value to be a WeakRef, but it was a ".concat(typeof actual, ".")); |
|
} |
|
pass = false; |
|
return [4 /*yield*/, Promise.race([ |
|
new Promise(function (resolve) { |
|
timeout = setTimeout(resolve, 1000); |
|
}), |
|
new Promise(function (resolve) { |
|
interval = setInterval(function () { |
|
global.gc(); |
|
pass = actual.deref() === undefined; |
|
if (pass) { |
|
resolve(); |
|
} |
|
}, 1); |
|
}), |
|
])]; |
|
case 1: |
|
_a.sent(); |
|
clearInterval(interval); |
|
clearTimeout(timeout); |
|
return [2 /*return*/, { |
|
pass: pass, |
|
message: function () { |
|
if (pass) { |
|
return (hint + |
|
"\n\n" + |
|
"Expected value to not be cache-collected, but it was."); |
|
} |
|
return (hint + "\n\n Expected value to be cache-collected, but it was not."); |
|
}, |
|
}]; |
|
} |
|
}); |
|
}); |
|
}; |
|
//# sourceMappingURL=toBeGarbageCollected.js.map
|