class Contracts::Invariants::Invariant

Public Class Methods

failure_callback(data) click to toggle source
# File lib/contracts/invariants.rb, line 55
def self.failure_callback(data)
  fail InvariantError, failure_msg(data)
end
failure_msg(data) click to toggle source
# File lib/contracts/invariants.rb, line 59
def self.failure_msg(data)
  %Q{Invariant violation:
      Expected: #{data[:expected]}
      Actual: #{data[:actual]}
      Value guarded in: #{data[:target].class}::#{Support.method_name(data[:method])}
      At: #{Support.method_position(data[:method])}}
end
new(klass, name, &condition) click to toggle source
# File lib/contracts/invariants.rb, line 38
def initialize(klass, name, &condition)
  @klass, @name, @condition = klass, name, condition
end

Public Instance Methods

check_on(target, method) click to toggle source
# File lib/contracts/invariants.rb, line 46
def check_on(target, method)
  return if target.instance_eval(&@condition)

  self.class.failure_callback(:expected => expected,
                              :actual => false,
                              :target => target,
                              :method => method)
end
expected() click to toggle source
# File lib/contracts/invariants.rb, line 42
def expected
  "#{@name} condition to be true"
end