lib/mocha/cardinality.rb in mocha-1.9.0 vs lib/mocha/cardinality.rb in mocha-1.10.0.alpha
- old
+ new
@@ -24,58 +24,73 @@
end
def initialize(required, maximum)
@required = required
@maximum = maximum
+ @invocations = []
end
- def invocations_allowed?(invocation_count)
- invocation_count < maximum
+ def <<(invocation)
+ @invocations << invocation
end
- def satisfied?(invocations_so_far)
- invocations_so_far >= required
+ def invocations_allowed?
+ @invocations.size < maximum
end
+ def satisfied?
+ @invocations.size >= required
+ end
+
def needs_verifying?
!allowed_any_number_of_times?
end
- def verified?(invocation_count)
- (invocation_count >= required) && (invocation_count <= maximum)
+ def verified?
+ (@invocations.size >= required) && (@invocations.size <= maximum)
end
def allowed_any_number_of_times?
required.zero? && infinite?(maximum)
end
- def used?(invocation_count)
- (invocation_count > 0) || maximum.zero?
+ def used?
+ @invocations.any? || maximum.zero?
end
- def mocha_inspect
+ # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
+ def anticipated_times
if allowed_any_number_of_times?
'allowed any number of times'
elsif required.zero? && maximum.zero?
- 'expected never'
+ "expected #{times(maximum)}"
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
+ # rubocop:enable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
+ def invoked_times
+ "invoked #{times(@invocations.size)}"
+ end
+
+ def actual_invocations
+ @invocations.map(&:full_description).join
+ end
+
protected
attr_reader :required, :maximum
def times(number)
case number
- when 0 then 'no times'
+ when 0 then 'never'
when 1 then 'once'
when 2 then 'twice'
else "#{number} times"
end
end