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