mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Merge from 3.5.
This commit is contained in:
commit
b7d14a09c2
3 changed files with 22 additions and 69 deletions
|
@ -775,64 +775,5 @@ class CPythonSubclassMappingTests(mapping_tests.BasicTestMappingProtocol):
|
|||
self.assertRaises(KeyError, d.popitem)
|
||||
|
||||
|
||||
class SimpleLRUCache:
|
||||
|
||||
def __init__(self, size):
|
||||
super().__init__()
|
||||
self.size = size
|
||||
|
||||
def __getitem__(self, item):
|
||||
value = super().__getitem__(item)
|
||||
self.move_to_end(item)
|
||||
return value
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
while key not in self and len(self) >= self.size:
|
||||
self.popitem(last=False)
|
||||
super().__setitem__(key, value)
|
||||
self.move_to_end(key)
|
||||
|
||||
|
||||
class SimpleLRUCacheTests:
|
||||
|
||||
def test_add_after_full(self):
|
||||
c = self.type2test(2)
|
||||
c['t1'] = 1
|
||||
c['t2'] = 2
|
||||
c['t3'] = 3
|
||||
self.assertEqual(list(c), ['t2', 't3'])
|
||||
|
||||
def test_popitem(self):
|
||||
c = self.type2test(3)
|
||||
for i in range(1, 4):
|
||||
c[i] = i
|
||||
self.assertEqual(c.popitem(last=False), (1, 1))
|
||||
self.assertEqual(c.popitem(last=True), (3, 3))
|
||||
|
||||
def test_change_order_on_get(self):
|
||||
c = self.type2test(3)
|
||||
for i in range(1, 4):
|
||||
c[i] = i
|
||||
self.assertEqual(list(c), list(range(1, 4)))
|
||||
self.assertEqual(c[2], 2)
|
||||
self.assertEqual(list(c), [1, 3, 2])
|
||||
|
||||
|
||||
class PySimpleLRUCacheTests(SimpleLRUCacheTests, unittest.TestCase):
|
||||
|
||||
class type2test(SimpleLRUCache, py_coll.OrderedDict):
|
||||
pass
|
||||
|
||||
|
||||
@unittest.skipUnless(c_coll, 'requires the C version of the collections module')
|
||||
class CSimpleLRUCacheTests(SimpleLRUCacheTests, unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
class type2test(SimpleLRUCache, c_coll.OrderedDict):
|
||||
pass
|
||||
cls.type2test = type2test
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue