Class: Contracts::Invariants::Invariant
- Inherits:
-
Object
- Object
- Contracts::Invariants::Invariant
- Defined in:
- lib/contracts/invariants.rb
Class Method Summary collapse
Instance Method Summary collapse
- #check_on(target, method) ⇒ Object
- #expected ⇒ Object
-
#initialize(klass, name, &condition) ⇒ Invariant
constructor
A new instance of Invariant.
Constructor Details
#initialize(klass, name, &condition) ⇒ Invariant
Returns a new instance of Invariant.
44 45 46 |
# File 'lib/contracts/invariants.rb', line 44 def initialize(klass, name, &condition) @klass, @name, @condition = klass, name, condition end |
Class Method Details
.failure_callback(data) ⇒ Object
61 62 63 |
# File 'lib/contracts/invariants.rb', line 61 def self.failure_callback(data) raise InvariantError, failure_msg(data) end |
.failure_msg(data) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/contracts/invariants.rb', line 65 def self.failure_msg(data) %{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 |
Instance Method Details
#check_on(target, method) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/contracts/invariants.rb', line 52 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 ⇒ Object
48 49 50 |
# File 'lib/contracts/invariants.rb', line 48 def expected "#{@name} condition to be true" end |