Module: RR::DoubleDefinitions::DoubleDefinition::DefinitionConstructionMethods

Included in:
RR::DoubleDefinitions::DoubleDefinition
Defined in:
lib/rr/double_definitions/double_definition.rb

Instance Method Summary collapse

Instance Method Details

#after_call(&after_call_proc) ⇒ Object

Raises:

  • (ArgumentError)


124
125
126
127
128
# File 'lib/rr/double_definitions/double_definition.rb', line 124

def after_call(&after_call_proc)
  raise ArgumentError, "after_call expects a block" unless after_call_proc
  @after_call_proc = after_call_proc
  self
end

#any_number_of_times(&return_value_block) ⇒ Object



92
93
94
95
96
# File 'lib/rr/double_definitions/double_definition.rb', line 92

def any_number_of_times(&return_value_block)
  @times_matcher = TimesCalledMatchers::AnyTimesMatcher.new
  install_method_callback return_value_block
  self
end

#at_least(number, &return_value_block) ⇒ Object



80
81
82
83
84
# File 'lib/rr/double_definitions/double_definition.rb', line 80

def at_least(number, &return_value_block)
  @times_matcher = TimesCalledMatchers::AtLeastMatcher.new(number)
  install_method_callback return_value_block
  self
end

#at_most(number, &return_value_block) ⇒ Object



86
87
88
89
90
# File 'lib/rr/double_definitions/double_definition.rb', line 86

def at_most(number, &return_value_block)
  @times_matcher = TimesCalledMatchers::AtMostMatcher.new(number)
  install_method_callback return_value_block
  self
end

#implemented_by(implementation) ⇒ Object



154
155
156
157
# File 'lib/rr/double_definitions/double_definition.rb', line 154

def implemented_by(implementation)
  @implementation = implementation
  self
end

#implemented_by_original_methodObject



149
150
151
152
# File 'lib/rr/double_definitions/double_definition.rb', line 149

def implemented_by_original_method
  implemented_by ORIGINAL_METHOD
  self
end

#neverObject



63
64
65
66
# File 'lib/rr/double_definitions/double_definition.rb', line 63

def never
  @times_matcher = TimesCalledMatchers::IntegerMatcher.new(0)
  self
end

#once(&return_value_block) ⇒ Object



68
69
70
71
72
# File 'lib/rr/double_definitions/double_definition.rb', line 68

def once(&return_value_block)
  @times_matcher = TimesCalledMatchers::IntegerMatcher.new(1)
  install_method_callback return_value_block
  self
end

#ordered(&return_value_block) ⇒ Object Also known as: then



104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/rr/double_definitions/double_definition.rb', line 104

def ordered(&return_value_block)
  raise(
    Errors::DoubleDefinitionError,
    "Double Definitions must have a dedicated Double to be ordered. " <<
    "For example, using instance_of does not allow ordered to be used. " <<
    "proxy the class's #new method instead."
  ) unless @double
  @ordered = true
  space.register_ordered_double(@double)
  install_method_callback return_value_block
  DoubleDefinitionCreatorProxy.new(double_definition_creator)
end

#returns(*args, &implementation) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/rr/double_definitions/double_definition.rb', line 136

def returns(*args, &implementation)
  value = args.first
  if !args.empty? && implementation
    raise ArgumentError, "returns cannot accept both an argument and a block"
  end
  if implementation
    implemented_by implementation
  else
    implemented_by lambda {value}
  end
  self
end

#times(matcher_value, &return_value_block) ⇒ Object



98
99
100
101
102
# File 'lib/rr/double_definitions/double_definition.rb', line 98

def times(matcher_value, &return_value_block)
  @times_matcher = TimesCalledMatchers::TimesCalledMatcher.create(matcher_value)
  install_method_callback return_value_block
  self
end

#twice(&return_value_block) ⇒ Object



74
75
76
77
78
# File 'lib/rr/double_definitions/double_definition.rb', line 74

def twice(&return_value_block)
  @times_matcher = TimesCalledMatchers::IntegerMatcher.new(2)
  install_method_callback return_value_block
  self
end

#verbose(&after_call_proc) ⇒ Object



130
131
132
133
134
# File 'lib/rr/double_definitions/double_definition.rb', line 130

def verbose(&after_call_proc)
  @verbose = true
  @after_call_proc = after_call_proc
  self
end

#with(*args, &return_value_block) ⇒ Object



45
46
47
48
49
# File 'lib/rr/double_definitions/double_definition.rb', line 45

def with(*args, &return_value_block)
  @argument_expectation = Expectations::ArgumentEqualityExpectation.new(*args)
  install_method_callback return_value_block
  self
end

#with_any_args(&return_value_block) ⇒ Object



51
52
53
54
55
# File 'lib/rr/double_definitions/double_definition.rb', line 51

def with_any_args(&return_value_block)
  @argument_expectation = Expectations::AnyArgumentExpectation.new
  install_method_callback return_value_block
  self
end

#with_no_args(&return_value_block) ⇒ Object



57
58
59
60
61
# File 'lib/rr/double_definitions/double_definition.rb', line 57

def with_no_args(&return_value_block)
  @argument_expectation = Expectations::ArgumentEqualityExpectation.new()
  install_method_callback return_value_block
  self
end

#yields(*args, &return_value_block) ⇒ Object



118
119
120
121
122
# File 'lib/rr/double_definitions/double_definition.rb', line 118

def yields(*args, &return_value_block)
  @yields_value = args
  install_method_callback return_value_block
  self
end