diff options
Diffstat (limited to 'tests/test_commands.py')
-rw-r--r-- | tests/test_commands.py | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/tests/test_commands.py b/tests/test_commands.py index 904e27f..8929198 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -1840,6 +1840,7 @@ class TestRedisCommands: r.zadd('a', {'a1': 1, 'a2': 2, 'a3': 3}) assert r.zrange('a', 0, 1) == [b'a1', b'a2'] assert r.zrange('a', 1, 2) == [b'a2', b'a3'] + assert r.zrange('a', 0, 2, desc=True) == [b'a3', b'a2', b'a1'] # withscores assert r.zrange('a', 0, 1, withscores=True) == \ @@ -1851,6 +1852,46 @@ class TestRedisCommands: assert r.zrange('a', 0, 1, withscores=True, score_cast_func=int) == \ [(b'a1', 1), (b'a2', 2)] + def test_zrange_errors(self, r): + with pytest.raises(exceptions.DataError): + r.zrange('a', 0, 1, byscore=True, bylex=True) + with pytest.raises(exceptions.DataError): + r.zrange('a', 0, 1, bylex=True, withscores=True) + with pytest.raises(exceptions.DataError): + r.zrange('a', 0, 1, byscore=True, withscores=True, offset=4) + with pytest.raises(exceptions.DataError): + r.zrange('a', 0, 1, byscore=True, withscores=True, num=2) + + @skip_if_server_version_lt('6.2.0') + def test_zrange_params(self, r): + # bylex + r.zadd('a', {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0, 'f': 0, 'g': 0}) + assert r.zrange('a', '[aaa', '(g', bylex=True) == \ + [b'b', b'c', b'd', b'e', b'f'] + assert r.zrange('a', '[f', '+', bylex=True) == [b'f', b'g'] + assert r.zrange('a', '+', '[f', desc=True, bylex=True) == [b'g', b'f'] + assert r.zrange('a', '-', '+', bylex=True, offset=3, num=2) == \ + [b'd', b'e'] + assert r.zrange('a', '+', '-', desc=True, bylex=True, + offset=3, num=2) == \ + [b'd', b'c'] + + # byscore + r.zadd('a', {'a1': 1, 'a2': 2, 'a3': 3, 'a4': 4, 'a5': 5}) + assert r.zrange('a', 2, 4, byscore=True, offset=1, num=2) == \ + [b'a3', b'a4'] + assert r.zrange('a', 4, 2, desc=True, byscore=True, + offset=1, num=2) == \ + [b'a3', b'a2'] + assert r.zrange('a', 2, 4, byscore=True, withscores=True) == \ + [(b'a2', 2.0), (b'a3', 3.0), (b'a4', 4.0)] + assert r.zrange('a', 4, 2, desc=True, byscore=True, + withscores=True, score_cast_func=int) == \ + [(b'a4', 4), (b'a3', 3), (b'a2', 2)] + + # rev + assert r.zrange('a', 0, 1, desc=True) == [b'a5', b'a4'] + @skip_if_server_version_lt('6.2.0') def test_zrangestore(self, r): r.zadd('a', {'a1': 1, 'a2': 2, 'a3': 3}) @@ -1860,6 +1901,16 @@ class TestRedisCommands: assert r.zrange('b', 0, -1) == [b'a2', b'a3'] assert r.zrange('b', 0, -1, withscores=True) == \ [(b'a2', 2), (b'a3', 3)] + # reversed order + assert r.zrangestore('b', 'a', 1, 2, desc=True) + assert r.zrange('b', 0, -1) == [b'a1', b'a2'] + # by score + assert r.zrangestore('b', 'a', 1, 2, byscore=True, + offset=0, num=1) + assert r.zrange('b', 0, -1) == [b'a1'] + # by lex + assert r.zrange('a', '[a2', '(a3', bylex=True) == \ + [b'a2'] @skip_if_server_version_lt('2.8.9') def test_zrangebylex(self, r): @@ -1885,16 +1936,12 @@ class TestRedisCommands: def test_zrangebyscore(self, r): r.zadd('a', {'a1': 1, 'a2': 2, 'a3': 3, 'a4': 4, 'a5': 5}) assert r.zrangebyscore('a', 2, 4) == [b'a2', b'a3', b'a4'] - # slicing with start/num assert r.zrangebyscore('a', 2, 4, start=1, num=2) == \ [b'a3', b'a4'] - # withscores assert r.zrangebyscore('a', 2, 4, withscores=True) == \ [(b'a2', 2.0), (b'a3', 3.0), (b'a4', 4.0)] - - # custom score function assert r.zrangebyscore('a', 2, 4, withscores=True, score_cast_func=int) == \ [(b'a2', 2), (b'a3', 3), (b'a4', 4)] @@ -1958,15 +2005,12 @@ class TestRedisCommands: def test_zrevrangebyscore(self, r): r.zadd('a', {'a1': 1, 'a2': 2, 'a3': 3, 'a4': 4, 'a5': 5}) assert r.zrevrangebyscore('a', 4, 2) == [b'a4', b'a3', b'a2'] - # slicing with start/num assert r.zrevrangebyscore('a', 4, 2, start=1, num=2) == \ [b'a3', b'a2'] - # withscores assert r.zrevrangebyscore('a', 4, 2, withscores=True) == \ [(b'a4', 4.0), (b'a3', 3.0), (b'a2', 2.0)] - # custom score function assert r.zrevrangebyscore('a', 4, 2, withscores=True, score_cast_func=int) == \ |