summaryrefslogtreecommitdiff
path: root/tests/server_commands.py
diff options
context:
space:
mode:
authorKonstantin Merenkov <kmerenkov@gmail.com>2010-04-01 02:14:03 +0400
committerKonstantin Merenkov <kmerenkov@gmail.com>2010-04-01 02:14:03 +0400
commit9a4ee548b8066214fec0cbbb40fcd9812c3d17c7 (patch)
treeb777cc23fb8dfe2d48d5c483040fde14d77f45c7 /tests/server_commands.py
parente2772738e249ea47e5424627eca28f8689ab1dd8 (diff)
downloadredis-py-9a4ee548b8066214fec0cbbb40fcd9812c3d17c7.tar.gz
Move towards binary-safeness of keys and values.
* Dropped support of all protocols except multi-bulk the only protocol that yet to be released redis 2.0 is able understand * As a side-effect there is an 'execute_command' function exposed to the library user. As for now it is pretty useless :) * Added (only) two tests
Diffstat (limited to 'tests/server_commands.py')
-rw-r--r--tests/server_commands.py223
1 files changed, 129 insertions, 94 deletions
diff --git a/tests/server_commands.py b/tests/server_commands.py
index 2811ee9..da328ac 100644
--- a/tests/server_commands.py
+++ b/tests/server_commands.py
@@ -4,20 +4,20 @@ import datetime
from distutils.version import StrictVersion
class ServerCommandsTestCase(unittest.TestCase):
-
+
def setUp(self):
self.client = redis.Redis(host='localhost', port=6379, db=9)
self.client.flushdb()
-
+
def tearDown(self):
self.client.flushdb()
-
+
# GENERAL SERVER COMMANDS
def test_dbsize(self):
self.client['a'] = 'foo'
self.client['b'] = 'bar'
self.assertEquals(self.client.dbsize(), 2)
-
+
def test_get_and_set(self):
# get and set can't be tested independently of each other
self.assertEquals(self.client.get('a'), None)
@@ -30,35 +30,35 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.get('byte_string'), byte_string)
self.assertEquals(self.client.get('integer'), str(integer))
self.assertEquals(self.client.get('unicode_string').decode('utf-8'), unicode_string)
-
+
def test_getitem_and_setitem(self):
self.client['a'] = 'bar'
self.assertEquals(self.client['a'], 'bar')
-
+
def test_delete(self):
self.assertEquals(self.client.delete('a'), False)
self.client['a'] = 'foo'
self.assertEquals(self.client.delete('a'), True)
-
+
def test_delitem(self):
self.client['a'] = 'foo'
del self.client['a']
self.assertEquals(self.client['a'], None)
-
+
def test_info(self):
self.client['a'] = 'foo'
self.client['b'] = 'bar'
info = self.client.info()
self.assert_(isinstance(info, dict))
self.assertEquals(info['db9']['keys'], 2)
-
+
def test_lastsave(self):
self.assert_(isinstance(self.client.lastsave(), datetime.datetime))
-
+
def test_ping(self):
self.assertEquals(self.client.ping(), True)
-
-
+
+
# KEYS
def test_decr(self):
self.assertEquals(self.client.decr('a'), -1)
@@ -67,21 +67,21 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client['a'], '-2')
self.assertEquals(self.client.decr('a', amount=5), -7)
self.assertEquals(self.client['a'], '-7')
-
+
def test_exists(self):
self.assertEquals(self.client.exists('a'), False)
self.client['a'] = 'foo'
self.assertEquals(self.client.exists('a'), True)
-
+
def expire(self):
self.assertEquals(self.client.expire('a'), False)
self.client['a'] = 'foo'
self.assertEquals(self.client.expire('a'), True)
-
+
def test_getset(self):
self.assertEquals(self.client.getset('a', 'foo'), None)
self.assertEquals(self.client.getset('a', 'bar'), 'foo')
-
+
def test_incr(self):
self.assertEquals(self.client.incr('a'), 1)
self.assertEquals(self.client['a'], '1')
@@ -89,30 +89,30 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client['a'], '2')
self.assertEquals(self.client.incr('a', amount=5), 7)
self.assertEquals(self.client['a'], '7')
-
+
def test_keys(self):
self.assertEquals(self.client.keys(), [])
keys = set(['test_a', 'test_b', 'testc'])
for key in keys:
self.client[key] = 1
- self.assertEquals(set(self.client.keys(pattern='test_*')),
+ self.assertEquals(set(self.client.keys(pattern='test_*')),
keys - set(['testc']))
self.assertEquals(set(self.client.keys(pattern='test*')), keys)
-
+
def test_mget(self):
self.assertEquals(self.client.mget(['a', 'b']), [None, None])
self.client['a'] = '1'
self.client['b'] = '2'
self.client['c'] = '3'
- self.assertEquals(self.client.mget(['a', 'other', 'b', 'c']),
+ self.assertEquals(self.client.mget(['a', 'other', 'b', 'c']),
['1', None, '2', '3'])
-
+
def test_mset(self):
d = {'a': '1', 'b': '2', 'c': '3'}
self.assert_(self.client.mset(d))
for k,v in d.iteritems():
self.assertEquals(self.client[k], v)
-
+
def test_msetnx(self):
d = {'a': '1', 'b': '2', 'c': '3'}
self.assert_(self.client.msetnx(d))
@@ -121,33 +121,33 @@ class ServerCommandsTestCase(unittest.TestCase):
for k,v in d.iteritems():
self.assertEquals(self.client[k], v)
self.assertEquals(self.client['d'], None)
-
+
def test_randomkey(self):
self.assertEquals(self.client.randomkey(), None)
self.client['a'] = '1'
self.client['b'] = '2'
self.client['c'] = '3'
self.assert_(self.client.randomkey() in ('a', 'b', 'c'))
-
+
def test_rename(self):
self.client['a'] = '1'
self.assert_(self.client.rename('a', 'b'))
self.assertEquals(self.client['a'], None)
self.assertEquals(self.client['b'], '1')
-
+
def test_renamenx(self):
self.client['a'] = '1'
self.client['b'] = '2'
self.assert_(not self.client.renamenx('a', 'b'))
self.assertEquals(self.client['a'], '1')
self.assertEquals(self.client['b'], '2')
-
+
def test_setnx(self):
self.assert_(self.client.setnx('a', '1'))
self.assertEquals(self.client['a'], '1')
self.assert_(not self.client.setnx('a', '2'))
self.assertEquals(self.client['a'], '1')
-
+
def test_ttl(self):
self.assertEquals(self.client.ttl('a'), None)
self.client['a'] = '1'
@@ -156,7 +156,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# this could potentially fail if for some reason there's a gap of
# time between these commands.
self.assertEquals(self.client.ttl('a'), 10)
-
+
def test_type(self):
self.assertEquals(self.client.type('a'), 'none')
self.client['a'] = '1'
@@ -170,12 +170,12 @@ class ServerCommandsTestCase(unittest.TestCase):
del self.client['a']
self.client.zadd('a', '1', 1)
self.assertEquals(self.client.type('a'), 'zset')
-
+
# LISTS
def make_list(self, name, l):
for i in l:
self.client.rpush(name, i)
-
+
def test_blpop(self):
self.make_list('a', 'ab')
self.make_list('b', 'cd')
@@ -184,7 +184,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.blpop(['b', 'a'], timeout=1), ['a', 'a'])
self.assertEquals(self.client.blpop(['b', 'a'], timeout=1), ['a', 'b'])
self.assertEquals(self.client.blpop(['b', 'a'], timeout=1), None)
-
+
def test_brpop(self):
self.make_list('a', 'ab')
self.make_list('b', 'cd')
@@ -193,7 +193,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.brpop(['b', 'a'], timeout=1), ['a', 'b'])
self.assertEquals(self.client.brpop(['b', 'a'], timeout=1), ['a', 'a'])
self.assertEquals(self.client.brpop(['b', 'a'], timeout=1), None)
-
+
def test_lindex(self):
# no key
self.assertEquals(self.client.lindex('a', '0'), None)
@@ -206,7 +206,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lindex('a', '0'), 'a')
self.assertEquals(self.client.lindex('a', '1'), 'b')
self.assertEquals(self.client.lindex('a', '2'), 'c')
-
+
def test_llen(self):
# no key
self.assertEquals(self.client.llen('a'), 0)
@@ -217,7 +217,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_list('a', 'abc')
self.assertEquals(self.client.llen('a'), 3)
-
+
def test_lpop(self):
# no key
self.assertEquals(self.client.lpop('a'), None)
@@ -231,7 +231,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lpop('a'), 'b')
self.assertEquals(self.client.lpop('a'), 'c')
self.assertEquals(self.client.lpop('a'), None)
-
+
def test_lpush(self):
# key is not a list
self.client['a'] = 'b'
@@ -247,7 +247,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assert_(self.client.lpush('a', 'a'))
self.assertEquals(self.client.lindex('a', 0), 'a')
self.assertEquals(self.client.lindex('a', 1), 'b')
-
+
def test_lrange(self):
# no key
self.assertEquals(self.client.lrange('a', 0, 1), None)
@@ -259,7 +259,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_list('a', 'abcde')
self.assertEquals(self.client.lrange('a', 0, 2), ['a', 'b', 'c'])
self.assertEquals(self.client.lrange('a', 2, 10), ['c', 'd', 'e'])
-
+
def test_lrem(self):
# no key
self.assertEquals(self.client.lrem('a', 'foo'), 0)
@@ -274,7 +274,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lrem('a', 'a'), 3)
# remove all the elements in the list means the key is deleted
self.assertEquals(self.client.lrange('a', 0, 1), None)
-
+
def test_lset(self):
# no key
self.assertRaises(redis.ResponseError, self.client.lset, 'a', 1, 'b')
@@ -287,7 +287,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lrange('a', 0, 2), ['a', 'b', 'c'])
self.assert_(self.client.lset('a', 1, 'd'))
self.assertEquals(self.client.lrange('a', 0, 2), ['a', 'd', 'c'])
-
+
def test_ltrim(self):
# no key -- TODO: Not sure why this is actually true.
self.assert_(self.client.ltrim('a', 0, 2))
@@ -299,7 +299,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_list('a', 'abc')
self.assert_(self.client.ltrim('a', 0, 1))
self.assertEquals(self.client.lrange('a', 0, 5), ['a', 'b'])
-
+
def test_lpop(self):
# no key
self.assertEquals(self.client.lpop('a'), None)
@@ -313,7 +313,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lpop('a'), 'b')
self.assertEquals(self.client.lpop('a'), 'c')
self.assertEquals(self.client.lpop('a'), None)
-
+
def test_rpop(self):
# no key
self.assertEquals(self.client.rpop('a'), None)
@@ -327,7 +327,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.rpop('a'), 'b')
self.assertEquals(self.client.rpop('a'), 'a')
self.assertEquals(self.client.rpop('a'), None)
-
+
def test_rpoplpush(self):
# no src key
self.make_list('b', ['b1'])
@@ -354,7 +354,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.lrange('a', 0, 2), ['a1', 'a2'])
self.assertEquals(self.client.lrange('b', 0, 4),
['a3', 'b1', 'b2', 'b3'])
-
+
def test_rpush(self):
# key is not a list
self.client['a'] = 'b'
@@ -370,12 +370,12 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assert_(self.client.rpush('a', 'b'))
self.assertEquals(self.client.lindex('a', 0), 'a')
self.assertEquals(self.client.lindex('a', 1), 'b')
-
+
# Set commands
def make_set(self, name, l):
for i in l:
self.client.sadd(name, i)
-
+
def test_sadd(self):
# key is not a set
self.client['a'] = 'a'
@@ -385,7 +385,7 @@ class ServerCommandsTestCase(unittest.TestCase):
members = set(['a1', 'a2', 'a3'])
self.make_set('a', members)
self.assertEquals(self.client.smembers('a'), members)
-
+
def test_scard(self):
# key is not a set
self.client['a'] = 'a'
@@ -394,7 +394,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_set('a', 'abc')
self.assertEquals(self.client.scard('a'), 3)
-
+
def test_sdiff(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -404,7 +404,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_set('b', ['b1', 'a2', 'b3'])
self.assertEquals(self.client.sdiff(['a', 'b']), set(['a1', 'a3']))
-
+
def test_sdiffstore(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -418,7 +418,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.assertEquals(self.client.sdiffstore('c', ['a', 'b']), 2)
self.assertEquals(self.client.smembers('c'), set(['a1', 'a3']))
-
+
def test_sinter(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -428,7 +428,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_set('b', ['a1', 'b2', 'a3'])
self.assertEquals(self.client.sinter(['a', 'b']), set(['a1', 'a3']))
-
+
def test_sinterstore(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -442,7 +442,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.assertEquals(self.client.sinterstore('c', ['a', 'b']), 2)
self.assertEquals(self.client.smembers('c'), set(['a1', 'a3']))
-
+
def test_sismember(self):
# key is not a set
self.client['a'] = 'a'
@@ -454,7 +454,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.sismember('a', 'b'), True)
self.assertEquals(self.client.sismember('a', 'c'), True)
self.assertEquals(self.client.sismember('a', 'd'), False)
-
+
def test_smembers(self):
# key is not a set
self.client['a'] = 'a'
@@ -463,7 +463,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_set('a', 'abc')
self.assertEquals(self.client.smembers('a'), set(['a', 'b', 'c']))
-
+
def test_smove(self):
# src key is not set
self.make_set('b', ['b1', 'b2'])
@@ -485,7 +485,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assert_(self.client.smove('a', 'b', 'a1'))
self.assertEquals(self.client.smembers('a'), set(['a2']))
self.assertEquals(self.client.smembers('b'), set(['b1', 'b2', 'a1']))
-
+
def test_spop(self):
# key is not set
self.assertEquals(self.client.spop('a'), None)
@@ -498,7 +498,7 @@ class ServerCommandsTestCase(unittest.TestCase):
value = self.client.spop('a')
self.assert_(value in 'abc')
self.assertEquals(self.client.smembers('a'), set('abc') - set(value))
-
+
def test_srandmember(self):
# key is not set
self.assertEquals(self.client.srandmember('a'), None)
@@ -509,7 +509,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_set('a', 'abc')
self.assert_(self.client.srandmember('a') in 'abc')
-
+
def test_srem(self):
# key is not set
self.assertEquals(self.client.srem('a', 'a'), False)
@@ -522,7 +522,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.srem('a', 'd'), False)
self.assertEquals(self.client.srem('a', 'b'), True)
self.assertEquals(self.client.smembers('a'), set('ac'))
-
+
def test_sunion(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -533,7 +533,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_set('b', ['a1', 'b2', 'a3'])
self.assertEquals(self.client.sunion(['a', 'b']),
set(['a1', 'a2', 'a3', 'b2']))
-
+
def test_sunionstore(self):
# some key is not a set
self.make_set('a', ['a1', 'a2', 'a3'])
@@ -548,16 +548,16 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.sunionstore('c', ['a', 'b']), 4)
self.assertEquals(self.client.smembers('c'),
set(['a1', 'a2', 'a3', 'b2']))
-
+
# SORTED SETS
def make_zset(self, name, d):
for k,v in d.items():
self.client.zadd(name, k, v)
-
+
def test_zadd(self):
self.make_zset('a', {'a1': 1, 'a2': 2, 'a3': 3})
self.assertEquals(self.client.zrange('a', 0, 3), ['a1', 'a2', 'a3'])
-
+
def test_zcard(self):
# key is not a zset
self.client['a'] = 'a'
@@ -566,7 +566,7 @@ class ServerCommandsTestCase(unittest.TestCase):
# real logic
self.make_zset('a', {'a1': 1, 'a2': 2, 'a3': 3})
self.assertEquals(self.client.zcard('a'), 3)
-
+
def test_zincrby(self):
# key is not a zset
self.client['a'] = 'a'
@@ -578,7 +578,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zincrby('a', 'a3', amount=5), 8.0)
self.assertEquals(self.client.zscore('a', 'a2'), 3.0)
self.assertEquals(self.client.zscore('a', 'a3'), 8.0)
-
+
def test_zrange(self):
# key is not a zset
self.client['a'] = 'a'
@@ -594,8 +594,8 @@ class ServerCommandsTestCase(unittest.TestCase):
[('a2', 2.0), ('a3', 3.0)])
# a non existant key should return None
self.assertEquals(self.client.zrange('b', 0, 1, withscores=True), None)
-
-
+
+
def test_zrangebyscore(self):
# key is not a zset
self.client['a'] = 'a'
@@ -612,7 +612,7 @@ class ServerCommandsTestCase(unittest.TestCase):
[('a2', 2.0), ('a3', 3.0), ('a4', 4.0)])
# a non existant key should return None
self.assertEquals(self.client.zrangebyscore('b', 0, 1, withscores=True), None)
-
+
def test_zrank(self):
# key is not a zset
self.client['a'] = 'a'
@@ -625,7 +625,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zrank('a', 'a3'), 2)
self.assertEquals(self.client.zrank('a', 'a4'), 3)
self.assertEquals(self.client.zrank('a', 'a5'), 4)
-
+
def test_zrem(self):
# key is not a zset
self.client['a'] = 'a'
@@ -637,7 +637,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zrange('a', 0, 5), ['a1', 'a3'])
self.assertEquals(self.client.zrem('a', 'b'), False)
self.assertEquals(self.client.zrange('a', 0, 5), ['a1', 'a3'])
-
+
def test_zremrangebyscore(self):
# key is not a zset
self.client['a'] = 'a'
@@ -650,7 +650,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zrange('a', 0, 5), ['a1', 'a5'])
self.assertEquals(self.client.zremrangebyscore('a', 2, 4), 0)
self.assertEquals(self.client.zrange('a', 0, 5), ['a1', 'a5'])
-
+
def test_zrevrange(self):
# key is not a zset
self.client['a'] = 'a'
@@ -667,7 +667,7 @@ class ServerCommandsTestCase(unittest.TestCase):
[('a2', 2.0), ('a1', 1.0)])
# a non existant key should return None
self.assertEquals(self.client.zrange('b', 0, 1, withscores=True), None)
-
+
def test_zrevrank(self):
# key is not a zset
self.client['a'] = 'a'
@@ -680,7 +680,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zrevrank('a', 'a3'), 2)
self.assertEquals(self.client.zrevrank('a', 'a4'), 3)
self.assertEquals(self.client.zrevrank('a', 'a5'), 4)
-
+
def test_zscore(self):
# key is not a zset
self.client['a'] = 'a'
@@ -691,12 +691,12 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.zscore('a', 'a2'), 2.0)
# test a non-existant member
self.assertEquals(self.client.zscore('a', 'a4'), None)
-
+
# HASHES
def make_hash(self, key, d):
for k,v in d.iteritems():
self.client.hset(key, k, v)
-
+
def test_hget_and_hset(self):
# key is not a hash
self.client['a'] = 'a'
@@ -715,7 +715,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.hget('a', 'a4'), '4')
# key inside of hash that doesn't exist returns null value
self.assertEquals(self.client.hget('a', 'b'), None)
-
+
def test_hdel(self):
# key is not a hash
self.client['a'] = 'a'
@@ -728,7 +728,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.hget('a', 'a2'), '2')
self.assert_(self.client.hdel('a', 'a2'))
self.assertEquals(self.client.hget('a', 'a2'), None)
-
+
def test_hexists(self):
# key is not a hash
self.client['a'] = 'a'
@@ -742,7 +742,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.hexists('a', 'a4'), False)
self.client.hdel('a', 'a1')
self.assertEquals(self.client.hexists('a', 'a1'), False)
-
+
def test_hgetall(self):
# key is not a hash
self.client['a'] = 'a'
@@ -755,7 +755,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_hash('a', h)
remote_hash = self.client.hgetall('a')
self.assertEquals(h, remote_hash)
-
+
def test_hincrby(self):
# key is not a hash
self.client['a'] = 'a'
@@ -773,9 +773,9 @@ class ServerCommandsTestCase(unittest.TestCase):
# finally a key that's not an int
self.client.hset('a', 'a3', 'foo')
self.assertEquals(self.client.hincrby('a', 'a3'), 1)
-
-
-
+
+
+
def test_hkeys(self):
# key is not a hash
self.client['a'] = 'a'
@@ -791,7 +791,7 @@ class ServerCommandsTestCase(unittest.TestCase):
remote_keys = self.client.hkeys('a')
remote_keys.sort()
self.assertEquals(keys, remote_keys)
-
+
def test_hlen(self):
# key is not a hash
self.client['a'] = 'a'
@@ -804,7 +804,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.hlen('a'), 3)
self.client.hdel('a', 'a3')
self.assertEquals(self.client.hlen('a'), 2)
-
+
def test_hvals(self):
# key is not a hash
self.client['a'] = 'a'
@@ -820,7 +820,7 @@ class ServerCommandsTestCase(unittest.TestCase):
remote_vals = self.client.hvals('a')
remote_vals.sort()
self.assertEquals(vals, remote_vals)
-
+
# SORT
def test_sort_bad_key(self):
# key is not set
@@ -829,15 +829,15 @@ class ServerCommandsTestCase(unittest.TestCase):
self.client['a'] = 'a'
self.assertRaises(redis.ResponseError, self.client.sort, 'a')
del self.client['a']
-
+
def test_sort_basic(self):
self.make_list('a', '3214')
self.assertEquals(self.client.sort('a'), ['1', '2', '3', '4'])
-
+
def test_sort_limited(self):
self.make_list('a', '3214')
self.assertEquals(self.client.sort('a', start=1, num=2), ['2', '3'])
-
+
def test_sort_by(self):
self.client['score:1'] = 8
self.client['score:2'] = 3
@@ -845,7 +845,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_list('a_values', '123')
self.assertEquals(self.client.sort('a_values', by='score:*'),
['2', '3', '1'])
-
+
def test_sort_get(self):
self.client['user:1'] = 'u1'
self.client['user:2'] = 'u2'
@@ -853,22 +853,22 @@ class ServerCommandsTestCase(unittest.TestCase):
self.make_list('a', '231')
self.assertEquals(self.client.sort('a', get='user:*'),
['u1', 'u2', 'u3'])
-
+
def test_sort_desc(self):
self.make_list('a', '231')
self.assertEquals(self.client.sort('a', desc=True), ['3', '2', '1'])
-
+
def test_sort_alpha(self):
self.make_list('a', 'ecbda')
self.assertEquals(self.client.sort('a', alpha=True),
['a', 'b', 'c', 'd', 'e'])
-
+
def test_sort_store(self):
self.make_list('a', '231')
self.assertEquals(self.client.sort('a', store='sorted_values'), 3)
self.assertEquals(self.client.lrange('sorted_values', 0, 5),
['1', '2', '3'])
-
+
def test_sort_all_options(self):
self.client['user:1:username'] = 'zeus'
self.client['user:2:username'] = 'titan'
@@ -878,7 +878,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.client['user:6:username'] = 'athena'
self.client['user:7:username'] = 'hades'
self.client['user:8:username'] = 'dionysus'
-
+
self.client['user:1:favorite_drink'] = 'yuengling'
self.client['user:2:favorite_drink'] = 'rum'
self.client['user:3:favorite_drink'] = 'vodka'
@@ -887,11 +887,46 @@ class ServerCommandsTestCase(unittest.TestCase):
self.client['user:6:favorite_drink'] = 'water'
self.client['user:7:favorite_drink'] = 'gin'
self.client['user:8:favorite_drink'] = 'apple juice'
-
+
self.make_list('gods', '12345678')
num = self.client.sort('gods', start=2, num=4, by='user:*:username',
get='user:*:favorite_drink', desc=True, alpha=True, store='sorted')
self.assertEquals(num, 4)
self.assertEquals(self.client.lrange('sorted', 0, 10),
['vodka', 'milk', 'gin', 'apple juice'])
-
+
+
+ ## BINARY SAFE
+ # TODO add more tests
+ def test_binary_get_set(self):
+ self.assertTrue(self.client.set(' foo bar ', '123'))
+ self.assertEqual(self.client.get(' foo bar '), '123')
+
+ self.assertTrue(self.client.set(' foo\r\nbar\r\n ', '456'))
+ self.assertEqual(self.client.get(' foo\r\nbar\r\n '), '456')
+
+ self.assertTrue(self.client.set(' \r\n\t\x07\x13 ', '789'))
+ self.assertEqual(self.client.get(' \r\n\t\x07\x13 '), '789')
+
+ self.assertEqual(sorted(self.client.keys('*')), [' \r\n\t\x07\x13 ', ' foo\r\nbar\r\n ', ' foo bar '])
+
+ self.assertTrue(self.client.delete(' foo bar '))
+ self.assertTrue(self.client.delete(' foo\r\nbar\r\n '))
+ self.assertTrue(self.client.delete(' \r\n\t\x07\x13 '))
+
+ def test_binary_lists(self):
+ mapping = {'foo bar': '123',
+ 'foo\r\nbar\r\n': '456',
+ 'foo\tbar\x07': '789',
+ }
+ # fill in lists
+ for key, value in mapping.iteritems():
+ for c in value:
+ self.assertTrue(self.client.rpush(key, c))
+
+ # check that KEYS returns all the keys as they are
+ self.assertEqual(sorted(self.client.keys('*')), sorted(mapping.keys()))
+
+ # check that it is possible to get list content by key name
+ for key in mapping.keys():
+ self.assertEqual(self.client.lrange(key, 0, -1), list(mapping[key]))