Merge pull request #2187 from reitermarkus/spec-option

Convert Options test to spec.
This commit is contained in:
Markus Reiter 2017-02-26 01:13:07 +01:00 committed by GitHub
commit 56e7c79209
2 changed files with 148 additions and 148 deletions

View File

@ -0,0 +1,148 @@
require "options"
describe Option do
subject { described_class.new("foo") }
specify "#to_s" do
expect(subject.to_s).to eq("--foo")
end
specify "equality" do
foo = Option.new("foo")
bar = Option.new("bar")
expect(subject).to eq(foo)
expect(subject).not_to eq(bar)
expect(subject).to eql(foo)
expect(subject).not_to eql(bar)
end
specify "#description" do
expect(subject.description).to be_empty
expect(Option.new("foo", "foo").description).to eq("foo")
end
specify "#inspect" do
expect(subject.inspect).to eq("#<Option: \"--foo\">")
end
end
describe DeprecatedOption do
subject { described_class.new("foo", "bar") }
specify "#old" do
expect(subject.old).to eq("foo")
end
specify "#old_flag" do
expect(subject.old_flag).to eq("--foo")
end
specify "#current" do
expect(subject.current).to eq("bar")
end
specify "#current_flag" do
expect(subject.current_flag).to eq("--bar")
end
specify "equality" do
foobar = DeprecatedOption.new("foo", "bar")
boofar = DeprecatedOption.new("boo", "far")
expect(foobar).to eq(subject)
expect(subject).to eq(foobar)
expect(boofar).not_to eq(subject)
expect(subject).not_to eq(boofar)
end
end
describe Options do
it "removes duplicate options" do
subject << Option.new("foo")
subject << Option.new("foo")
expect(subject).to include("--foo")
expect(subject.count).to eq(1)
end
it "preserves existing member when adding a duplicate" do
a = Option.new("foo", "bar")
b = Option.new("foo", "qux")
subject << a << b
expect(subject.count).to eq(1)
expect(subject.first).to be(a)
expect(subject.first.description).to eq(a.description)
end
specify "#include?" do
subject << Option.new("foo")
expect(subject).to include("--foo")
expect(subject).to include("foo")
expect(subject).to include(Option.new("foo"))
end
describe "#+" do
it "returns options" do
expect(subject + Options.new).to be_an_instance_of(Options)
end
end
describe "#-" do
it "returns options" do
expect(subject - Options.new).to be_an_instance_of(Options)
end
end
specify "#&" do
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
options = Options.new << foo << bar
subject << foo << baz
expect((subject & options).to_a).to eq([foo])
end
specify "#|" do
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
options = Options.new << foo << bar
subject << foo << baz
expect((subject | options).sort).to eq([foo, bar, baz].sort)
end
specify "#*" do
subject << Option.new("aa") << Option.new("bb") << Option.new("cc")
expect((subject * "XX").split("XX").sort).to eq(%w[--aa --bb --cc])
end
describe "<<" do
it "returns itself" do
expect(subject << Option.new("foo")).to be subject
end
end
specify "#as_flags" do
subject << Option.new("foo")
expect(subject.as_flags).to eq(%w[--foo])
end
specify "#to_a" do
option = Option.new("foo")
subject << option
expect(subject.to_a).to eq([option])
end
specify "#to_ary" do
option = Option.new("foo")
subject << option
expect(subject.to_ary).to eq([option])
end
specify "::create_with_array" do
array = %w[--foo --bar]
option1 = Option.new("foo")
option2 = Option.new("bar")
expect(Options.create(array).sort).to eq([option1, option2].sort)
end
specify "#inspect" do
expect(subject.inspect).to eq("#<Options: []>")
subject << Option.new("foo")
expect(subject.inspect).to eq("#<Options: [#<Option: \"--foo\">]>")
end
end

View File

@ -1,148 +0,0 @@
require "testing_env"
require "options"
class OptionTests < Homebrew::TestCase
def setup
super
@option = Option.new("foo")
end
def test_to_s
assert_equal "--foo", @option.to_s
end
def test_equality
foo = Option.new("foo")
bar = Option.new("bar")
assert_equal foo, @option
refute_equal bar, @option
assert_eql @option, foo
refute_eql @option, bar
end
def test_description
assert_empty @option.description
assert_equal "foo", Option.new("foo", "foo").description
end
def test_inspect
assert_equal "#<Option: \"--foo\">", @option.inspect
end
end
class DeprecatedOptionTests < Homebrew::TestCase
def setup
super
@deprecated_option = DeprecatedOption.new("foo", "bar")
end
def test_old
assert_equal "foo", @deprecated_option.old
assert_equal "--foo", @deprecated_option.old_flag
end
def test_current
assert_equal "bar", @deprecated_option.current
assert_equal "--bar", @deprecated_option.current_flag
end
def test_equality
foobar = DeprecatedOption.new("foo", "bar")
boofar = DeprecatedOption.new("boo", "far")
assert_equal foobar, @deprecated_option
refute_equal boofar, @deprecated_option
assert_eql @deprecated_option, foobar
refute_eql @deprecated_option, boofar
end
end
class OptionsTests < Homebrew::TestCase
def setup
super
@options = Options.new
end
def test_no_duplicate_options
@options << Option.new("foo")
@options << Option.new("foo")
assert_includes @options, "--foo"
assert_equal 1, @options.count
end
def test_preserves_existing_member_when_pushing_duplicate
a = Option.new("foo", "bar")
b = Option.new("foo", "qux")
@options << a << b
assert_equal 1, @options.count
assert_same a, @options.first
assert_equal a.description, @options.first.description
end
def test_include
@options << Option.new("foo")
assert_includes @options, "--foo"
assert_includes @options, "foo"
assert_includes @options, Option.new("foo")
end
def test_union_returns_options
assert_instance_of Options, @options + Options.new
end
def test_difference_returns_options
assert_instance_of Options, @options - Options.new
end
def test_shovel_returns_self
assert_same @options, @options << Option.new("foo")
end
def test_as_flags
@options << Option.new("foo")
assert_equal %w[--foo], @options.as_flags
end
def test_to_a
option = Option.new("foo")
@options << option
assert_equal [option], @options.to_a
end
def test_to_ary
option = Option.new("foo")
@options << option
assert_equal [option], @options.to_ary
end
def test_intersection
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
options = Options.new << foo << bar
@options << foo << baz
assert_equal [foo], (@options & options).to_a
end
def test_set_union
foo, bar, baz = %w[foo bar baz].map { |o| Option.new(o) }
options = Options.new << foo << bar
@options << foo << baz
assert_equal [foo, bar, baz].sort, (@options | options).sort
end
def test_times
@options << Option.new("aa") << Option.new("bb") << Option.new("cc")
assert_equal %w[--aa --bb --cc], (@options * "XX").split("XX").sort
end
def test_create_with_array
array = %w[--foo --bar]
option1 = Option.new("foo")
option2 = Option.new("bar")
assert_equal [option1, option2].sort, Options.create(array).sort
end
def test_inspect
assert_equal "#<Options: []>", @options.inspect
@options << Option.new("foo")
assert_equal "#<Options: [#<Option: \"--foo\">]>", @options.inspect
end
end