2025-04-28 19:10:27 +00:00
|
|
|
import { Assertion } from '../smartexpect.classes.assertion.js';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Namespace for function-specific matchers
|
|
|
|
*/
|
|
|
|
export class FunctionMatchers {
|
|
|
|
constructor(private assertion: Assertion<Function>) {}
|
|
|
|
|
|
|
|
toThrow(expectedError?: any) {
|
2025-04-28 19:58:32 +00:00
|
|
|
return this.assertion.customAssertion(
|
|
|
|
(value) => {
|
|
|
|
let threw = false;
|
|
|
|
try {
|
|
|
|
(value as Function)();
|
|
|
|
} catch (e: any) {
|
|
|
|
threw = true;
|
|
|
|
if (expectedError) {
|
|
|
|
if (typeof expectedError === 'function') {
|
|
|
|
return e instanceof expectedError;
|
|
|
|
}
|
|
|
|
return e === expectedError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return threw;
|
|
|
|
},
|
|
|
|
`Expected function to throw${expectedError ? ` ${expectedError}` : ''}`
|
|
|
|
);
|
2025-04-28 19:10:27 +00:00
|
|
|
}
|
|
|
|
}
|