module FakeRedis::GeoCommands

def do_georadius(set, center, radius, unit, args)

def do_georadius(set, center, radius, unit, args)
  points = set.points_within_radius(center, radius)
  options = georadius_options(args)
  if options[:asc]
    points.sort_by! { |p| p.distance_to(center) }
  elsif options[:desc]
    points.sort_by! { |p| -p.distance_to(center) }
  end
  points = points.take(options[:count]) if options[:count]
  extras = options[:extras]
  return points.map(&:name) if extras.empty?
  points.map do |point|
    member = [point.name]
    extras.each do |extra|
      case extra
      when "WITHCOORD"
        member << [point.lon.to_s, point.lat.to_s]
      when "WITHDIST"
        distance = point.distance_to(center)
        distance_in_units = distance / DISTANCE_UNITS[unit]
        member << distance_in_units.round(REDIS_DOUBLE_PRECISION).to_s
      when "WITHHASH"
        member << point.geohash(REDIS_GEOHASH_SIZE)
      end
    end
    member
  end
end