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 30
30:     def initialize(required, maximum)
31:       @required, @maximum = required, maximum
32:     end

[Source]

    # 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

Public Instance methods

[Source]

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

[Source]

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

[Source]

    # 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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

Protected Instance methods

[Source]

    # File lib/mocha/cardinality.rb, line 89
89:     def infinite?(number)
90:       number.respond_to?(:infinite?) && number.infinite?
91:     end

[Source]

    # File lib/mocha/cardinality.rb, line 80
80:     def times(number)
81:       case number
82:         when 0 then "no times"
83:         when 1 then "once"
84:         when 2 then "twice"
85:         else "#{number} times"
86:       end
87:     end

[Validate]