Add type accessors to Dependencies

This commit is contained in:
Jack Nagel 2013-05-10 23:45:06 -05:00
parent 7629d4485e
commit 2d93935e6a
3 changed files with 38 additions and 0 deletions

View File

@ -15,6 +15,10 @@ module Dependable
tags.include? :recommended tags.include? :recommended
end end
def required?
!build? && !optional? && !recommended?
end
def options def options
Options.coerce(tags - RESERVED_TAGS) Options.coerce(tags - RESERVED_TAGS)
end end

View File

@ -26,4 +26,24 @@ class Dependencies
@deps @deps
end end
alias_method :to_ary, :to_a alias_method :to_ary, :to_a
def optional
select(&:optional?)
end
def recommended
select(&:recommended?)
end
def build
select(&:build?)
end
def required
select(&:required?)
end
def default
build + required + recommended
end
end end

View File

@ -45,4 +45,18 @@ class DependenciesTests < Test::Unit::TestCase
@deps << dep @deps << dep
assert_equal [dep], @deps.to_ary assert_equal [dep], @deps.to_ary
end end
def test_type_helpers
foo = Dependency.new("foo")
bar = Dependency.new("bar", [:optional])
baz = Dependency.new("baz", [:build])
qux = Dependency.new("qux", [:recommended])
quux = Dependency.new("quux")
@deps << foo << bar << baz << qux << quux
assert_equal [foo, quux], @deps.required
assert_equal [bar], @deps.optional
assert_equal [baz], @deps.build
assert_equal [qux], @deps.recommended
assert_equal [foo, baz, quux, qux].sort_by(&:name), @deps.default.sort_by(&:name)
end
end end