UNPKG

@push.rocks/smartexpect

Version:

A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.

53 lines 4.65 kB
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=