@mafalda-sfu/mediasoup-node-tests
Version:
Node.js tests extracted from Mediasoup
55 lines (54 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepFreeze = deepFreeze;
exports.expect_rejects_toThrow = expect_rejects_toThrow;
exports.expect_not_toThrow = expect_not_toThrow;
exports.expect_toThrow = expect_toThrow;
/**
* Make an object or array recursively immutable.
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze.
*/
function deepFreeze(object) {
// Retrieve the property names defined on object.
const propNames = Reflect.ownKeys(object);
// Freeze properties before freezing self.
for (const name of propNames) {
const value = object[name];
if ((value && typeof value === 'object') || typeof value === 'function') {
deepFreeze(value);
}
}
return Object.freeze(object);
}
async function expect_rejects_toThrow(expression, errorMessage) {
try {
await expression;
}
catch (error) {
if (!errorMessage || error.toString().includes(errorMessage))
return;
throw error;
}
throw new Error('Expression did not throw');
}
function expect_not_toThrow(fn, errorMessage) {
try {
fn();
}
catch (error) {
if (!errorMessage || error.toString().includes(errorMessage))
throw error;
}
}
function expect_toThrow(fn, errorMessage) {
try {
fn();
}
catch (error) {
if (!errorMessage || error.toString().includes(errorMessage))
return;
console.log(error, error.name, error.toString(), errorMessage);
throw error;
}
throw new Error('Function did not throw');
}