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
4 months ago
|
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
|