Exemple #1
0
async def test_mset_hash_tags(r):
    await r.flushdb()
    d = {'a{foo}': b('1'), 'b{foo}': b('2'), 'c{bar}': b('3')}
    assert await r.mset(d)
    for k, v in iter(d.items()):
        assert await r.mget(k) == [v]
Exemple #2
0
async def test_mset_kwargs(r):
    await r.flushdb()
    d = {'a': b('1'), 'b': b('2'), 'c': b('3')}
    assert await r.mset(**d)
    for k, v in iter(d.items()):
        assert await r.get(k) == v
Exemple #3
0
async def test_incrby(r):
    await r.flushdb()
    assert await r.incrby('a') == 1
    assert await r.incrby('a', 4) == 5
    assert await r.get('a') == b('5')
Exemple #4
0
async def test_incrbyfloat(r):
    await r.flushdb()
    assert await r.incrbyfloat('a') == 1.0
    assert await r.get('a') == b('1')
    assert await r.incrbyfloat('a', 1.1) == 2.1
    assert float(await r.get('a')) == float(2.1)
Exemple #5
0
async def test_zrem_multiple_keys(r):
    await r.flushdb()
    await r.zadd('a', a1=1, a2=2, a3=3)
    assert await r.zrem('a', 'a1', 'a2') == 2
    assert await r.zrange('a', 0, 5) == [b('a3')]
Exemple #6
0
async def test_getset(r):
    await r.flushdb()
    assert await r.getset('a', 'foo') is None
    assert await r.getset('a', 'bar') == b('foo')
    assert await r.get('a') == b('bar')
Exemple #7
0
async def test_zrevrangebylex(r):
    await r.flushdb()
    await r.zadd('a', a=0, b=0, c=0, d=0, e=0, f=0, g=0)
    assert await r.zrevrangebylex('a', '[c', '-') == [b('c'), b('b'), b('a')]
    assert await r.zrevrangebylex('a', '(c', '-') == [b('b'), b('a')]
    expected = [b('f'), b('e'), b('d'), b('c'), b('b')]
    assert await r.zrevrangebylex('a', '(g', '[aaa') == expected
    assert await r.zrevrangebylex('a', '+', '[f') == [b('g'), b('f')]
    expected = [b('d'), b('c')]
    assert await r.zrevrangebylex('a', '+', '-', start=3, num=2) == expected
Exemple #8
0
async def test_randomkey(r):
    await r.flushdb()
    assert await r.randomkey() is None
    for key in ('a', 'b', 'c'):
        await r.set(key, 1)
    assert await r.randomkey() in (b('a'), b('b'), b('c'))
async def test_pfadd(r):
    await r.flushdb()
    members = {b('1'), b('2'), b('3')}
    assert await r.pfadd('a', *members) == 1
    assert await r.pfadd('a', *members) == 0
    assert await r.pfcount('a') == len(members)
Exemple #10
0
async def test_append(r):
    await r.flushdb()
    assert await r.append('a', 'a1') == 2
    assert await r.get('a') == b('a1')
    assert await r.append('a', 'a2') == 4
    assert await r.get('a') == b('a1a2')
Exemple #11
0
async def test_zadd(r):
    await r.flushdb()
    await r.zadd('a', a1=1, a2=2, a3=3)
    assert await r.zrange('a', 0, -1) == [b('a1'), b('a2'), b('a3')]
Exemple #12
0
async def test_zrevrangebyscore(r):
    await r.flushdb()
    await r.zadd('a', a1=1, a2=2, a3=3, a4=4, a5=5)
    assert await r.zrevrangebyscore('a', 4, 2) == [b('a4'), b('a3'), b('a2')]

    # slicing with start/num
    expected = [b('a3'), b('a2')]
    assert await r.zrevrangebyscore('a', 4, 2, start=1, num=2) == expected

    # withscores
    expected = [(b('a4'), 4.0), (b('a3'), 3.0), (b('a2'), 2.0)]
    assert await r.zrevrangebyscore('a', 4, 2, withscores=True) == expected

    # custom score function
    expected = [(b('a4'), 4), (b('a3'), 3), (b('a2'), 2)]
    assert await r.zrevrangebyscore('a',
                                    4,
                                    2,
                                    withscores=True,
                                    score_cast_func=int) == expected
Exemple #13
0
async def test_zremrangebyrank(r):
    await r.flushdb()
    await r.zadd('a', a1=1, a2=2, a3=3, a4=4, a5=5)
    assert await r.zremrangebyrank('a', 1, 3) == 3
    assert await r.zrange('a', 0, 5) == [b('a1'), b('a5')]
Exemple #14
0
async def test_psetex(r):
    await r.flushdb()
    assert await r.psetex('a', 1000, 'value')
    assert await r.get('a') == b('value')
    assert 0 < await r.pttl('a') <= 1000
Exemple #15
0
async def test_getitem_and_setitem(r):
    await r.flushdb()
    await r.set('a', 'bar')
    assert await r.get('a') == b('bar')
Exemple #16
0
async def test_psetex_timedelta(r):
    await r.flushdb()
    expire_at = datetime.timedelta(milliseconds=1000)
    assert await r.psetex('a', expire_at, 'value')
    assert await r.get('a') == b('value')
    assert 0 < await r.pttl('a') <= 1000
Exemple #17
0
async def test_getrange(r):
    await r.flushdb()
    await r.set('a', 'foo')
    assert await r.getrange('a', 0, 0) == b('f')
    assert await r.getrange('a', 0, 2) == b('foo')
    assert await r.getrange('a', 3, 4) == b('')
Exemple #18
0
async def test_set_nx(r):
    await r.flushdb()
    assert await r.set('a', '1', nx=True)
    assert not await r.set('a', '2', nx=True)
    assert await r.get('a') == b('1')
Exemple #19
0
 async def test_pubsub_channels(self, r):
     p = r.pubsub(ignore_subscribe_messages=True)
     await p.subscribe('foo', 'bar', 'baz', 'quux')
     channels = sorted(await r.pubsub_channels())
     assert channels == [b('bar'), b('baz'), b('foo'), b('quux')]
     await p.unsubscribe()