예제 #1
0
 def setUp(self):
     self.s = MemStorageBackend()
예제 #2
0
class TestCaseMemStorageBackend(unittest.TestCase):

    def setUp(self):
        self.s = MemStorageBackend()

    def test_set(self):
        self.assertTrue(self.s.set('mykey', 'myval'))

    def test_contains_in(self):
        self.s.set('mykey', 'myval')
        self.assertTrue('mykey' in self.s)

    def test_get_exists(self):
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertEqual(self.s.get('mykey'), 'myval')

    def test_get_not_exists(self):
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertRaises(KeyError, self.s.get, 'badkey')

    def test_delete_exists(self):
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertEqual(self.s.get('mykey'), 'myval')
        self.s.delete('mykey')
        self.assertRaises(KeyError, self.s.get, 'mykey')

    def test_delete_not_exists(self):
        self.assertRaises(KeyError, self.s.delete, 'mykey')

    def test_int_key(self):
        self.assertTrue(self.s.set(123, 'myval'))
        # self.assertRaises(KeyError, self.s.get, '123')
        self.assertEqual(self.s.get(123), 'myval')

    def test_dict_value(self):
        # Check that we are able to store a complex value type
        # since most backends only support string we will return
        # a string type no matter what was saved.
        mykey = '234234'
        myval = {
            'spot': 'likes to run',
            'kind': 1234,
            'cmplx': (1, 2, 3, '123')
        }
        self.assertTrue(self.s.set(mykey, myval))
        self.assertEqual(str(self.s.get(mykey)), str(myval))

    def test_len(self):
        self.assertEqual(len(self.s), 0)
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertEqual(len(self.s), 1)
        self.assertTrue(self.s.set('mykey2', 'myval2'))
        self.assertEqual(len(self.s), 2)
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertEqual(len(self.s), 2)
        self.s.delete('mykey')
        self.assertEqual(len(self.s), 1)
        self.assertTrue(self.s.set('mykey', 'myval'))
        self.assertEqual(len(self.s), 2)
        self.assertTrue(self.s.set('mykey3', 'myval3'))
        self.assertEqual(len(self.s), 3)

    def test_iter(self):
        self.s.set('mykey', 'myval')
        self.s.set('mykey2', 'myval2')
        self.s.set('mykey', 'myval')
        self.s.delete('mykey')
        self.s.set('mykey', 'myval4')
        self.s.set('mykey3', 'myval3')
        self.assertItemsEqual(
            self.s.items(),
            [
                ('mykey', 'myval4'),
                ('mykey2', 'myval2'),
                ('mykey3', 'myval3'),
            ]
        )
        i = iter(self.s)
        items = [i.next(), i.next(), i.next()]
        self.assertItemsEqual(
            items,
            ['mykey', 'mykey2', 'mykey3'])
        self.assertRaises(StopIteration, i.next)
        i = iter(self.s)
        for k, v in self.s.iteritems():
            self.assertTrue((k, v))