| Class | Spec::Mocks::ArgumentExpectation |
| In: |
lib/spec/mocks/argument_expectation.rb
|
| Parent: | Object |
| args | [R] |
# File lib/spec/mocks/argument_expectation.rb, line 146
146: def initialize(args)
147: @args = args
148: if [:any_args] == args
149: @expected_params = nil
150: warn_deprecated(:any_args.inspect, "any_args()")
151: elsif args.length == 1 && args[0].is_a?(AnyArgsConstraint) then @expected_params = nil
152: elsif [:no_args] == args
153: @expected_params = []
154: warn_deprecated(:no_args.inspect, "no_args()")
155: elsif args.length == 1 && args[0].is_a?(NoArgsConstraint) then @expected_params = []
156: else @expected_params = process_arg_constraints(args)
157: end
158: end
# File lib/spec/mocks/argument_expectation.rb, line 194
194: def check_args(args)
195: return true if @expected_params.nil?
196: return true if @expected_params == args
197: return constraints_match?(args)
198: end
# File lib/spec/mocks/argument_expectation.rb, line 200
200: def constraints_match?(args)
201: return false if args.length != @expected_params.length
202: @expected_params.each_index { |i| return false unless @expected_params[i].matches?(args[i]) }
203: return true
204: end
# File lib/spec/mocks/argument_expectation.rb, line 170
170: def convert_constraint(constraint)
171: if [:anything, :numeric, :boolean, :string].include?(constraint)
172: case constraint
173: when :anything
174: instead = "anything()"
175: when :boolean
176: instead = "boolean()"
177: when :numeric
178: instead = "an_instance_of(Numeric)"
179: when :string
180: instead = "an_instance_of(String)"
181: end
182: warn_deprecated(constraint.inspect, instead)
183: return @@constraint_classes[constraint].new(constraint)
184: end
185: return MatcherConstraint.new(constraint) if is_matcher?(constraint)
186: return RegexpArgConstraint.new(constraint) if constraint.is_a?(Regexp)
187: return LiteralArgConstraint.new(constraint)
188: end
# File lib/spec/mocks/argument_expectation.rb, line 190
190: def is_matcher?(obj)
191: return obj.respond_to?(:matches?) && obj.respond_to?(:description)
192: end
# File lib/spec/mocks/argument_expectation.rb, line 160
160: def process_arg_constraints(constraints)
161: constraints.collect do |constraint|
162: convert_constraint(constraint)
163: end
164: end