@api private Provides the implementation for `be_between`. Not intended to be instantiated directly.
# File lib/rspec/matchers/built_in/be_between.rb, line 8 def initialize(min, max) @min, @max = min, max inclusive end
@api private @return [String]
# File lib/rspec/matchers/built_in/be_between.rb, line 57 def description "be between #{@min.inspect} and #{@max.inspect} (#{@mode})" end
@api public Makes the between comparison exclusive.
@example
expect(3).to be_between(2, 4).exclusive
# File lib/rspec/matchers/built_in/be_between.rb, line 33 def exclusive @less_than_operator = :< @greater_than_operator = :> @mode = :exclusive self end
@api private @return [String]
# File lib/rspec/matchers/built_in/be_between.rb, line 51 def failure_message "#{super}#{not_comparable_clause}" end
@api public Makes the between comparison inclusive.
@example
expect(3).to be_between(2, 3).inclusive
@note The matcher is inclusive by default; this simply provides
a way to be more explicit about it.
# File lib/rspec/matchers/built_in/be_between.rb, line 21 def inclusive @less_than_operator = :<= @greater_than_operator = :>= @mode = :inclusive self end
@api private @return [Boolean]
# File lib/rspec/matchers/built_in/be_between.rb, line 42 def matches?(actual) @actual = actual comparable? && compare rescue ArgumentError false end
# File lib/rspec/matchers/built_in/be_between.rb, line 63 def comparable? @actual.respond_to?(@less_than_operator) && @actual.respond_to?(@greater_than_operator) end
# File lib/rspec/matchers/built_in/be_between.rb, line 71 def compare @actual.__send__(@greater_than_operator, @min) && @actual.__send__(@less_than_operator, @max) end
# File lib/rspec/matchers/built_in/be_between.rb, line 67 def not_comparable_clause ", but it does not respond to `#{@less_than_operator}` and `#{@greater_than_operator}`" unless comparable? end