class RSpec::Fire::SupportArityMatcher

Constants

INFINITY

Attributes

arity[R]
method[R]

Public Class Methods

new(arity) click to toggle source
# File lib/rspec/fire/legacy.rb, line 9
def initialize(arity)
  @arity = arity
end

Public Instance Methods

failure_message_for_should() click to toggle source
# File lib/rspec/fire/legacy.rb, line 20
def failure_message_for_should
  "Wrong number of arguments for #{method.name}. " +
    "Expected #{arity_description}, got #{arity}."
end
matches?(method) click to toggle source
# File lib/rspec/fire/legacy.rb, line 15
def matches?(method)
  @method = method
  min_arity <= arity && arity <= max_arity
end

Private Instance Methods

arity_description() click to toggle source
# File lib/rspec/fire/legacy.rb, line 52
def arity_description
  return min_arity if min_arity == max_arity
  return "#{min_arity} or more" if max_arity == INFINITY
  "#{min_arity} to #{max_arity}"
end
max_arity() click to toggle source
# File lib/rspec/fire/legacy.rb, line 30
def max_arity
  params = method.parameters
  return INFINITY if params.any? { |(type, name)| type == :rest } # splat
  params.count { |(type, name)| type != :block }
end
min_arity() click to toggle source
# File lib/rspec/fire/legacy.rb, line 46
def min_arity
  return method.arity if method.arity >= 0
  # ~ inverts the one's complement and gives us the number of required args
  ~method.arity
end