class DuckPond::Contract
Public Class Methods
clauses()
click to toggle source
clauses
Gets this contract’s list of clauses or returns an empty array if uninitialized.
# File lib/duckpond/contract.rb, line 23 def clauses @clauses ||= [] end
each_clause() { |clauses| ... }
click to toggle source
Iterator for clauses
# File lib/duckpond/contract.rb, line 32 def each_clause 0.upto(clauses.size-1) do |i| yield @clauses[i] end end
fulfilled_by!(obj)
click to toggle source
fulfilled_by!
Raises a ContractInfringementError
unless this contract fulfills the passed in object, otherwise returns true.
# File lib/duckpond/contract.rb, line 79 def fulfilled_by!(obj) DuckPond::Inspection.new(obj).tap do |inspection| unless inspection.fulfilled_by? self raise ContractInfringementError.new(self, obj, inspection) else return true end end end
Also aliased as: fulfills!
fulfilled_by?(obj)
click to toggle source
fulfilled_by?
Returns true if this contract fulfills the passed-in object, otherwise false.
# File lib/duckpond/contract.rb, line 64 def fulfilled_by?(obj) DuckPond::Inspection.new(obj).tap do |inspection| return inspection.fulfilled_by? self end end
Also aliased as: fulfills?
has_clause(clause_klass, opts = {}, &block)
click to toggle source
add a clause to the contract’s list of clauses
# File lib/duckpond/contract.rb, line 43 def has_clause(clause_klass, opts = {}, &block) clauses << clause_klass.new(opts, block) end
include_clauses_from(other_contract)
click to toggle source
Facilitates composition of multiple contracts
# File lib/duckpond/contract.rb, line 52 def include_clauses_from(other_contract) other_contract.each_clause do |other_clause| has_clause other_clause.class, other_clause.options, &other_clause.block end end