class Spec::Mocks::ArgumentExpectation

def check_args(args)

def check_args(args)
  return true if @expected_params.nil?
  return true if @expected_params == args
  return constraints_match?(args)
end

def constraints_match?(args)

def constraints_match?(args)
  return false if args.length != @expected_params.length
  @expected_params.each_index { |i| return false unless @expected_params[i].matches?(args[i]) }
  return true
end

def convert_constraint(constraint)

def convert_constraint(constraint)
  if [:anything, :numeric, :boolean, :string].include?(constraint)
    case constraint
    when :anything
      instead = "anything()"
    when :boolean
      instead = "boolean()"
    when :numeric
      instead = "an_instance_of(Numeric)"
    when :string
      instead = "an_instance_of(String)"
    end
    warn_deprecated(constraint.inspect, instead)
    return @@constraint_classes[constraint].new(constraint)
  end
  return MatcherConstraint.new(constraint) if is_matcher?(constraint)
  return RegexpArgConstraint.new(constraint) if constraint.is_a?(Regexp)
  return LiteralArgConstraint.new(constraint)
end

def initialize(args)

def initialize(args)
  @args = args
  if [:any_args] == args
    @expected_params = nil
    warn_deprecated(:any_args.inspect, "any_args()")
  elsif args.length == 1 && args[0].is_a?(AnyArgsConstraint) then @expected_params = nil
  elsif [:no_args] == args
    @expected_params = []
    warn_deprecated(:no_args.inspect, "no_args()")
  elsif args.length == 1 && args[0].is_a?(NoArgsConstraint) then @expected_params = []
  else @expected_params = process_arg_constraints(args)
  end
end

def is_matcher?(obj)

def is_matcher?(obj)
  return obj.respond_to?(:matches?) && obj.respond_to?(:description)
end

def process_arg_constraints(constraints)

def process_arg_constraints(constraints)
  constraints.collect do |constraint| 
    convert_constraint(constraint)
  end
end

def warn_deprecated(deprecated_method, instead)

def warn_deprecated(deprecated_method, instead)
  Kernel.warn "The #{deprecated_method} constraint is deprecated. Use #{instead} instead."
end