Class Spec::Mocks::ArgumentExpectation
In: vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
Parent: Object

Methods

Attributes

args  [R] 

Public Class methods

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 146
146:       def initialize(args, &block)
147:         @args = args
148:         @constraints_block = block
149:         
150:         if [:any_args] == args
151:           @expected_params = nil
152:           warn_deprecated(:any_args.inspect, "any_args()")
153:         elsif args.length == 1 && args[0].is_a?(AnyArgsConstraint) then @expected_params = nil
154:         elsif [:no_args] == args
155:           @expected_params = []
156:           warn_deprecated(:no_args.inspect, "no_args()")
157:         elsif args.length == 1 && args[0].is_a?(NoArgsConstraint) then @expected_params = []
158:         else @expected_params = process_arg_constraints(args)
159:         end
160:       end

Public Instance methods

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 196
196:       def check_args(args)
197:         if @constraints_block
198:           @constraints_block.call(*args)
199:           return true
200:         end
201:         
202:         return true if @expected_params.nil?
203:         return true if @expected_params == args
204:         return constraints_match?(args)
205:       end

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 207
207:       def constraints_match?(args)
208:         return false if args.length != @expected_params.length
209:         @expected_params.each_index { |i| return false unless @expected_params[i].matches?(args[i]) }
210:         return true
211:       end

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 172
172:       def convert_constraint(constraint)
173:         if [:anything, :numeric, :boolean, :string].include?(constraint)
174:           case constraint
175:           when :anything
176:             instead = "anything()"
177:           when :boolean
178:             instead = "boolean()"
179:           when :numeric
180:             instead = "an_instance_of(Numeric)"
181:           when :string
182:             instead = "an_instance_of(String)"
183:           end
184:           warn_deprecated(constraint.inspect, instead)
185:           return @@constraint_classes[constraint].new(constraint)
186:         end
187:         return MatcherConstraint.new(constraint) if is_matcher?(constraint)
188:         return RegexpArgConstraint.new(constraint) if constraint.is_a?(Regexp)
189:         return LiteralArgConstraint.new(constraint)
190:       end

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 192
192:       def is_matcher?(obj)
193:         return obj.respond_to?(:matches?) && obj.respond_to?(:description)
194:       end

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 162
162:       def process_arg_constraints(constraints)
163:         constraints.collect do |constraint| 
164:           convert_constraint(constraint)
165:         end
166:       end

[Source]

     # File vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb, line 168
168:       def warn_deprecated(deprecated_method, instead)
169:         Kernel.warn "The #{deprecated_method} constraint is deprecated. Use #{instead} instead."
170:       end

[Validate]