module Spec
module Expectations
module Should # :nodoc:
class Should < Base
def initialize(target, expectation=nil)
@target = target
@be_seen = false
end
deprecated do
#Gone for 0.9
def not
Not.new(@target)
end
#Gone for 0.9
def be(expected = :___no_arg)
@be_seen = true
return self if (expected == :___no_arg)
if Symbol === expected
fail_with_message(default_message("should be", expected)) unless (@target.equal?(expected))
else
fail_with_message("expected #{expected}, got #{@target} (using .equal?)") unless (@target.equal?(expected))
end
end
#Gone for 0.9
def have(expected_number=nil)
Have.new(@target, :exactly, expected_number)
end
#Gone for 0.9
def change(receiver=nil, message=nil, &block)
Change.new(@target, receiver, message, &block)
end
#Gone for 0.9
def raise(exception=Exception, message=nil)
begin
@target.call
rescue exception => e
unless message.nil?
if message.is_a?(Regexp)
e.message.should =~ message
else
e.message.should == message
end
end
return
rescue => e
fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"}, got #{e.inspect}")
end
fail_with_message("expected #{exception}#{message.nil? ? "" : " with #{message.inspect}"} but nothing was raised")
end
#Gone for 0.9
def throw(symbol)
begin
catch symbol do
@target.call
fail_with_message("expected #{symbol.inspect} to be thrown, but nothing was thrown")
end
rescue NameError => e
fail_with_message("expected #{symbol.inspect} to be thrown, got #{e.inspect}")
end
end
end
private
def __delegate_method_missing_to_target(original_sym, actual_sym, *args)
::Spec::Matchers.generated_description = "should #{original_sym} #{args[0].inspect}"
return if @target.send(actual_sym, *args)
fail_with_message(default_message(original_sym, args[0]), args[0], @target)
end
end
end
end
end
syntax highlighted by Code2HTML, v. 0.9.1