class MimiCheck::Checker

Attributes

examples[R]
generators[R]
property[R]
trials[R]

Public Class Methods

for(proc, &blk) click to toggle source
# File lib/mimicheck/checker.rb, line 7
def self.for(proc, &blk)
  new(proc || blk).with
end
new(property) click to toggle source
# File lib/mimicheck/checker.rb, line 29
def initialize(property)
  @property = property
  @trials = MimiCheck.trials
  @examples = []
  @generators = []
end

Public Instance Methods

check(gens = nil) click to toggle source
# File lib/mimicheck/checker.rb, line 19
def check(gens = nil)
  check! Array(gens || generators)
end
check_examples(exs = nil) click to toggle source
# File lib/mimicheck/checker.rb, line 23
def check_examples(exs = nil)
  check_examples! Array(exs || examples)
end
with(trials: nil, generators: nil, examples: nil) click to toggle source
# File lib/mimicheck/checker.rb, line 11
def with(trials: nil, generators: nil, examples: nil)
  tap do
    @trials = trials if trials
    @generators = generators if generators
    @examples = examples if examples
  end
end

Private Instance Methods

check!(gens) click to toggle source
# File lib/mimicheck/checker.rb, line 36
def check!(gens)
  exs = (1..trials).map { gens.map(&:call) }
  check_examples!(exs)
end
check_examples!(exs) click to toggle source
# File lib/mimicheck/checker.rb, line 41
def check_examples!(exs)
  example, *es = exs
  return MimiCheck::Result::Success.new(property) unless example

  result, error = safe_check(*Array(example))
  return MimiCheck::Result::Falsified.new(property, error) unless result

  check_examples!(es)
end
safe_check(*example) click to toggle source
# File lib/mimicheck/checker.rb, line 52
def safe_check(*example)
  [property.call(*example), { example: example }]
rescue => error
  raise if MimiCheck.fail_fast
  [false, { example: example, error: error }]
end