Sha256: f45c1e6991f611dc7bfe428b98388693aa792878857ba80d628fc4d89d277afe

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require 'ae/assertor'

module AE

  # The Assert module is simple a conatiner module for the core
  # extension methods: #assert, #expect, etc.
  #
  # This module is included directory into the Object class.
  module Assert

    # Assert a operational relationship.
    #
    #   4.assert == 3
    #
    # If only a single test argument is given then
    # #assert simple validates that it evalutate to true.
    # An optional message argument can be given in this
    # case which will be used instead of the deafult message.
    #
    #   assert(4==3, "not the same thing")
    #
    # In block form, #assert ensures the block evalutes
    # truthfully, i.e. not as nil or false.
    #
    #   assert{ 4==3 }
    #
    def assert(*args, &block)
      Assertor.new(self, :backtrace=>caller).assert(*args, &block)
    end

    # Same as 'object.assert == other'.
    def assert=(cmp)
      Assertor.new(self, :backtrace=>caller).assert == cmp
    end

    # Opposite of assert.
    #
    #   4.refute == 4  #=> Assertion Error
    #
    def refute(*args, &block)
      Assertor.new(self, :backtrace=>caller).not.assert(*args, &block)
    end

    # Same as 'object.refute == other'.
    def refute=(cmp)
      Assertor.new(self, :backtrace=>caller).not.assert == cmp
    end

    # Alias for #refute. Read it as "assert not".
    #
    #   4.assert! == 4
    #
    # NOTE: This method would not be necessary if Ruby would allow
    # +!=+ to be define as a method, or at least +!+ as a unary method.
    # Looks like this is possible in Ruby 1.9, but we will wait until
    # Ruby 1.9 is the norm.
    alias_method :assert!, :refute

    # Directly raise an Assertion failure.
    def flunk(message=nil, backtrace=nil)
      #Assertor.new(self, :backtrace=>caller).assert(false, message)
      Assertor.assert(false, message, caller)
    end

  end

end

class ::Object #:nodoc:
  include AE::Assert
end

# Copyright (c) 2008,2009 Thomas Sawyer

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ae-1.7.0 lib/ae/assert.rb