mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-30 14:57:59 +01:00
54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
|
import { makeNumberMatcher } from '../number';
|
||
|
|
||
|
describe('Number parsing', () => {
|
||
|
it('should match numbers directly', () => {
|
||
|
const intMatch = makeNumberMatcher(2067, 0, 'eq');
|
||
|
|
||
|
expect(intMatch('2066', 'value', 0)).toBe(false);
|
||
|
expect(intMatch('2067', 'value', 0)).toBe(true);
|
||
|
expect(intMatch('2068', 'value', 0)).toBe(false);
|
||
|
expect(intMatch('20677', 'value', 0)).toBe(false);
|
||
|
});
|
||
|
|
||
|
it('should match number ranges', () => {
|
||
|
const ltMatch = makeNumberMatcher(2067, 0, 'lt');
|
||
|
const lteMatch = makeNumberMatcher(2067, 0, 'lte');
|
||
|
const gtMatch = makeNumberMatcher(2067, 0, 'gt');
|
||
|
const gteMatch = makeNumberMatcher(2067, 0, 'gte');
|
||
|
|
||
|
expect(ltMatch('2066', 'value', 0)).toBe(true);
|
||
|
expect(ltMatch('2067', 'value', 0)).toBe(false);
|
||
|
expect(ltMatch('2068', 'value', 0)).toBe(false);
|
||
|
expect(lteMatch('2066', 'value', 0)).toBe(true);
|
||
|
expect(lteMatch('2067', 'value', 0)).toBe(true);
|
||
|
expect(lteMatch('2068', 'value', 0)).toBe(false);
|
||
|
expect(gtMatch('2066', 'value', 0)).toBe(false);
|
||
|
expect(gtMatch('2067', 'value', 0)).toBe(false);
|
||
|
expect(gtMatch('2068', 'value', 0)).toBe(true);
|
||
|
expect(gteMatch('2066', 'value', 0)).toBe(false);
|
||
|
expect(gteMatch('2067', 'value', 0)).toBe(true);
|
||
|
expect(gteMatch('2068', 'value', 0)).toBe(true);
|
||
|
});
|
||
|
|
||
|
it('should not match unparsed values', () => {
|
||
|
const matcher = makeNumberMatcher(2067, 0, 'eq');
|
||
|
|
||
|
expect(matcher('NaN', 'value', 0)).toBe(false);
|
||
|
expect(matcher('test', 'value', 0)).toBe(false);
|
||
|
});
|
||
|
|
||
|
it('should interpret fuzz as an inclusive range around the value', () => {
|
||
|
const matcher = makeNumberMatcher(2067, 3, 'eq');
|
||
|
|
||
|
expect(matcher('2063', 'value', 0)).toBe(false);
|
||
|
expect(matcher('2064', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2065', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2066', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2067', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2068', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2069', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2070', 'value', 0)).toBe(true);
|
||
|
expect(matcher('2071', 'value', 0)).toBe(false);
|
||
|
});
|
||
|
});
|