Class: RR::Double

Inherits:
Object
  • Object
show all
Includes:
Space::Reader
Defined in:
lib/rr/double.rb

Overview

RR::Double is the use case for a method call. It has the ArgumentEqualityExpectation, TimesCalledExpectation, and the implementation.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Space::Reader

#space

Constructor Details

#initialize(double_injection, definition) ⇒ Double



23
24
25
26
27
28
29
30
31
# File 'lib/rr/double.rb', line 23

def initialize(double_injection, definition)
  @double_injection = double_injection
  @definition = definition
  @times_called = 0
  @times_called_expectation = Expectations::TimesCalledExpectation.new(self)
  definition.double = self
  verify_method_signature if definition.verify_method_signature?
  double_injection.register_double self
end

Instance Attribute Details

#definitionObject (readonly)

Returns the value of attribute definition



19
20
21
# File 'lib/rr/double.rb', line 19

def definition
  @definition
end

#double_injectionObject (readonly)

Returns the value of attribute double_injection



19
20
21
# File 'lib/rr/double.rb', line 19

def double_injection
  @double_injection
end

#times_calledObject (readonly)

Returns the value of attribute times_called



19
20
21
# File 'lib/rr/double.rb', line 19

def times_called
  @times_called
end

#times_called_expectationObject (readonly)

Returns the value of attribute times_called_expectation



19
20
21
# File 'lib/rr/double.rb', line 19

def times_called_expectation
  @times_called_expectation
end

Instance Method Details

#attempt?Boolean

Double#attempt? returns true when the TimesCalledExpectation is satisfied.



47
48
49
50
# File 'lib/rr/double.rb', line 47

def attempt?
  verify_times_matcher_is_set
  times_called_expectation.attempt?
end

#exact_match?(*arguments) ⇒ Boolean

Double#exact_match? returns true when the passed in arguments exactly match the ArgumentEqualityExpectation arguments.



35
36
37
# File 'lib/rr/double.rb', line 35

def exact_match?(*arguments)
  definition.exact_match?(*arguments)
end

#expected_argumentsObject

The Arguments that this Double expects



72
73
74
75
# File 'lib/rr/double.rb', line 72

def expected_arguments
  verify_argument_expectation_is_set
  argument_expectation.expected_arguments
end

#formatted_nameObject



82
83
84
# File 'lib/rr/double.rb', line 82

def formatted_name
  self.class.formatted_name(method_name, expected_arguments)
end

#implementation_is_original_method?Boolean



94
95
96
# File 'lib/rr/double.rb', line 94

def implementation_is_original_method?
  definition.implementation_is_original_method?
end

#method_call(args) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/rr/double.rb', line 86

def method_call(args)
  if verbose?
    puts Double.formatted_name(method_name, args)
  end
  times_called_expectation.attempt if definition.times_matcher
  space.verify_ordered_double(self) if ordered?
end

#method_nameObject

The method name that this Double is attatched to



67
68
69
# File 'lib/rr/double.rb', line 67

def method_name
  double_injection.method_name
end

#terminal?Boolean



61
62
63
64
# File 'lib/rr/double.rb', line 61

def terminal?
  verify_times_matcher_is_set
  times_called_expectation.terminal?
end

#times_matcherObject

The TimesCalledMatcher for the TimesCalledExpectation



78
79
80
# File 'lib/rr/double.rb', line 78

def times_matcher
  definition.times_matcher
end

#verifyObject

Double#verify verifies the the TimesCalledExpectation is satisfied for this double. A TimesCalledError is raised if the TimesCalledExpectation is not met.



55
56
57
58
59
# File 'lib/rr/double.rb', line 55

def verify
  verify_times_matcher_is_set
  times_called_expectation.verify!
  true
end

#wildcard_match?(*arguments) ⇒ Boolean

Double#wildcard_match? returns true when the passed in arguments wildcard match the ArgumentEqualityExpectation arguments.



41
42
43
# File 'lib/rr/double.rb', line 41

def wildcard_match?(*arguments)
  definition.wildcard_match?(*arguments)
end