Class | Spec::Mocks::ArgumentExpectation |
In: |
vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
|
Parent: | Object |
args | [R] |
# 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
# 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
# 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
# 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
# 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
# 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