diff options
| author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2018-12-19 19:06:31 +0100 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-19 13:06:31 -0500 |
| commit | 700b4ce0d99dca02fe192c8722ab1bb7a33dc709 (patch) | |
| tree | 86d4365a732ed349199711c1814fb00dd9253677 /flags/tests/bool.ts | |
| parent | 2351df72db2be5906a7441e16c883926051284b1 (diff) | |
Add flags module (denoland/deno_std#32)
Original: https://github.com/denoland/deno_std/commit/b15b0d20d722ad16ebba363c0e8e35bbbc869f20
Diffstat (limited to 'flags/tests/bool.ts')
| -rwxr-xr-x | flags/tests/bool.ts | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/flags/tests/bool.ts b/flags/tests/bool.ts new file mode 100755 index 000000000..b2b96dfed --- /dev/null +++ b/flags/tests/bool.ts @@ -0,0 +1,158 @@ +import { test, assertEqual } from "https://deno.land/x/testing/testing.ts"; +import parseArgs from "../index.ts"; + +test(function flagBooleanDefaultFalse() { + const argv = parseArgs(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false } + }); + + assertEqual(argv, { + verbose: false, + t: false, + _: ['moo'] + }); + + assertEqual(typeof argv.verbose, 'boolean'); + assertEqual(typeof argv.t, 'boolean'); +}); + +test(function booleanGroups() { + const argv = parseArgs([ '-x', '-z', 'one', 'two', 'three' ], { + boolean: ['x','y','z'] + }); + + assertEqual(argv, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ] + }); + + assertEqual(typeof argv.x, 'boolean'); + assertEqual(typeof argv.y, 'boolean'); + assertEqual(typeof argv.z, 'boolean'); +}); + +test(function booleanAndAliasWithChainableApi() { + const aliased = [ '-h', 'derp' ]; + const regular = [ '--herp', 'derp' ]; + const opts = { + herp: { alias: 'h', boolean: true } + }; + const aliasedArgv = parseArgs(aliased, { + boolean: 'herp', + alias: { h: 'herp' } + }); + const propertyArgv = parseArgs(regular, { + boolean: 'herp', + alias: { h: 'herp' } + }); + const expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + + assertEqual(aliasedArgv, expected); + assertEqual(propertyArgv, expected); +}); + +test(function booleanAndAliasWithOptionsHash() { + const aliased = [ '-h', 'derp' ]; + const regular = [ '--herp', 'derp' ]; + const opts = { + alias: { 'h': 'herp' }, + boolean: 'herp' + }; + const aliasedArgv = parseArgs(aliased, opts); + const propertyArgv = parseArgs(regular, opts); + const expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + assertEqual(aliasedArgv, expected); + assertEqual(propertyArgv, expected); +}); + +test(function booleanAndAliasArrayWithOptionsHash() { + const aliased = [ '-h', 'derp' ]; + const regular = [ '--herp', 'derp' ]; + const alt = [ '--harp', 'derp' ]; + const opts = { + alias: { 'h': ['herp', 'harp'] }, + boolean: 'h' + }; + const aliasedArgv = parseArgs(aliased, opts); + const propertyArgv = parseArgs(regular, opts); + const altPropertyArgv = parseArgs(alt, opts); + const expected = { + harp: true, + herp: true, + h: true, + '_': [ 'derp' ] + }; + assertEqual(aliasedArgv, expected); + assertEqual(propertyArgv, expected); + assertEqual(altPropertyArgv, expected); +}); + +test(function booleanAndAliasUsingExplicitTrue() { + const aliased = [ '-h', 'true' ]; + const regular = [ '--herp', 'true' ]; + const opts = { + alias: { h: 'herp' }, + boolean: 'h' + }; + const aliasedArgv = parseArgs(aliased, opts); + const propertyArgv = parseArgs(regular, opts); + const expected = { + herp: true, + h: true, + '_': [ ] + }; + + assertEqual(aliasedArgv, expected); + assertEqual(propertyArgv, expected); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +// boolean and --x=true +test(function booleanAndNonBoolean() { + const parsed = parseArgs(['--boool', '--other=true'], { + boolean: 'boool' + }); + + assertEqual(parsed.boool, true); + assertEqual(parsed.other, 'true'); + + const parsed2 = parseArgs(['--boool', '--other=false'], { + boolean: 'boool' + }); + + assertEqual(parsed2.boool, true); + assertEqual(parsed2.other, 'false'); +}); + +test(function booleanParsingTrue() { + const parsed = parseArgs(['--boool=true'], { + default: { + boool: false + }, + boolean: ['boool'] + }); + + assertEqual(parsed.boool, true); +}); + +test(function booleanParsingFalse() { + const parsed = parseArgs(['--boool=false'], { + default: { + boool: true + }, + boolean: ['boool'] + }); + + assertEqual(parsed.boool, false); +}); |
