module RuboCop::Cop::InDeltaMixin

Common functionality for `AssertInDelta` and `RefuteInDelta` cops.

Constants

MSG

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/mixin/in_delta_mixin.rb, line 9
def on_send(node)
  equal_floats_call(node) do |expected, actual, message|
    message = message.first
    good_method = build_good_method(expected, actual, message)

    if expected.float_type? || actual.float_type?
      message = format(MSG, good_method: good_method, bad_method: node.source)

      add_offense(node, message: message) do |corrector|
        corrector.replace(node, good_method)
      end
    end
  end
end

Private Instance Methods

assertion_method() click to toggle source
# File lib/rubocop/cop/mixin/in_delta_mixin.rb, line 34
def assertion_method
  class_name = self.class.name.split('::').last
  class_name[/\A[[:upper:]][[:lower:]]+/].downcase
end
build_good_method(expected, actual, message) click to toggle source
# File lib/rubocop/cop/mixin/in_delta_mixin.rb, line 26
def build_good_method(expected, actual, message)
  if message
    "#{assertion_method}_in_delta(#{expected.source}, #{actual.source}, 0.001, #{message.source})"
  else
    "#{assertion_method}_in_delta(#{expected.source}, #{actual.source})"
  end
end