class DuckPond::Inspection

Attributes

subject[R]

the wrapped object

Public Class Methods

new(subject) click to toggle source

initialize

Construct with any ruby object.

# File lib/duckpond/inspection.rb, line 18
def initialize(subject)
  @subject    = subject
  @satisfied  = true
  @messages   = []
end

Public Instance Methods

fulfilled_by?(contract) click to toggle source

fulfilled_by?

receives exactly one contract, and returns true/false if the inspected object responds to the same methods indicated by the contract’s clauses.

# File lib/duckpond/inspection.rb, line 35
def fulfilled_by?(contract)
  contract.each_clause do |clause|
    clause.legal_assesment(@subject).tap do |lawyer|
      unless lawyer.satisfied?
        @satisfied = false
        @messages << lawyer.messages 
      end
    end
  end
  @satisfied
end
messages() click to toggle source
# File lib/duckpond/inspection.rb, line 24
def messages
  @messages.flatten.uniq
end
satisfied?() click to toggle source
# File lib/duckpond/inspection.rb, line 47
def satisfied?
  @satisfied
end