aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorMisty De Meo2012-10-02 13:21:00 -0500
committerMisty De Meo2012-10-15 09:46:29 -0500
commitbbfb6400c77aeaaf88216263d86491d85a40f8a9 (patch)
tree2d07e2d07653ed7d3010b2a0ca6b8019adf7a3e1 /Library/Homebrew/test
parent3fb5dfbd7b77e03ccd9b8aee54c198673a9cb054 (diff)
downloadbrew-bbfb6400c77aeaaf88216263d86491d85a40f8a9.tar.bz2
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.
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/test_comparableset.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_comparableset.rb b/Library/Homebrew/test/test_comparableset.rb
new file mode 100644
index 000000000..d39ad51d6
--- /dev/null
+++ b/Library/Homebrew/test/test_comparableset.rb
@@ -0,0 +1,40 @@
+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