summaryrefslogtreecommitdiff
path: root/tests/encoding.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/encoding.py')
-rw-r--r--tests/encoding.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/encoding.py b/tests/encoding.py
new file mode 100644
index 0000000..245a6df
--- /dev/null
+++ b/tests/encoding.py
@@ -0,0 +1,44 @@
+from __future__ import with_statement
+import redis
+from redis.connection import ConnectionPool, PythonParser, HiredisParser
+import unittest
+
+class EncodingTestCase(unittest.TestCase):
+ def setUp(self):
+ self.client = redis.Redis(host='localhost', port=6379, db=9,
+ charset='utf-8')
+ self.client.flushdb()
+
+ def tearDown(self):
+ self.client.flushdb()
+
+ def test_simple_encoding(self):
+ unicode_string = unichr(3456) + u'abcd' + unichr(3421)
+ self.client.set('unicode-string', unicode_string)
+ cached_val = self.client.get('unicode-string')
+ self.assertEquals('unicode', type(cached_val).__name__,
+ 'Cache returned value with type "%s", expected "unicode"' \
+ % type(cached_val).__name__
+ )
+ self.assertEqual(unicode_string, cached_val)
+
+ def test_list_encoding(self):
+ unicode_string = unichr(3456) + u'abcd' + unichr(3421)
+ result = [unicode_string, unicode_string, unicode_string]
+ for i in range(len(result)):
+ self.client.rpush('a', unicode_string)
+ self.assertEquals(self.client.lrange('a', 0, -1), result)
+
+class PythonParserEncodingTestCase(EncodingTestCase):
+ def setUp(self):
+ pool = ConnectionPool(host='localhost', port=6379, db=9,
+ encoding='utf-8', decode_responses=True, parser_class=PythonParser)
+ self.client = redis.Redis(connection_pool=pool)
+ self.client.flushdb()
+
+class HiredisEncodingTestCase(EncodingTestCase):
+ def setUp(self):
+ pool = ConnectionPool(host='localhost', port=6379, db=9,
+ encoding='utf-8', decode_responses=True, parser_class=HiredisParser)
+ self.client = redis.Redis(connection_pool=pool)
+ self.client.flushdb()