class RSpec::Matchers::BuiltIn::BeWithin

@api private Provides the implementation for ‘be_within`. Not intended to be instantiated directly.

Public Class Methods

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 8
def initialize(delta)
  @delta = delta
end

Public Instance Methods

@api private @return [String]

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 52
def description
  "be within #{@delta}#{@unit} of #{expected_formatted}"
end

@api private @return [String]

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 40
def failure_message
  "expected #{actual_formatted} to #{description}#{not_numeric_clause}"
end

@api private @return [String]

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 46
def failure_message_when_negated
  "expected #{actual_formatted} not to #{description}"
end

@private

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 32
def matches?(actual)
  @actual = actual
  raise needs_expected unless defined? @expected
  numeric? && (@actual - @expected).abs <= @tolerance
end

@api public Sets the expected value.

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 14
def of(expected)
  @expected  = expected
  @tolerance = @delta
  @unit      = ''
  self
end

@api public Sets the expected value, and makes the matcher do a percent comparison.

# File rspec-expectations/lib/rspec/matchers/built_in/be_within.rb, line 24
def percent_of(expected)
  @expected  = expected
  @tolerance = @expected.abs * @delta / 100.0
  @unit      = '%'
  self
end