diff options
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); +}); |
