Class Mocha::Cardinality
In: lib/mocha/cardinality.rb
Parent: Object

Methods

Constants

INFINITY = 1 / 0.0

Attributes

maximum  [R] 
required  [R] 

Public Class methods

[Source]

    # File lib/mocha/cardinality.rb, line 13
13:       def at_least(count)
14:         new(count, INFINITY)
15:       end

[Source]

    # File lib/mocha/cardinality.rb, line 17
17:       def at_most(count)
18:         new(0, count)
19:       end

[Source]

    # File lib/mocha/cardinality.rb, line 9
 9:       def exactly(count)
10:         new(count, count)
11:       end

[Source]

    # File lib/mocha/cardinality.rb, line 32
32:     def initialize(required, maximum)
33:       @required, @maximum = required, maximum
34:     end

[Source]

    # 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

Public Instance methods

[Source]

    # File lib/mocha/cardinality.rb, line 52
52:     def allowed_any_number_of_times?
53:       required == 0 && infinite?(maximum)
54:     end

[Source]

    # File lib/mocha/cardinality.rb, line 36
36:     def invocations_allowed?(invocation_count)
37:       invocation_count < maximum
38:     end

[Source]

    # 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

[Source]

    # File lib/mocha/cardinality.rb, line 44
44:     def needs_verifying?
45:       !allowed_any_number_of_times?
46:     end

[Source]

    # File lib/mocha/cardinality.rb, line 40
40:     def satisfied?(invocations_so_far)
41:       invocations_so_far >= required
42:     end

[Source]

    # File lib/mocha/cardinality.rb, line 56
56:     def used?(invocation_count)
57:       (invocation_count > 0) || (maximum == 0)
58:     end

[Source]

    # File lib/mocha/cardinality.rb, line 48
48:     def verified?(invocation_count)
49:       (invocation_count >= required) && (invocation_count <= maximum)
50:     end

Protected Instance methods

[Source]

    # File lib/mocha/cardinality.rb, line 86
86:     def infinite?(number)
87:       number.respond_to?(:infinite?) && number.infinite?
88:     end

[Source]

    # File lib/mocha/cardinality.rb, line 82
82:     def times(number)
83:       number == 1 ? "once" : "#{number} times"
84:     end

[Validate]