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