class Rails::Dom::Testing::Assertions::SelectorAssertions::HTMLSelector

def extract_equality_tests(refute)

def extract_equality_tests(refute)
  comparisons = {}
  case comparator = @values.shift
  when Hash
    comparisons = comparator
  when String, Regexp
    comparisons[:text] = comparator
  when Integer
    comparisons[:count] = comparator
  when Range
    comparisons[:minimum] = comparator.begin
    comparisons[:maximum] = comparator.end
  when FalseClass
    comparisons[:count] = 0
  when NilClass, TrueClass
    comparisons[:minimum] = 1
  else
    raise ArgumentError, "I don't understand what you're trying to match"
  end
  if refute
    if comparisons[:count] || (comparisons[:minimum] && !comparator.nil?) || comparisons[:maximum]
      raise ArgumentError, "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match"
    end
    comparisons[:count] = 0
  end
  # By default we're looking for at least one match.
  if comparisons[:count]
    comparisons[:minimum] = comparisons[:maximum] = comparisons[:count]
  else
    comparisons[:minimum] ||= 1
  end
  if comparisons[:minimum] && comparisons[:maximum] && comparisons[:minimum] > comparisons[:maximum]
    raise ArgumentError, "Range begin or :minimum cannot be greater than Range end or :maximum"
  end
  @strict = comparisons[:strict]
  comparisons
end