brew/Library/Homebrew/test/options_spec.rb

106 lines
2.7 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2017-02-25 19:34:46 +01:00
require "options"
RSpec.describe Options do
subject(:options) { described_class.new }
2017-02-25 19:34:46 +01:00
it "removes duplicate options" do
options << Option.new("foo")
options << Option.new("foo")
expect(options).to include("--foo")
expect(options.count).to eq(1)
2017-02-25 19:34:46 +01:00
end
2019-04-01 16:02:13 -04:00
it "preserves existing member when adding a duplicate" do
2017-02-25 19:34:46 +01:00
a = Option.new("foo", "bar")
b = Option.new("foo", "qux")
options << a << b
expect(options.count).to eq(1)
expect(options.first).to be(a)
expect(options.first.description).to eq(a.description)
2017-02-25 19:34:46 +01:00
end
specify "#include?" do
options << Option.new("foo")
expect(options).to include("--foo")
expect(options).to include("foo")
expect(options).to include(Option.new("foo"))
2017-02-25 19:34:46 +01:00
end
describe "#+" do
it "returns options" do
expect(options + described_class.new).to be_an_instance_of(described_class)
2017-02-25 19:34:46 +01:00
end
end
describe "#-" do
it "returns options" do
expect(options - described_class.new).to be_an_instance_of(described_class)
2017-02-25 19:34:46 +01:00
end
end
specify "#&" do
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
other_options = described_class.new << foo << bar
options << foo << baz
expect((options & other_options).to_a).to eq([foo])
2017-02-25 19:34:46 +01:00
end
specify "#|" do
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
other_options = described_class.new << foo << bar
options << foo << baz
expect((options | other_options).sort).to eq([foo, bar, baz].sort)
2017-02-25 19:34:46 +01:00
end
specify "#*" do
options << Option.new("aa") << Option.new("bb") << Option.new("cc")
expect((options * "XX").split("XX").sort).to eq(%w[--aa --bb --cc])
2017-02-25 19:34:46 +01:00
end
describe "<<" do
it "returns itself" do
expect(options << Option.new("foo")).to be options
2017-02-25 19:34:46 +01:00
end
end
specify "#as_flags" do
options << Option.new("foo")
expect(options.as_flags).to eq(%w[--foo])
2017-02-25 19:34:46 +01:00
end
specify "#to_a" do
option = Option.new("foo")
options << option
expect(options.to_a).to eq([option])
2017-02-25 19:34:46 +01:00
end
specify "#to_ary" do
option = Option.new("foo")
options << option
expect(options.to_ary).to eq([option])
2017-02-25 19:34:46 +01:00
end
specify "::create_with_array" do
array = %w[--foo --bar]
option1 = Option.new("foo")
option2 = Option.new("bar")
expect(described_class.create(array).sort).to eq([option1, option2].sort)
2017-02-25 19:34:46 +01:00
end
specify "#to_s" do
expect(options.to_s).to eq("")
options << Option.new("first")
expect(options.to_s).to eq("--first")
options << Option.new("second")
expect(options.to_s).to eq("--first --second")
end
2017-02-25 19:34:46 +01:00
specify "#inspect" do
expect(options.inspect).to eq("#<Options: []>")
options << Option.new("foo")
expect(options.inspect).to eq("#<Options: [#<Option: \"--foo\">]>")
2017-02-25 19:34:46 +01:00
end
end