| Class | Mocha::Cardinality |
| In: |
lib/mocha/cardinality.rb
|
| Parent: | Object |
| INFINITY | = | 1 / 0.0 |
| maximum | [R] | |
| required | [R] |
# File lib/mocha/cardinality.rb, line 32
32: def initialize(required, maximum)
33: @required, @maximum = required, maximum
34: end
# File lib/mocha/cardinality.rb, line 21
21: def times(range_or_count)
22: case range_or_count
23: when Range
24: new(range_or_count.first, range_or_count.last)
25: else
26: new(range_or_count, range_or_count)
27: end
28: end
# File lib/mocha/cardinality.rb, line 52
52: def allowed_any_number_of_times?
53: required == 0 && infinite?(maximum)
54: end
# File lib/mocha/cardinality.rb, line 36
36: def invocations_allowed?(invocation_count)
37: invocation_count < maximum
38: end
# File lib/mocha/cardinality.rb, line 60
60: def mocha_inspect
61: if allowed_any_number_of_times?
62: "allowed any number of times"
63: else
64: if required == 0 && maximum == 0
65: "expected never"
66: elsif required == maximum
67: "expected exactly #{times(required)}"
68: elsif infinite?(maximum)
69: "expected at least #{times(required)}"
70: elsif required == 0
71: "expected at most #{times(maximum)}"
72: else
73: "expected between #{required} and #{times(maximum)}"
74: end
75: end
76: end
# File lib/mocha/cardinality.rb, line 44
44: def needs_verifying?
45: !allowed_any_number_of_times?
46: end
# File lib/mocha/cardinality.rb, line 40
40: def satisfied?(invocations_so_far)
41: invocations_so_far >= required
42: end
# File lib/mocha/cardinality.rb, line 56
56: def used?(invocation_count)
57: (invocation_count > 0) || (maximum == 0)
58: end
# File lib/mocha/cardinality.rb, line 48
48: def verified?(invocation_count)
49: (invocation_count >= required) && (invocation_count <= maximum)
50: end
# File lib/mocha/cardinality.rb, line 86
86: def infinite?(number)
87: number.respond_to?(:infinite?) && number.infinite?
88: end