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