class Mocha::Cardinality

Constants

INFINITY

Attributes

maximum[R]
required[R]

Public Class Methods

at_least(count) click to toggle source
# File lib/mocha/cardinality.rb, line 10
def at_least(count)
  new(count, INFINITY)
end
at_most(count) click to toggle source
# File lib/mocha/cardinality.rb, line 14
def at_most(count)
  new(0, count)
end
exactly(count) click to toggle source
# File lib/mocha/cardinality.rb, line 6
def exactly(count)
  new(count, count)
end
new(required, maximum) click to toggle source
# File lib/mocha/cardinality.rb, line 26
def initialize(required, maximum)
  @required = required
  @maximum = maximum
end
times(range_or_count) click to toggle source
# File lib/mocha/cardinality.rb, line 18
def times(range_or_count)
  case range_or_count
  when Range then new(range_or_count.first, range_or_count.last)
  else new(range_or_count, range_or_count)
  end
end

Public Instance Methods

allowed_any_number_of_times?() click to toggle source
# File lib/mocha/cardinality.rb, line 47
def allowed_any_number_of_times?
  required.zero? && infinite?(maximum)
end
invocations_allowed?(invocation_count) click to toggle source
# File lib/mocha/cardinality.rb, line 31
def invocations_allowed?(invocation_count)
  invocation_count < maximum
end
mocha_inspect() click to toggle source
# File lib/mocha/cardinality.rb, line 55
def mocha_inspect
  if allowed_any_number_of_times?
    'allowed any number of times'
  elsif required.zero? && maximum.zero?
    'expected never'
  elsif required == maximum
    "expected exactly #{times(required)}"
  elsif infinite?(maximum)
    "expected at least #{times(required)}"
  elsif required.zero?
    "expected at most #{times(maximum)}"
  else
    "expected between #{required} and #{times(maximum)}"
  end
end
needs_verifying?() click to toggle source
# File lib/mocha/cardinality.rb, line 39
def needs_verifying?
  !allowed_any_number_of_times?
end
satisfied?(invocations_so_far) click to toggle source
# File lib/mocha/cardinality.rb, line 35
def satisfied?(invocations_so_far)
  invocations_so_far >= required
end
used?(invocation_count) click to toggle source
# File lib/mocha/cardinality.rb, line 51
def used?(invocation_count)
  (invocation_count > 0) || maximum.zero?
end
verified?(invocation_count) click to toggle source
# File lib/mocha/cardinality.rb, line 43
def verified?(invocation_count)
  (invocation_count >= required) && (invocation_count <= maximum)
end

Protected Instance Methods

infinite?(number) click to toggle source
# File lib/mocha/cardinality.rb, line 84
def infinite?(number)
  number.respond_to?(:infinite?) && number.infinite?
end
times(number) click to toggle source
# File lib/mocha/cardinality.rb, line 75
def times(number)
  case number
  when 0 then 'no times'
  when 1 then 'once'
  when 2 then 'twice'
  else "#{number} times"
  end
end