aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rspec/lib/spec/matchers
diff options
context:
space:
mode:
authorfrancis <francis>2008-01-23 01:54:49 +0000
committerfrancis <francis>2008-01-23 01:54:49 +0000
commitfdaa98e06ba6d6f8b62480a83e9ecffdbcb21402 (patch)
tree40b8b0d7602a7a17bead44e0fd3a2ea101b18bd6 /vendor/plugins/rspec/lib/spec/matchers
parent60eaae4f7df1f1dae91defb87d3707451c359cf4 (diff)
Upgrade to rspec 1.1.2
Diffstat (limited to 'vendor/plugins/rspec/lib/spec/matchers')
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/be.rb32
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/change.rb26
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/have.rb3
-rwxr-xr-xvendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb1
-rw-r--r--vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb2
5 files changed, 56 insertions, 8 deletions
diff --git a/vendor/plugins/rspec/lib/spec/matchers/be.rb b/vendor/plugins/rspec/lib/spec/matchers/be.rb
index 0eb1629a6..2b25b11f4 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/be.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/be.rb
@@ -3,14 +3,17 @@ module Spec
class Be #:nodoc:
def initialize(*args)
- @expected = parse_expected(args.shift)
+ if args.empty?
+ @expected = :satisfy_if
+ else
+ @expected = parse_expected(args.shift)
+ end
@args = args
@comparison = ""
end
def matches?(actual)
@actual = actual
- return true if match_or_compare unless handling_predicate?
if handling_predicate?
begin
return @result = actual.__send__(predicate, *@args)
@@ -28,8 +31,9 @@ module Spec
rescue
raise predicate_error
end
+ else
+ return match_or_compare
end
- return false
end
def failure_message
@@ -43,6 +47,7 @@ module Spec
end
def expected
+ return "if to be satisfied" if @expected == :satisfy_if
return true if @expected == :true
return false if @expected == :false
return "nil" if @expected == :nil
@@ -50,6 +55,7 @@ module Spec
end
def match_or_compare
+ return @actual ? true : false if @expected == :satisfy_if
return @actual == true if @expected == :true
return @actual == false if @expected == :false
return @actual.nil? if @expected == :nil
@@ -63,6 +69,7 @@ module Spec
end
def ==(expected)
+ @prefix = "be "
@double_equal = true
@comparison = "== "
@expected = expected
@@ -70,6 +77,7 @@ module Spec
end
def ===(expected)
+ @prefix = "be "
@triple_equal = true
@comparison = "=== "
@expected = expected
@@ -77,6 +85,7 @@ module Spec
end
def <(expected)
+ @prefix = "be "
@less_than = true
@comparison = "< "
@expected = expected
@@ -84,6 +93,7 @@ module Spec
end
def <=(expected)
+ @prefix = "be "
@less_than_or_equal = true
@comparison = "<= "
@expected = expected
@@ -91,6 +101,7 @@ module Spec
end
def >=(expected)
+ @prefix = "be "
@greater_than_or_equal = true
@comparison = ">= "
@expected = expected
@@ -98,6 +109,7 @@ module Spec
end
def >(expected)
+ @prefix = "be "
@greater_than = true
@comparison = "> "
@expected = expected
@@ -112,11 +124,14 @@ module Spec
def parse_expected(expected)
if Symbol === expected
@handling_predicate = true
- ["be_an_","be_a_","be_"].each do |@prefix|
- return "#{expected.to_s.sub(@prefix,"")}".to_sym if expected.starts_with?(@prefix)
+ ["be_an_","be_a_","be_"].each do |prefix|
+ if expected.starts_with?(prefix)
+ @prefix = prefix
+ return "#{expected.to_s.sub(@prefix,"")}".to_sym
+ end
end
end
- @prefix = "be "
+ @prefix = ""
return expected
end
@@ -169,6 +184,7 @@ module Spec
end
# :call-seq:
+ # should be
# should be_true
# should be_false
# should be_nil
@@ -177,7 +193,8 @@ module Spec
# should_not be_arbitrary_predicate(*args)
#
# Given true, false, or nil, will pass if actual is
- # true, false or nil (respectively).
+ # true, false or nil (respectively). Given no args means
+ # the caller should satisfy an if condition (to be or not to be).
#
# Predicates are any Ruby method that ends in a "?" and returns true or false.
# Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
@@ -189,6 +206,7 @@ module Spec
#
# == Examples
#
+ # target.should be
# target.should be_true
# target.should be_false
# target.should be_nil
diff --git a/vendor/plugins/rspec/lib/spec/matchers/change.rb b/vendor/plugins/rspec/lib/spec/matchers/change.rb
index 41a718aca..784e516ed 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/change.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/change.rb
@@ -21,6 +21,8 @@ EOF
return false if @from && (@from != @before)
return false if @to && (@to != @after)
return (@before + @amount == @after) if @amount
+ return ((@after - @before) >= @minimum) if @minimum
+ return ((@after - @before) <= @maximum) if @maximum
return @before != @after
end
@@ -37,6 +39,10 @@ EOF
"#{result} should have initially been #{@from.inspect}, but was #{@before.inspect}"
elsif @amount
"#{result} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
+ elsif @minimum
+ "#{result} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
+ elsif @maximum
+ "#{result} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
else
"#{result} should have changed, but is still #{@before.inspect}"
end
@@ -59,6 +65,16 @@ EOF
self
end
+ def by_at_least(minimum)
+ @minimum = minimum
+ self
+ end
+
+ def by_at_most(maximum)
+ @maximum = maximum
+ self
+ end
+
def to(to)
@to = to
self
@@ -88,6 +104,14 @@ EOF
# team.add_player(player)
# }.should change(roster, :count).by(1)
#
+ # lambda {
+ # team.add_player(player)
+ # }.should change(roster, :count).by_at_least(1)
+ #
+ # lambda {
+ # team.add_player(player)
+ # }.should change(roster, :count).by_at_most(1)
+ #
# string = "string"
# lambda {
# string.reverse
@@ -109,7 +133,7 @@ EOF
#
# == Warning
# +should_not+ +change+ only supports the form with no subsequent calls to
- # +be+, +to+ or +from+.
+ # +by+, +by_at_least+, +by_at_most+, +to+ or +from+.
#
# blocks passed to +should+ +change+ and +should_not+ +change+
# must use the <tt>{}</tt> form (<tt>do/end</tt> is not supported)
diff --git a/vendor/plugins/rspec/lib/spec/matchers/have.rb b/vendor/plugins/rspec/lib/spec/matchers/have.rb
index f28b86ad3..47454e3be 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/have.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/have.rb
@@ -17,6 +17,7 @@ module Spec
def method_missing(sym, *args, &block)
@collection_name = sym
+ @plural_collection_name = Inflector.pluralize(sym.to_s) if Object.const_defined?(:Inflector)
@args = args
@block = block
self
@@ -25,6 +26,8 @@ module Spec
def matches?(collection_owner)
if collection_owner.respond_to?(@collection_name)
collection = collection_owner.send(@collection_name, *@args, &@block)
+ elsif (@plural_collection_name && collection_owner.respond_to?(@plural_collection_name))
+ collection = collection_owner.send(@plural_collection_name, *@args, &@block)
elsif (collection_owner.respond_to?(:length) || collection_owner.respond_to?(:size))
collection = collection_owner
else
diff --git a/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb b/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
index 2d47ea85a..dd23a0994 100755
--- a/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb
@@ -1,6 +1,7 @@
module Spec
module Matchers
class BaseOperatorMatcher
+ attr_reader :generated_description
def initialize(target)
@target = target
diff --git a/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb b/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
index 6d047bc39..c74d84436 100644
--- a/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
+++ b/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb
@@ -4,12 +4,14 @@ module Spec
class ThrowSymbol #:nodoc:
def initialize(expected=nil)
@expected = expected
+ @actual = nil
end
def matches?(proc)
begin
proc.call
rescue NameError => e
+ raise e unless e.message =~ /uncaught throw/
@actual = e.name.to_sym
ensure
if @expected.nil?