diff options
Diffstat (limited to 'date-fns/src/_lib/requiredArgs')
-rw-r--r-- | date-fns/src/_lib/requiredArgs/index.ts | 12 | ||||
-rw-r--r-- | date-fns/src/_lib/requiredArgs/test.js | 37 |
2 files changed, 49 insertions, 0 deletions
diff --git a/date-fns/src/_lib/requiredArgs/index.ts b/date-fns/src/_lib/requiredArgs/index.ts new file mode 100644 index 0000000..bdbb950 --- /dev/null +++ b/date-fns/src/_lib/requiredArgs/index.ts @@ -0,0 +1,12 @@ +export default function requiredArgs(required: number, args: IArguments) { + if (args.length < required) { + throw new TypeError( + required + + ' argument' + + (required > 1 ? 's' : '') + + ' required, but only ' + + args.length + + ' present' + ) + } +} diff --git a/date-fns/src/_lib/requiredArgs/test.js b/date-fns/src/_lib/requiredArgs/test.js new file mode 100644 index 0000000..a6cbe4a --- /dev/null +++ b/date-fns/src/_lib/requiredArgs/test.js @@ -0,0 +1,37 @@ +// @flow +/* eslint-env mocha */ + +import assert from 'power-assert' +import requiredArgs from '.' + +describe('requiredArgs', function () { + function wrapperFn(required) { + // $ExpectedMistake + return function () { + requiredArgs(required, arguments) + } + } + const twoArgsRequired = wrapperFn(2) + + describe('with correct number of passed arguments', function () { + it('does not throw an error', function () { + assert.doesNotThrow(() => twoArgsRequired(1, 2)) + }) + }) + + describe('with wrong number of arguments', function () { + it('throws correct error message', function () { + assert.throws( + function () { + twoArgsRequired(1) + }, + function (err) { + return ( + err instanceof TypeError && + err.message === '2 arguments required, but only 1 present' + ) + } + ) + }) + }) +}) |