brew/Library/Homebrew/test/test_comparableset.rb
Misty De Meo bbfb6400c7 Manage Requirements using ComparableSet
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.
2012-10-15 09:46:29 -05:00

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