brew/Library/Homebrew/test/test_options.rb

144 lines
3.2 KiB
Ruby
Raw Normal View History

require 'testing_env'
require 'options'
class OptionTests < Test::Unit::TestCase
def setup
@option = Option.new("foo")
end
def test_to_s
assert_equal "--foo", @option.to_s
end
def test_to_str
assert_equal "--foo", @option.to_str
end
def test_to_json
assert_equal %q{"--foo"}, @option.to_json
end
def test_equality
foo = Option.new("foo")
bar = Option.new("bar")
assert_equal foo, @option
assert_not_equal bar, @option
assert @option.eql?(foo)
assert !@option.eql?(bar)
assert bar < foo
end
def test_strips_leading_dashes
option = Option.new("--foo")
assert_equal "foo", option.name
assert_equal "--foo", option.flag
end
def test_description
assert_empty @option.description
assert_equal "foo", Option.new("foo", "foo").description
end
def test_preserves_short_options
option = Option.new("-d")
assert_equal "-d", option.flag
assert_equal "d", option.name
end
end
class OptionsTests < Test::Unit::TestCase
def setup
@options = Options.new
end
def test_no_duplicate_options
@options << Option.new("foo")
@options << Option.new("foo")
assert @options.include? "--foo"
assert_equal 1, @options.count
end
def test_include
@options << Option.new("foo")
assert @options.include? "--foo"
assert @options.include? "foo"
assert @options.include? 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_concat_array
option = Option.new("foo")
@options.concat([option])
assert @options.include?(option)
assert_equal [option], @options.to_a
end
def test_concat_options
option = Option.new("foo")
opts = Options.new
opts << option
@options.concat(opts)
assert @options.include?(option)
assert_equal [option], @options.to_a
end
def test_concat_returns_self
assert_same @options, (@options.concat([]))
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_coerce_with_options
assert_same @options, Options.coerce(@options)
end
def test_coerce_with_option
option = Option.new("foo")
assert_equal option, Options.coerce(option).to_a.first
end
def test_coerce_with_array
array = %w{--foo --bar}
option1 = Option.new("foo")
option2 = Option.new("bar")
assert_equal [option1, option2].sort, Options.coerce(array).to_a.sort
end
def test_coerce_raises_for_inappropriate_types
assert_raises(TypeError) { Options.coerce(1) }
end
end