lrucache.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. from attic.lrucache import LRUCache
  2. from attic.testsuite import AtticTestCase
  3. class LRUCacheTestCase(AtticTestCase):
  4. def test(self):
  5. c = LRUCache(2, dispose=lambda _: None)
  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. del c['c']
  22. self.assert_equal(len(c), 1)
  23. self.assert_raises(KeyError, lambda: c['c'])
  24. self.assert_equal(c['d'], 3)
  25. def test_pop(self):
  26. c = LRUCache(2, dispose=lambda _: None)
  27. c[1] = 1
  28. c[2] = 2
  29. c.pop(1)
  30. c[3] = 3