summaryrefslogtreecommitdiff
path: root/flags/bool_test.ts
diff options
context:
space:
mode:
authorAxetroy <troy450409405@gmail.com>2019-03-20 01:24:11 +0800
committerRyan Dahl <ry@tinyclouds.org>2019-03-19 13:24:11 -0400
commitaae6ea51a496301011c41a874a25b77596d5c560 (patch)
treeedfcefbbbae67a1e59baa6a8d5d1fd5b6009dfec /flags/bool_test.ts
parentadb19cbae366288a152dd3ab8293e5aea2edc80b (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-xflags/bool_test.ts157
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);
+});