class ActLike::Matcher

Attributes

actual[R]
expected[R]
offenses[R]

Public Class Methods

new(actual, expected) click to toggle source
# File lib/act_like/matcher.rb, line 5
def initialize(actual, expected)
  @actual = actual
  @expected = expected
  @offenses = Hash.new { |offenses, offense| offenses[offense] = Array.new }
end

Public Instance Methods

check() click to toggle source
# File lib/act_like/matcher.rb, line 11
def check
  check_class_methods
  check_instance_methods
end

Private Instance Methods

check_class_methods() click to toggle source
# File lib/act_like/matcher.rb, line 35
def check_class_methods
  expected
    .public_methods
    .map(&expected.method(:public_method))
    .each_with_object(offenses) { |method, offenses|
    begin
      unless actual.public_method(method.name).arity == method.arity
        offenses[:arity] << "self.#{method.name}"
      end
    rescue NameError
      offenses[:missing] << "self.#{method.name}"
    end
  }
end
check_instance_methods() click to toggle source
# File lib/act_like/matcher.rb, line 20
def check_instance_methods
  expected
    .public_instance_methods
    .map(&expected.method(:public_instance_method))
    .each_with_object(offenses) { |method, offenses|
    begin
      unless actual.public_instance_method(method.name).arity == method.arity
        offenses[:arity] << method.name.to_s
      end
    rescue NameError
      offenses[:missing] << method.name.to_s
    end
  }
end