lrucache.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from attic.lrucache import LRUCache
  2. from attic.testsuite import AtticTestCase
  3. class LRUCacheTestCase(AtticTestCase):
  4. def test(self):
  5. c = LRUCache(2)
  6. self.assert_equal(len(c), 0)
  7. for i, x in enumerate('abc'):
  8. c[x] = i
  9. self.assert_equal(len(c), 2)
  10. self.assert_equal(set(c), set(['b', 'c']))
  11. self.assert_equal(set(c.items()), set([('b', 1), ('c', 2)]))
  12. self.assert_equal(False, 'a' in c)
  13. self.assert_equal(True, 'b' in c)
  14. self.assert_raises(KeyError, lambda: c['a'])
  15. self.assert_equal(c['b'], 1)
  16. self.assert_equal(c['c'], 2)
  17. c['d'] = 3
  18. self.assert_equal(len(c), 2)
  19. self.assert_equal(c['c'], 2)
  20. self.assert_equal(c['d'], 3)
  21. c['c'] = 22
  22. c['e'] = 4
  23. self.assert_equal(len(c), 2)
  24. self.assert_raises(KeyError, lambda: c['d'])
  25. self.assert_equal(c['c'], 22)
  26. self.assert_equal(c['e'], 4)
  27. del c['c']
  28. self.assert_equal(len(c), 1)
  29. self.assert_raises(KeyError, lambda: c['c'])
  30. self.assert_equal(c['e'], 4)
  31. def test_pop(self):
  32. c = LRUCache(2)
  33. c[1] = 1
  34. c[2] = 2
  35. c.pop(1)
  36. c[3] = 3