Module: Propr

Defined in:
lib/propr.rb,
lib/propr/dsl.rb,
lib/propr/rspec.rb,
lib/propr/random.rb,
lib/propr/runner.rb,
lib/propr/property.rb,
lib/propr/dsl/check.rb,
lib/propr/dsl/property.rb

Defined Under Namespace

Modules: Dsl Classes: Failure, Falsifiable, GuardFailure, NoMoreTries, Property, RSpecAdapter, Random, Runner

Constant Summary collapse

RSpec =
RSpec(nil, nil)

Class Method Summary collapse

Class Method Details

.RSpec(checkdsl, propdsl) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/propr.rb', line 106

def self.RSpec(checkdsl, propdsl)
  Module.new.tap do |m|
    m.send(:define_method, :property) { raise }
    m.send(:define_singleton_method, :rand) { rand }
    m.send(:define_singleton_method, :included) do |scope|

      # @todo: raise an error if body isn't given
      scope.send(:define_singleton_method, :property) do |name, options = {}, &body|
        q = Dsl::Property.wrap(body)
        p = Property.new(name, q)
        RSpecAdapter.new(self, options, p)
      end
    end
  end
end

.wrap(object) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/propr.rb', line 11

def self.wrap(object)
  if object.nil?
    []
  elsif object.respond_to?(:to_ary)
    object.to_ary || [object]
  else
    [object]
  end
end