class Object

Constants

Compliance

Backport old namespace

Public Instance Methods

boolean?(value) click to toggle source
# File lib/matchers/matchers.rb, line 227
def boolean?(value)
  %w{true false}.include?(value.downcase)
end
float?(value) click to toggle source
# File lib/matchers/matchers.rb, line 216
def float?(value)
  Float(value)
  true
rescue ArgumentError, TypeError
  false
end
format_actual(actual) click to toggle source
# File lib/matchers/matchers.rb, line 289
def format_actual(actual)
  actual = "0%o" % actual if octal?(@expected) && !actual.nil?
  "\n%s\n     got: %s\n\n(compared using `cmp` matcher)\n" % [format_expectation(false), actual]
end
format_expectation(negate) click to toggle source
# File lib/matchers/matchers.rb, line 294
def format_expectation(negate)
  return "expected: %s" % [@expected] if @operation == :== && !negate

  negate_str = negate ? "not " : ""
  "expected it %sto be %s %p" % [negate_str, @operation, @expected]
end
integer?(value) click to toggle source
# File lib/matchers/matchers.rb, line 212
def integer?(value)
  !(value =~ /\A-?0+\Z|\A-?[1-9]\d*\Z/).nil?
end
octal?(value) click to toggle source
# File lib/matchers/matchers.rb, line 223
def octal?(value)
  value.is_a?(String) && (value =~ /\A0+[0-7]+\Z/)
end
to_boolean(value) click to toggle source

expects that the values have been checked with boolean?

# File lib/matchers/matchers.rb, line 239
def to_boolean(value)
  value.casecmp("true") == 0
end
try_match(actual, op, expected) click to toggle source
# File lib/matchers/matchers.rb, line 243
def try_match(actual, op, expected) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize
  # if actual and expected are strings
  if expected.is_a?(String) && actual.is_a?(String)
    return actual.casecmp(expected) == 0 if op == :==
    return Gem::Version.new(actual).send(op, Gem::Version.new(expected)) if
      version?(expected) && version?(actual)
  elsif expected.is_a?(Regexp) && (actual.is_a?(String) || actual.is_a?(Integer))
    return !actual.to_s.match(expected).nil?
  elsif expected.is_a?(String) && integer?(expected) && actual.is_a?(Integer)
    return actual.send(op, expected.to_i)
  elsif expected.is_a?(String) && boolean?(expected) && [true, false].include?(actual)
    return actual.send(op, to_boolean(expected))
  elsif expected.is_a?(Integer) && actual.is_a?(String) && integer?(actual)
    return actual.to_i.send(op, expected)
  elsif expected.is_a?(Float) && float?(actual)
    return actual.to_f.send(op, expected)
  elsif actual.is_a?(Symbol) && expected.is_a?(String)
    return try_match(actual.to_s, op, expected)
  elsif octal?(expected) && actual.is_a?(Integer)
    return actual.send(op, expected.to_i(8))
  end

  # fallback to simple operation
  actual.send(op, expected)
rescue NameError => _
  false
rescue ArgumentError
  false
end
version?(value) click to toggle source
# File lib/matchers/matchers.rb, line 231
def version?(value)
  Gem::Version.new(value)
  true
rescue ArgumentError => _ex
  false
end