Files
n8n-openai-adapter/lib/elixir/test/elixir/option_parser_test.exs
T

114 lines
4.6 KiB
Elixir

Code.require_file "test_helper.exs", __DIR__
defmodule OptionParserTest do
use ExUnit.Case, async: true
test "parses boolean option" do
assert OptionParser.parse(["--docs"]) == { [docs: true], [] }
end
test "parses alias boolean option" do
assert OptionParser.parse(["-d"]) == { [d: true], [] }
end
test "parses alias boolean option as the alias key" do
assert OptionParser.parse(["-d"], aliases: [d: :docs]) == { [docs: true], [] }
end
test "parses more than one boolean option" do
assert OptionParser.parse(["--docs", "--compile"]) == { [docs: true, compile: true], [] }
end
test "parses more than one boolean options as the alias" do
assert OptionParser.parse(["--d", "--compile"], aliases: [d: :docs]) == { [docs: true, compile: true], [] }
end
test "parses key/value option" do
assert OptionParser.parse(["--source", "form_docs/"]) == { [source: "form_docs/"], [] }
end
test "parses key=value option" do
assert OptionParser.parse(["--source=form_docs/", "other"]) == { [source: "form_docs/"], ["other"] }
end
test "parses alias key/value option" do
assert OptionParser.parse(["-s", "from_docs/"]) == { [s: "from_docs/"], [] }
end
test "parses alias key/value option as the alias" do
assert OptionParser.parse(["-s", "from_docs/"], aliases: [s: :source]) == { [source: "from_docs/"], [] }
end
test "parses alias key=value option as the alias" do
assert OptionParser.parse(["-s=from_docs/", "other"], aliases: [s: :source]) == { [source: "from_docs/"], ["other"] }
end
test "parses configured booleans" do
assert OptionParser.parse(["--docs=false"], switches: [docs: :boolean]) == { [docs: false], [] }
assert OptionParser.parse(["--docs=true"], switches: [docs: :boolean]) == { [docs: true], [] }
assert OptionParser.parse(["--docs=other"], switches: [docs: :boolean]) == { [docs: false], [] }
assert OptionParser.parse(["--docs", "foo"], switches: [docs: :boolean]) == { [docs: true], ["foo"] }
assert OptionParser.parse(["--docs", "foo"], switches: [docs: :boolean]) == { [docs: true], ["foo"] }
assert OptionParser.parse(["--no-docs", "foo"], switches: [docs: :boolean]) == { [docs: false], ["foo"] }
end
test "does not set unparsed booleans" do
assert OptionParser.parse(["foo"], switches: [docs: :boolean]) == { [], ["foo"] }
end
test "keeps options on configured keep" do
assert OptionParser.parse(["--require", "foo", "--require", "bar", "baz"], switches: [require: :keep]) ==
{ [require: "foo", require: "bar"], ["baz"] }
end
test "parses configured integers" do
assert OptionParser.parse(["--value", "1", "foo"], switches: [value: :integer]) == { [value: 1], ["foo"] }
assert OptionParser.parse(["--value", "WAT", "foo"], switches: [value: :integer]) == { [], ["foo"] }
end
test "parses configured integers with keep" do
assert OptionParser.parse(["--value", "1", "--value", "2", "foo"],
switches: [value: [:integer, :keep]]) == { [value: 1, value: 2], ["foo"] }
end
test "parses configured floats" do
assert OptionParser.parse(["--value", "1.0", "foo"], switches: [value: :float]) == { [value: 1.0], ["foo"] }
assert OptionParser.parse(["--value", "WAT", "foo"], switches: [value: :float]) == { [], ["foo"] }
end
test "parses no switches as flags" do
assert OptionParser.parse(["--no-docs", "foo"]) == { [no_docs: true], ["foo"] }
end
test "parses more than one key/value options" do
assert OptionParser.parse(["--source", "from_docs/", "--docs", "show"]) ==
{ [source: "from_docs/", docs: "show"], [] }
end
test "overrides options by default" do
assert OptionParser.parse(["--require", "foo", "--require", "bar", "baz"]) ==
{ [require: "bar"], ["baz"] }
end
test "parses mixed options" do
options = OptionParser.parse(["--source", "from_docs/", "--compile", "-x"])
assert options == { [source: "from_docs/", compile: true, x: true], [] }
end
test "stops on first non option arguments" do
options = OptionParser.parse_head(["--source", "from_docs/", "test/enum_test.exs", "--verbose"])
assert options == { [source: "from_docs/"], ["test/enum_test.exs", "--verbose"] }
end
test "stops on --" do
options = OptionParser.parse_head(["--source", "from_docs/", "--", "1", "2", "3"])
assert options == { [source: "from_docs/"], ["--", "1", "2", "3"] }
end
test "goes beyond the first non option arguments" do
options = OptionParser.parse(["--source", "from_docs/", "test/enum_test.exs", "--verbose"])
assert options == { [source: "from_docs/", verbose: true], ["test/enum_test.exs"] }
end
end