diff options
author | francis <francis> | 2008-01-23 01:54:49 +0000 |
---|---|---|
committer | francis <francis> | 2008-01-23 01:54:49 +0000 |
commit | fdaa98e06ba6d6f8b62480a83e9ecffdbcb21402 (patch) | |
tree | 40b8b0d7602a7a17bead44e0fd3a2ea101b18bd6 /vendor/plugins/rspec/lib/spec/matchers | |
parent | 60eaae4f7df1f1dae91defb87d3707451c359cf4 (diff) |
Upgrade to rspec 1.1.2
Diffstat (limited to 'vendor/plugins/rspec/lib/spec/matchers')
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? |