diff options
| author | Axetroy <troy450409405@gmail.com> | 2019-03-20 01:24:11 +0800 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2019-03-19 13:24:11 -0400 |
| commit | aae6ea51a496301011c41a874a25b77596d5c560 (patch) | |
| tree | edfcefbbbae67a1e59baa6a8d5d1fd5b6009dfec /flags/bool_test.ts | |
| parent | adb19cbae366288a152dd3ab8293e5aea2edc80b (diff) | |
move test file out of tests dir in flags module (denoland/deno_std#293)
Original: https://github.com/denoland/deno_std/commit/e80f14489084d748bb52c4311519f5d0c7696f47
Diffstat (limited to 'flags/bool_test.ts')
| -rwxr-xr-x | flags/bool_test.ts | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/flags/bool_test.ts b/flags/bool_test.ts new file mode 100755 index 000000000..820393543 --- /dev/null +++ b/flags/bool_test.ts @@ -0,0 +1,157 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { test } from "../testing/mod.ts"; +import { assertEquals } from "../testing/asserts.ts"; +import { parse } from "./mod.ts"; + +test(function flagBooleanDefaultFalse() { + const argv = parse(["moo"], { + boolean: ["t", "verbose"], + default: { verbose: false, t: false } + }); + + assertEquals(argv, { + verbose: false, + t: false, + _: ["moo"] + }); + + assertEquals(typeof argv.verbose, "boolean"); + assertEquals(typeof argv.t, "boolean"); +}); + +test(function booleanGroups() { + const argv = parse(["-x", "-z", "one", "two", "three"], { + boolean: ["x", "y", "z"] + }); + + assertEquals(argv, { + x: true, + y: false, + z: true, + _: ["one", "two", "three"] + }); + + assertEquals(typeof argv.x, "boolean"); + assertEquals(typeof argv.y, "boolean"); + assertEquals(typeof argv.z, "boolean"); +}); + +test(function booleanAndAliasWithChainableApi() { + const aliased = ["-h", "derp"]; + const regular = ["--herp", "derp"]; + const aliasedArgv = parse(aliased, { + boolean: "herp", + alias: { h: "herp" } + }); + const propertyArgv = parse(regular, { + boolean: "herp", + alias: { h: "herp" } + }); + const expected = { + herp: true, + h: true, + _: ["derp"] + }; + + assertEquals(aliasedArgv, expected); + assertEquals(propertyArgv, expected); +}); + +test(function booleanAndAliasWithOptionsHash() { + const aliased = ["-h", "derp"]; + const regular = ["--herp", "derp"]; + const opts = { + alias: { h: "herp" }, + boolean: "herp" + }; + const aliasedArgv = parse(aliased, opts); + const propertyArgv = parse(regular, opts); + const expected = { + herp: true, + h: true, + _: ["derp"] + }; + assertEquals(aliasedArgv, expected); + assertEquals(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 = parse(aliased, opts); + const propertyArgv = parse(regular, opts); + const altPropertyArgv = parse(alt, opts); + const expected = { + harp: true, + herp: true, + h: true, + _: ["derp"] + }; + assertEquals(aliasedArgv, expected); + assertEquals(propertyArgv, expected); + assertEquals(altPropertyArgv, expected); +}); + +test(function booleanAndAliasUsingExplicitTrue() { + const aliased = ["-h", "true"]; + const regular = ["--herp", "true"]; + const opts = { + alias: { h: "herp" }, + boolean: "h" + }; + const aliasedArgv = parse(aliased, opts); + const propertyArgv = parse(regular, opts); + const expected = { + herp: true, + h: true, + _: [] + }; + + assertEquals(aliasedArgv, expected); + assertEquals(propertyArgv, expected); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +// boolean and --x=true +test(function booleanAndNonBoolean() { + const parsed = parse(["--boool", "--other=true"], { + boolean: "boool" + }); + + assertEquals(parsed.boool, true); + assertEquals(parsed.other, "true"); + + const parsed2 = parse(["--boool", "--other=false"], { + boolean: "boool" + }); + + assertEquals(parsed2.boool, true); + assertEquals(parsed2.other, "false"); +}); + +test(function booleanParsingTrue() { + const parsed = parse(["--boool=true"], { + default: { + boool: false + }, + boolean: ["boool"] + }); + + assertEquals(parsed.boool, true); +}); + +test(function booleanParsingFalse() { + const parsed = parse(["--boool=false"], { + default: { + boool: true + }, + boolean: ["boool"] + }); + + assertEquals(parsed.boool, false); +}); |
