UNPKG

funval

Version:

A minimalist library for data validation using functions interfaces.

128 lines (76 loc) 11.8 kB
"use strict"; require("mocha"); var _chai = require("chai"); var _comparison = require("./comparison"); describe('comparison', () => { it('Equals', () => { const foo = (0, _comparison.Equals)('foo'); _chai.assert.equal(foo('foo'), 'foo'); // eslint-disable-next-line @typescript-eslint/no-explicit-any _chai.assert.throws(() => foo('foo1'), TypeError); // eslint-disable-next-line @typescript-eslint/no-explicit-any _chai.assert.throws(() => foo(['foo']), TypeError); const objRef = { foo: 1 }; const obj = (0, _comparison.Equals)(objRef); _chai.assert.equal(obj(objRef), objRef); _chai.assert.throws(() => obj({ foo: 1 }), TypeError); }); it('GreaterThan', () => { const gt5 = (0, _comparison.GreaterThan)(5, 'my error'); _chai.assert.equal(gt5(6), 6); _chai.assert.equal(gt5(5.001), 5.001); _chai.assert.equal(gt5(100), 100); _chai.assert.throws(() => gt5(5), /^my error$/); _chai.assert.throws(() => gt5(4), TypeError); _chai.assert.throws(() => gt5(-5), TypeError); }); it('GreaterThanEqual', () => { const gte5 = (0, _comparison.GreaterThanEqual)(5, 'my error'); _chai.assert.equal(gte5(5), 5); _chai.assert.equal(gte5(6), 6); _chai.assert.equal(gte5(10.5), 10.5); _chai.assert.throws(() => gte5(4), /^my error$/); _chai.assert.throws(() => gte5(-5), TypeError); }); it('LessThan', () => { const lt5 = (0, _comparison.LessThan)(5, 'my error'); _chai.assert.equal(lt5(4), 4); _chai.assert.equal(lt5(4.999), 4.999); _chai.assert.equal(lt5(0), 0); _chai.assert.throws(() => lt5(5), /^my error$/); _chai.assert.throws(() => lt5(10), TypeError); }); it('LessThanEqual', () => { const lt5 = (0, _comparison.LessThanEqual)(5, 'my error'); _chai.assert.equal(lt5(5), 5); _chai.assert.equal(lt5(4), 4); _chai.assert.equal(lt5(4.999), 4.999); _chai.assert.equal(lt5(0), 0); _chai.assert.throws(() => lt5(6), /^my error$/); _chai.assert.throws(() => lt5(10), TypeError); }); it('Between', () => { const both = (0, _comparison.Between)(1, 5, 'my error'); _chai.assert.equal(both(5), 5); _chai.assert.equal(both(2.5), 2.5); _chai.assert.equal(both(1), 1); _chai.assert.throws(() => both(0), /^my error$/); _chai.assert.throws(() => both(6), TypeError); const gte = (0, _comparison.Between)(1, null, 'my error'); _chai.assert.equal(gte(8), 8); _chai.assert.equal(gte(2.5), 2.5); _chai.assert.equal(gte(1), 1); _chai.assert.throws(() => gte(0), /^my error$/); _chai.assert.throws(() => gte(0.99), TypeError); const lte = (0, _comparison.Between)(null, 5, 'my error'); _chai.assert.equal(lte(5), 5); _chai.assert.equal(lte(2.5), 2.5); _chai.assert.equal(lte(1), 1); _chai.assert.equal(lte(-100), -100); _chai.assert.throws(() => lte(6), /^my error$/); _chai.assert.throws(() => lte(5.01), TypeError); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0b3JzL2NvbXBhcmlzb24udGVzdC50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZm9vIiwiYXNzZXJ0IiwiZXF1YWwiLCJ0aHJvd3MiLCJUeXBlRXJyb3IiLCJvYmpSZWYiLCJvYmoiLCJndDUiLCJndGU1IiwibHQ1IiwiYm90aCIsImd0ZSIsImx0ZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFFQTs7QUFTQUEsUUFBUSxDQUFDLFlBQUQsRUFBZSxNQUFNO0FBQzNCQyxFQUFBQSxFQUFFLENBQUMsUUFBRCxFQUFXLE1BQU07QUFDakIsVUFBTUMsR0FBRyxHQUFHLHdCQUFPLEtBQVAsQ0FBWjs7QUFFQUMsaUJBQU9DLEtBQVAsQ0FBYUYsR0FBRyxDQUFDLEtBQUQsQ0FBaEIsRUFBeUIsS0FBekIsRUFIaUIsQ0FLakI7OztBQUNBQyxpQkFBT0UsTUFBUCxDQUFjLE1BQU1ILEdBQUcsQ0FBQyxNQUFELENBQXZCLEVBQXdDSSxTQUF4QyxFQU5pQixDQVFqQjs7O0FBQ0FILGlCQUFPRSxNQUFQLENBQWMsTUFBTUgsR0FBRyxDQUFDLENBQUMsS0FBRCxDQUFELENBQXZCLEVBQXlDSSxTQUF6Qzs7QUFFQSxVQUFNQyxNQUFNLEdBQUc7QUFBRUwsTUFBQUEsR0FBRyxFQUFFO0FBQVAsS0FBZjtBQUNBLFVBQU1NLEdBQUcsR0FBRyx3QkFBT0QsTUFBUCxDQUFaOztBQUVBSixpQkFBT0MsS0FBUCxDQUFhSSxHQUFHLENBQUNELE1BQUQsQ0FBaEIsRUFBMEJBLE1BQTFCOztBQUNBSixpQkFBT0UsTUFBUCxDQUFjLE1BQU1HLEdBQUcsQ0FBQztBQUFFTixNQUFBQSxHQUFHLEVBQUU7QUFBUCxLQUFELENBQXZCLEVBQXFDSSxTQUFyQztBQUNELEdBaEJDLENBQUY7QUFrQkFMLEVBQUFBLEVBQUUsQ0FBQyxhQUFELEVBQWdCLE1BQU07QUFDdEIsVUFBTVEsR0FBRyxHQUFHLDZCQUFZLENBQVosRUFBZSxVQUFmLENBQVo7O0FB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QUF3QixDQUFDLEdBQXpCOztBQUVBWCxpQkFBT0UsTUFBUCxDQUFjLE1BQU1TLEdBQUcsQ0FBQyxDQUFELENBQXZCLEVBQTRCLFlBQTVCOztBQUNBWCxpQkFBT0UsTUFBUCxDQUFjLE1BQU1TLEdBQUcsQ0FBQyxJQUFELENBQXZCLEVBQStCUixTQUEvQjtBQUNELEdBNUJDLENBQUY7QUE2QkQsQ0E5Rk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnbW9jaGEnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5cbmltcG9ydCB7XG4gIEJldHdlZW4sXG4gIEVxdWFscyxcbiAgR3JlYXRlclRoYW4sXG4gIEdyZWF0ZXJUaGFuRXF1YWwsXG4gIExlc3NUaGFuLFxuICBMZXNzVGhhbkVxdWFsLFxufSBmcm9tICcuL2NvbXBhcmlzb24nO1xuXG5kZXNjcmliZSgnY29tcGFyaXNvbicsICgpID0+IHtcbiAgaXQoJ0VxdWFscycsICgpID0+IHtcbiAgICBjb25zdCBmb28gPSBFcXVhbHMoJ2ZvbycgYXMgJ2ZvbycpO1xuXG4gICAgYXNzZXJ0LmVxdWFsKGZvbygnZm9vJyksICdmb28nKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oJ2ZvbzEnIGFzIGFueSksIFR5cGVFcnJvcik7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZm9vKFsnZm9vJ10gYXMgYW55KSwgVHlwZUVycm9yKTtcblxuICAgIGNvbnN0IG9ialJlZiA9IHsgZm9vOiAxIH07XG4gICAgY29uc3Qgb2JqID0gRXF1YWxzKG9ialJlZik7XG5cbiAgICBhc3NlcnQuZXF1YWwob2JqKG9ialJlZiksIG9ialJlZik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBvYmooeyBmb286IDEgfSksIFR5cGVFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdHcmVhdGVyVGhhbicsICgpID0+IHtcbiAgICBjb25zdCBndDUgPSBHcmVhdGVyVGhhbig1LCAnbXkgZXJyb3InKTtcblxuICAgIGFzc2VydC5lcXVhbChndDUoNiksIDYpO1xuICAgIGFzc2VydC5lcXVhbChndDUoNS4wMDEpLCA1LjAwMSk7XG4gICAgYXNzZXJ0LmVxdWFsKGd0NSgxMDApLCAxMDApO1xuXG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndDUoNSksIC9ebXkgZXJyb3IkLyk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndDUoNCksIFR5cGVFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndDUoLTUpLCBUeXBlRXJyb3IpO1xuICB9KTtcblxuICBpdCgnR3JlYXRlclRoYW5FcXVhbCcsICgpID0+IHtcbiAgICBjb25zdCBndGU1ID0gR3JlYXRlclRoYW5FcXVhbCg1LCAnbXkgZXJyb3InKTtcblxuICAgIGFzc2VydC5lcXVhbChndGU1KDUpLCA1KTtcbiAgICBhc3NlcnQuZXF1YWwoZ3RlNSg2KSwgNik7XG4gICAgYXNzZXJ0LmVxdWFsKGd0ZTUoMTAuNSksIDEwLjUpO1xuXG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndGU1KDQpLCAvXm15IGVycm9yJC8pO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZ3RlNSgtNSksIFR5cGVFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdMZXNzVGhhbicsICgpID0+IHtcbiAgICBjb25zdCBsdDUgPSBMZXNzVGhhbig1LCAnbXkgZXJyb3InKTtcblxuICAgIGFzc2VydC5lcXVhbChsdDUoNCksIDQpO1xuICAgIGFzc2VydC5lcXVhbChsdDUoNC45OTkpLCA0Ljk5OSk7XG4gICAgYXNzZXJ0LmVxdWFsKGx0NSgwKSwgMCk7XG5cbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGx0NSg1KSwgL15teSBlcnJvciQvKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGx0NSgxMCksIFR5cGVFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdMZXNzVGhhbkVxdWFsJywgKCkgPT4ge1xuICAgIGNvbnN0IGx0NSA9IExlc3NUaGFuRXF1YWwoNSwgJ215IGVycm9yJyk7XG5cbiAgICBhc3NlcnQuZXF1YWwobHQ1KDUpLCA1KTtcbiAgICBhc3NlcnQuZXF1YWwobHQ1KDQpLCA0KTtcbiAgICBhc3NlcnQuZXF1YWwobHQ1KDQuOTk5KSwgNC45OTkpO1xuICAgIGFzc2VydC5lcXVhbChsdDUoMCksIDApO1xuXG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBsdDUoNiksIC9ebXkgZXJyb3IkLyk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBsdDUoMTApLCBUeXBlRXJyb3IpO1xuICB9KTtcblxuICBpdCgnQmV0d2VlbicsICgpID0+IHtcbiAgICBjb25zdCBib3RoID0gQmV0d2VlbigxLCA1LCAnbXkgZXJyb3InKTtcblxuICAgIGFzc2VydC5lcXVhbChib3RoKDUpLCA1KTtcbiAgICBhc3NlcnQuZXF1YWwoYm90aCgyLjUpLCAyLjUpO1xuICAgIGFzc2VydC5lcXVhbChib3RoKDEpLCAxKTtcblxuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYm90aCgwKSwgL15teSBlcnJvciQvKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJvdGgoNiksIFR5cGVFcnJvcik7XG5cbiAgICBjb25zdCBndGUgPSBCZXR3ZWVuKDEsIG51bGwsICdteSBlcnJvcicpO1xuXG4gICAgYXNzZXJ0LmVxdWFsKGd0ZSg4KSwgOCk7XG4gICAgYXNzZXJ0LmVxdWFsKGd0ZSgyLjUpLCAyLjUpO1xuICAgIGFzc2VydC5lcXVhbChndGUoMSksIDEpO1xuXG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndGUoMCksIC9ebXkgZXJyb3IkLyk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBndGUoMC45OSksIFR5cGVFcnJvcik7XG5cbiAgICBjb25zdCBsdGUgPSBCZXR3ZWVuKG51bGwsIDUsICdteSBlcnJvcicpO1xuXG4gICAgYXNzZXJ0LmVxdWFsKGx0ZSg1KSwgNSk7XG4gICAgYXNzZXJ0LmVxdWFsKGx0ZSgyLjUpLCAyLjUpO1xuICAgIGFzc2VydC5lcXVhbChsdGUoMSksIDEpO1xuICAgIGFzc2VydC5lcXVhbChsdGUoLTEwMCksIC0xMDApO1xuXG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBsdGUoNiksIC9ebXkgZXJyb3IkLyk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBsdGUoNS4wMSksIFR5cGVFcnJvcik7XG4gIH0pO1xufSk7XG4iXX0=