Jelajahi Sumber

lrucache: test added code

Tests saved my butt, so I'd better contribute :).

These tests have been tested - substituting a null dispose function
causes an immediate failure.
Alan Jenkins 10 tahun lalu
induk
melakukan
0ee78240ee
1 mengubah file dengan 23 tambahan dan 0 penghapusan
  1. 23 0
      borg/testsuite/lrucache.py

+ 23 - 0
borg/testsuite/lrucache.py

@@ -1,5 +1,6 @@
 from ..lrucache import LRUCache
 from . import BaseTestCase
+from tempfile import TemporaryFile
 
 
 class LRUCacheTestCase(BaseTestCase):
@@ -24,3 +25,25 @@ class LRUCacheTestCase(BaseTestCase):
         self.assert_equal(len(c), 1)
         self.assert_raises(KeyError, lambda: c['c'])
         self.assert_equal(c['d'], 3)
+        c.clear()
+        self.assert_equal(c.items(), set())
+
+    def test_dispose(self):
+        c = LRUCache(2, dispose=lambda f: f.close())
+        f1 = TemporaryFile()
+        f2 = TemporaryFile()
+        f3 = TemporaryFile()
+        c[1] = f1
+        c[2] = f2
+        self.assert_equal(False, f2.closed)
+        c[3] = f3
+        self.assert_equal(False, 1 in c)
+        self.assert_equal(True, f1.closed)
+        self.assert_equal(True, 2 in c)
+        self.assert_equal(False, f2.closed)
+        del c[2]
+        self.assert_equal(False, 2 in c)
+        self.assert_equal(True, f2.closed)
+        c.clear()
+        self.assert_equal(c.items(), set())
+        self.assert_equal(True, f3.closed)