class Shoulda::Matchers::ActiveModel::EnsureExclusionOfMatcher

:nodoc:

def allows_higher_value

def allows_higher_value
  allows_value_of(@maximum + 1, expected_message)
end

def allows_lower_value

def allows_lower_value
  @minimum == 0 || allows_value_of(@minimum - 1, expected_message)
end

def description

def description
  "ensure exclusion of #{@attribute} in #{inspect_message}"
end

def disallows_all_values_in_array?

def disallows_all_values_in_array?
  @array.all? do |value|
    disallows_value_of(value, expected_message)
  end
end

def disallows_maximum_value

def disallows_maximum_value
  disallows_value_of(@maximum, expected_message)
end

def disallows_minimum_value

def disallows_minimum_value
  disallows_value_of(@minimum, expected_message)
end

def expected_message

def expected_message
  @expected_message || :exclusion
end

def in_array(array)

:nodoc:
def in_array(array)
  @array = array
  self
end

def in_range(range)

def in_range(range)
  @range = range
  @minimum = range.first
  @maximum = range.max
  self
end

def inspect_message

def inspect_message
  if @range
    @range.inspect
  else
    @array.inspect
  end
end

def matches?(subject)

def matches?(subject)
  super(subject)
  if @range
    allows_lower_value &&
      disallows_minimum_value &&
      allows_higher_value &&
      disallows_maximum_value
  elsif @array
    disallows_all_values_in_array?
  end
end

def with_message(message)

def with_message(message)
  @expected_message = message if message
  self
end