Sha256: 52635ae7d09c018a947e3cb9598bf0e384d8dd7cf144a3027377c4877b2facd4

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

describe '#zrevrangebyscore(key, start, stop [:with_scores => true] [:limit => [offset count]])' do
  before do
    @key = 'mock-redis-test:zrevrangebyscore'
    @redises.zadd(@key, 1, 'Washington')
    @redises.zadd(@key, 2, 'Adams')
    @redises.zadd(@key, 3, 'Jefferson')
    @redises.zadd(@key, 4, 'Madison')
  end

  context 'when the zset is empty' do
    before do
      @redises.del(@key)
    end

    it 'should return an empty array' do
      @redises.exists(@key).should == false
      @redises.zrevrangebyscore(@key, 0, 4).should == []
    end
  end

  it 'returns the elements in order by score' do
    @redises.zrevrangebyscore(@key, 4, 3).should == %w[Madison Jefferson]
  end

  it 'returns the scores when :with_scores is specified' do
    @redises.zrevrangebyscore(@key, 4, 3, :with_scores => true).
      should == [['Madison', 4.0], ['Jefferson', 3.0]]
  end

  it 'returns the scores when :withscores is specified' do
    @redises.zrevrangebyscore(@key, 4, 3, :withscores => true).
      should == [['Madison', 4.0], ['Jefferson', 3.0]]
  end

  it 'treats +inf as positive infinity' do
    @redises.zrevrangebyscore(@key, '+inf', 3).
      should == %w[Madison Jefferson]
  end

  it 'honors the :limit => [offset count] argument' do
    @redises.zrevrangebyscore(@key, 100, -100, :limit => [1, 2]).
      should == %w[Jefferson Adams]
  end

  it "raises an error if :limit isn't a 2-tuple" do
    lambda do
      @redises.zrevrangebyscore(@key, 100, -100, :limit => [1, 2, 3])
    end.should raise_error(RuntimeError)

    lambda do
      @redises.zrevrangebyscore(@key, 100, -100, :limit => '1, 2')
    end.should raise_error(RedisMultiplexer::MismatchedResponse)
  end

  it_should_behave_like 'a zset-only command'
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mock_redis-0.15.0 spec/commands/zrevrangebyscore_spec.rb