Пример #1
0
 def test_delitem(self):
   with self.assertRaises(KeyError):
     del LruCache()['key']
   pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
   cache = LruCache(pairs)
   with self.assertRaises(KeyError):
     del cache['key']
   for index, (key, value) in enumerate(pairs):
     del cache[key]
     self.assertEqual(cache.items(), pairs[index+1:][::-1])
   # start deleting from the tail
   cache.update(pairs)
   for index, (key, value) in enumerate(pairs[::-1]):
     del cache[key]
     index = len(pairs) - index - 1
     self.assertEqual(cache.items(), pairs[:index][::-1])
Пример #2
0
 def test_copy(self):
   pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
   cache = LruCache(pairs)
   self.assertEqual(cache.copy().items(), cache.items())
   self.assertEqual(cache.copy().keys(), cache.keys())
   self.assertEqual(LruCache().items(), LruCache().copy().items())
   self.assertEqual(LruCache().keys(), LruCache().copy().keys())
Пример #3
0
 def test_setitem(self):
   with self.assertRaises(ValueError):
     LruCache()['a'] = None
   with self.assertRaises(ValueError):
     LruCache()[None] = 'a'
   with self.assertRaises(ValueError):
     LruCache()[None] = None
   cache = LruCache(capacity=10)
   cache['a'] = 1
   cache['b'] = 2
   self.assertEqual(cache.items(), [('b', 2), ('a', 1)])
   cache['a'] = 3
   self.assertEqual(cache.items(), [('a', 3), ('b', 2)])
   cache['b'] = 4
   self.assertEqual(cache.items(), [('b', 4), ('a', 3)])
   cache['c'] = 5
   self.assertEqual(cache.items(), [('c', 5), ('b', 4), ('a', 3)])
   del cache['c']
   cache['c'] = 5
   self.assertEqual(cache.items(), [('c', 5), ('b', 4), ('a', 3)])
Пример #4
0
    def test_set_item(self):
        """Test putting item in cache."""
        cache = LruCache(3)

        cache['k1'] = 100
        cache['k2'] = 200
        cache['k3'] = 300
        cache['k4'] = 400

        self.assertEqual(len(cache), 3)
        self.assertListEqual(list(cache.items()), [('k2', 200), ('k3', 300),
                                                   ('k4', 400)])
Пример #5
0
 def test_init(self):
   with self.assertRaises(ValueError):
     LruCache(capacity=0)
   pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
   self.assertEqual(sorted(LruCache(pairs).items()), pairs)
   self.assertEqual(sorted(LruCache(dict(pairs)).items()), pairs)
   self.assertEqual(sorted(LruCache(**dict(pairs)).items()), pairs)
   self.assertEqual(sorted(LruCache(pairs, e=4, f=5, r=6).items()),
       pairs + [('e', 4), ('f', 5), ('r', 6)])
   cache = LruCache(pairs)
   cache.__init__([('e', 5), ('t', 6)])
   self.assertEqual(sorted(cache.items()), pairs + [('e', 5), ('t', 6)])
Пример #6
0
    def test_update_item(self):
        """Test update item in cache."""
        cache = LruCache(3)

        cache['k1'] = 100
        cache['k2'] = 200
        cache['k1'] = 300

        self.assertEqual(len(cache), 2)
        self.assertListEqual(list(cache.items()), [
            ('k2', 200),
            ('k1', 300),
        ])