lib/ae/legacy.rb in ae-1.7.4 vs lib/ae/legacy.rb in ae-1.8.0
- old
+ new
@@ -1,10 +1,10 @@
module AE
module Legacy #:nodoc:
- # = Test::Unit Legacy Assertions
+ # Test::Unit Legacy Assertions
#
# This module provides a compatibility layer for Test::Unit.
# This is an optional module and is intended for providing
# an easier transition from Test::Unit to AE assertions.
#
@@ -14,36 +14,45 @@
module Assertions
# Private method upon which all of the legacy assertions are based
# (except for #assert itself).
#
+ # @raise [Assertion] If test fails.
+ #
+ # @return nothing
def __assert__(test, msg=nil)
msg = "failed assertion (no message given)" unless msg
- raise Assertion.new(msg, caller[1..-1]) unless test
+ raise Assertion.new(msg, :backtrace=>caller[1..-1]) unless test
end
private :__assert__
# The assertion upon which all other assertions are based.
#
+ # @example
# assert [1, 2].include?(5)
#
+ # @return [Assertor] if `test` not given
def assert(test=nil, msg=nil)
if test
msg = "failed assertion (no message given)" unless msg
- raise Assertion.new(msg, caller) unless test
+ raise Assertion.new(msg, :backtrace=>caller) unless test
else
Assertor.new(self, :backtrace=>caller) # TODO: Probably remove this!
end
end
# Passes if the block yields true.
#
- # assert_block "Couldn't do the thing" do
- # do_the_thing
- # end
+ # @example
+ # assert_block "Couldn't do the thing" do
+ # do_the_thing
+ # end
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_block(msg=nil) # :yields:
test = ! yield
msg = "assertion failed" unless msg
__assert__(test, msg)
end
@@ -52,126 +61,174 @@
#
# Note that the ordering of arguments is important,
# since a helpful error message is generated when this
# one fails that tells you the values of expected and actual.
#
+ # @example
# assert_equal 'MY STRING', 'my string'.upcase
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_equal(exp, act, msg=nil)
test = (exp == act)
msg = "Expected #{act.inspect} to be equal to #{exp.inspect}" unless msg
__assert__(test, msg)
end
# Passes if expected_float and actual_float are equal within delta tolerance.
#
+ # @example
# assert_in_delta 0.05, (50000.0 / 10**6), 0.00001
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_in_delta(exp, act, delta, msg=nil)
test = (exp.to_f - act.to_f).abs <= delta.to_f
msg = "Expected #{exp} to be within #{delta} of #{act}" unless msg
__assert__(test, msg)
end
# Passes if object .instance_of? klass
#
+ # @example
# assert_instance_of String, 'foo'
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_instance_of(cls, obj, msg=nil)
test = (cls === obj)
msg = "Expected #{obj} to be a #{cls}" unless msg
__assert__(test, msg)
end
# Passes if object .kind_of? klass
#
+ # @example
# assert_kind_of Object, 'foo'
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_kind_of(cls, obj, msg=nil)
test = obj.kind_of?(cls)
msg = "Expected #{obj.inspect} to be a kind of #{cls}" unless msg
__assert__(test, msg)
end
# Passes if string =~ pattern.
#
+ # @example
# assert_match(/\d+/, 'five, 6, seven')
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_match(exp, act, msg=nil)
test = (act =~ exp)
msg = "Expected #{act.inspect} to match #{exp.inspect}" unless msg
__assert__(test, msg)
end
# Passes if object is nil.
#
+ # @example
# assert_nil [1, 2].uniq!
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_nil(obj, msg=nil)
test = obj.nil?
msg = "Expected #{obj.inspect} to be nil" unless msg
__assert__(test, msg)
end
# Passes if regexp !~ string
#
+ # @example
# assert_no_match(/two/, 'one 2 three')
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_no_match(exp, act, msg=nil)
test = (act !~ exp)
msg = "Expected #{act.inspect} to match #{exp.inspect}" unless msg
__assert__(test, msg)
end
# Passes if expected != actual
#
+ # @example
# assert_not_equal 'some string', 5
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_not_equal(exp, act, msg=nil)
test = (exp != act)
msg = "Expected #{act.inspect} to not be equal to #{exp.inspect}" unless msg
__assert__(test, msg)
end
# Passes if ! object .nil?
#
+ # @example
# assert_not_nil '1 two 3'.sub!(/two/, '2')
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_not_nil(obj, msg=nil)
test = ! obj.nil?
msg = "Expected #{obj.inspect} to not be nil" unless msg
__assert__(test, msg)
end
# Passes if ! actual .equal? expected
#
+ # @example
# assert_not_same Object.new, Object.new
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_not_same(exp, act, msg=nil)
test = ! exp.equal?(act)
msg = "Expected #{act.inspect} to not be the same as #{exp.inspect}" unless msg
__assert__(test, msg)
end
# Compares the +object1+ with +object2+ using operator.
#
# Passes if object1.send(operator, object2) is true.
#
+ # @example
# assert_operator 5, :>=, 4
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_operator(o1, op, o2, msg="")
test = o1.__send__(op, o2)
msg = "Expected #{o1}.#{op}(#{o2}) to be true" unless msg
__assert__(test, msg)
end
# Passes if the block raises one of the given exceptions.
#
+ # @example
# assert_raise RuntimeError, LoadError do
# raise 'Boom!!!'
# end
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_raises(*args)
msg = (Module === args.last ? nil : args.pop)
begin
yield
msg = "Expected #{exp} to be raised" unless msg
@@ -187,10 +244,11 @@
alias_method :assert_raise, :assert_raises
# Provides a way to assert that a procedure
# <i>does not</i> raise an exception.
#
+ # @example
# refute_raises(StandardError){ raise }
#
#def assert_raises!(exception, &block)
# begin
# block.call(*a)
@@ -200,25 +258,33 @@
#end
#alias_method :refute_raises, :assert_raises!
# Passes if +object+ respond_to? +method+.
#
+ # @example
# assert_respond_to 'bugbear', :slice
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_respond_to(obj, meth, msg=nil)
msg = "Expected #{obj} (#{obj.class}) to respond to ##{meth}" unless msg
#flip = (Symbol === obj) && ! (Symbol === meth) # HACK for specs
#obj, meth = meth, obj if flip
test = obj.respond_to?(meth)
__assert__(test, msg)
end
# Passes if +actual+ .equal? +expected+ (i.e. they are the same instance).
#
+ # @example
# o = Object.new
# assert_same(o, o)
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_same(exp, act, msg=nil)
msg = "Expected #{act.inspect} to be the same as #{exp.inspect}" unless msg
test = exp.equal?(act)
__assert__(test, msg)
end
@@ -228,27 +294,33 @@
#
# * A receiver
# * A method
# * Arguments to the method
#
- # Example:
- #
+ # @example
# assert_send [[1, 2], :include?, 4]
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_send(send_array, msg=nil)
r, m, *args = *send_array
test = r.__send__(m, *args)
msg = "Expected #{r}.#{m}(*#{args.inspect}) to return true" unless msg
__assert__(test, msg)
end
# Passes if the block throws expected_symbol
#
+ # @example
# assert_throws :done do
# throw :done
# end
#
+ # @raise [Assertion] if test fails
+ #
+ # @return nothing
def assert_throws(sym, msg=nil)
msg = "Expected #{sym} to have been thrown" unless msg
test = true
catch(sym) do
begin
@@ -263,11 +335,15 @@
__assert__(test, msg)
end
# Flunk always fails.
#
+ # @example
# flunk 'Not done testing yet.'
#
+ # @raise [Assertion] always
+ #
+ # @return nothing
def flunk(msg=nil)
__assert__(false, msg)
end
end #module Assertions