
ComparableSet only allows a single object of a given class, choosing the object with the greatest value. This was mainly created for Requirements, so that, e.g., two X11Dependencies of differing strictness don't both end up in the same requirement set. Fixes Homebrew/homebrew#15240.
41 lines
1.0 KiB
Ruby
41 lines
1.0 KiB
Ruby
require 'testing_env'
|
|
require 'extend/set'
|
|
|
|
class ComparableSetTests < Test::Unit::TestCase
|
|
def setup
|
|
@set = ComparableSet.new
|
|
end
|
|
|
|
def test_merging_multiple_dependencies
|
|
@set << X11Dependency.new
|
|
@set << X11Dependency.new
|
|
assert_equal @set.count, 1
|
|
@set << Requirement.new
|
|
assert_equal @set.count, 2
|
|
end
|
|
|
|
def test_comparison_prefers_larger
|
|
@set << X11Dependency.new
|
|
@set << X11Dependency.new('2.6')
|
|
assert_equal @set.count, 1
|
|
assert_equal @set.to_a, [X11Dependency.new('2.6')]
|
|
end
|
|
|
|
def test_comparison_does_not_merge_smaller
|
|
@set << X11Dependency.new('2.6')
|
|
@set << X11Dependency.new
|
|
assert_equal @set.count, 1
|
|
assert_equal @set.to_a, [X11Dependency.new('2.6')]
|
|
end
|
|
|
|
def test_merging_sets
|
|
@set << X11Dependency.new
|
|
@set << Requirement.new
|
|
reqs = Set.new [X11Dependency.new('2.6'), Requirement.new]
|
|
@set.merge reqs
|
|
|
|
assert_equal @set.count, 2
|
|
assert_equal @set.find {|r| r.is_a? X11Dependency}, X11Dependency.new('2.6')
|
|
end
|
|
end
|