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

Returns a new instance of Double.



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

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.

Returns:

  • (Boolean)


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

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.

Returns:

  • (Boolean)


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

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

#expected_argumentsObject

The Arguments that this Double expects



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

def expected_arguments
  verify_argument_expectation_is_set
  argument_expectation.expected_arguments
end

#formatted_nameObject



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

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

#implementation_is_original_method?Boolean

Returns:

  • (Boolean)


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

def implementation_is_original_method?
  definition.implementation_is_original_method?
end

#method_call(args) ⇒ Object



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

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



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

def method_name
  double_injection.method_name
end

#terminal?Boolean

Returns:

  • (Boolean)


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

def terminal?
  verify_times_matcher_is_set
  times_called_expectation.terminal?
end

#times_matcherObject

The TimesCalledMatcher for the TimesCalledExpectation



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

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.



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

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.

Returns:

  • (Boolean)


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

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