diff options
author | Mark Tozzi <mark.tozzi@gmail.com> | 2012-06-20 15:57:36 -0400 |
---|---|---|
committer | Mark Tozzi <mark.tozzi@gmail.com> | 2012-06-20 15:57:36 -0400 |
commit | 5cbb5923813b02f71ebefee32cf3d5d6e054f9aa (patch) | |
tree | ef7b837d74d0a66cf8e74523d8bb6a93b753966c /tests/server_commands.py | |
parent | eaeb665840bf74604949dee7340c06dc4bb39569 (diff) | |
download | redis-py-5cbb5923813b02f71ebefee32cf3d5d6e054f9aa.tar.gz |
Added bitop command.
Diffstat (limited to 'tests/server_commands.py')
-rw-r--r-- | tests/server_commands.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/server_commands.py b/tests/server_commands.py index 69db1a6..199cf06 100644 --- a/tests/server_commands.py +++ b/tests/server_commands.py @@ -193,6 +193,44 @@ class ServerCommandsTestCase(unittest.TestCase): self.assertEquals(self.client.bitcount('a', -2, -1), 2) self.assertEquals(self.client.bitcount('a', 1, 1), 1) + def test_bitop_not_empty_string(self): + self.client.set('a', '') + self.client.bitop('not', 'r', 'a') + self.assertEquals(self.client.get('r'), None) + + def test_bitop_not(self): + test_str = chr(0xaa) + chr(0x00) + chr(0xff) + chr(0x55) + correct = ~0xaa00ff55 & 0xffffffff + self.client.set('a', test_str) + self.client.bitop('not', 'r', 'a') + self.assertEquals(int(self.client.get('r').encode('hex'), 16), correct) + + def test_bitop_not_in_place(self): + test_str = chr(0xaa) + chr(0x00) + chr(0xff) + chr(0x55) + correct = ~0xaa00ff55 & 0xffffffff + self.client.set('a', test_str) + self.client.bitop('not', 'a', 'a') + self.assertEquals(int(self.client.get('a').encode('hex'), 16), correct) + + def test_bitop_single_string(self): + test_str = chr(0x01) + chr(0x02) + chr(0xff) + self.client.set('a', test_str) + self.client.bitop('and', 'res1', 'a') + self.client.bitop('or', 'res2', 'a') + self.client.bitop('xor', 'res3', 'a') + self.assertEquals(self.client.get('res1'), test_str) + self.assertEquals(self.client.get('res2'), test_str) + self.assertEquals(self.client.get('res3'), test_str) + + def test_bitop_string_operands(self): + self.client.set('a', chr(0x01) + chr(0x02) + chr(0xff) + chr(0xff)) + self.client.set('b', chr(0x01) + chr(0x02) + chr(0xff)) + self.client.bitop('and', 'res1', 'a', 'b') + self.client.bitop('or', 'res2', 'a', 'b') + self.client.bitop('xor', 'res3', 'a', 'b') + self.assertEquals(int(self.client.get('res1').encode('hex'), 16), 0x0102ff00) + self.assertEquals(int(self.client.get('res2').encode('hex'), 16), 0x0102ffff) + self.assertEquals(int(self.client.get('res3').encode('hex'), 16), 0x000000ff) def test_getset(self): self.assertEquals(self.client.getset('a', 'foo'), None) |