@push.rocks/smartexpect
Version:
A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.
53 lines • 4.65 kB
JavaScript
import { Assertion } from '../smartexpect.classes.assertion.js';
/**
* Namespace for number-specific matchers
*/
export class NumberMatchers {
constructor(assertion) {
this.assertion = assertion;
}
toBeGreaterThan(value) {
return this.assertion.customAssertion((v) => v > value, `Expected number to be greater than ${value}`);
}
toBeLessThan(value) {
return this.assertion.customAssertion((v) => v < value, `Expected number to be less than ${value}`);
}
toBeGreaterThanOrEqual(value) {
return this.assertion.customAssertion((v) => v >= value, `Expected number to be greater than or equal to ${value}`);
}
toBeLessThanOrEqual(value) {
return this.assertion.customAssertion((v) => v <= value, `Expected number to be less than or equal to ${value}`);
}
toBeCloseTo(value, precision) {
return this.assertion.customAssertion((v) => {
const num = v;
const p = precision !== undefined ? precision : 2;
const diff = Math.abs(num - value);
const tolerance = 0.5 * Math.pow(10, -p);
return diff <= tolerance;
}, `Expected number to be close to ${value} within precision ${precision ?? 2}`);
}
/** Equality check for numbers */
toEqual(value) {
return this.assertion.customAssertion((v) => v === value, `Expected number to equal ${value}`);
}
/**
* Checks for NaN
*/
toBeNaN() {
return this.assertion.customAssertion((v) => Number.isNaN(v), `Expected number to be NaN`);
}
/**
* Checks for finite number
*/
toBeFinite() {
return this.assertion.customAssertion((v) => Number.isFinite(v), `Expected number to be finite`);
}
/**
* Checks if number is within inclusive range
*/
toBeWithinRange(min, max) {
return this.assertion.customAssertion((v) => v >= min && v <= max, `Expected number to be within range ${min} - ${max}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbmFtZXNwYWNlcy9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR2hFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsU0FBK0I7UUFBL0IsY0FBUyxHQUFULFNBQVMsQ0FBc0I7SUFBRyxDQUFDO0lBRXZELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLEdBQUcsS0FBSyxFQUM1QixzQ0FBc0MsS0FBSyxFQUFFLENBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVksR0FBRyxLQUFLLEVBQzVCLG1DQUFtQyxLQUFLLEVBQUUsQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLElBQUksS0FBSyxFQUM3QixrREFBa0QsS0FBSyxFQUFFLENBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFJLEtBQUssRUFDN0IsK0NBQStDLEtBQUssRUFBRSxDQUN2RCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhLEVBQUUsU0FBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNKLE1BQU0sR0FBRyxHQUFHLENBQVcsQ0FBQztZQUN4QixNQUFNLENBQUMsR0FBRyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksSUFBSSxTQUFTLENBQUM7UUFDM0IsQ0FBQyxFQUNELGtDQUFrQyxLQUFLLHFCQUFxQixTQUFTLElBQUksQ0FBQyxFQUFFLENBQzdFLENBQUM7SUFDSixDQUFDO0lBQ0QsaUNBQWlDO0lBQ2pDLE9BQU8sQ0FBQyxLQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLEtBQUssS0FBSyxFQUM5Qiw0QkFBNEIsS0FBSyxFQUFFLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBVyxDQUFDLEVBQ2hDLDJCQUEyQixDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUNEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQVcsQ0FBQyxFQUNuQyw4QkFBOEIsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFDRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBWSxJQUFJLEdBQUcsSUFBSyxDQUFZLElBQUksR0FBRyxFQUNuRCxzQ0FBc0MsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUNyRCxDQUFDO0lBQ0osQ0FBQztDQUNGIn0=