def METHOD_NAME(self):
    class Deletable:
        def __init__(self):
            self.deleted = False
        def __del__(self):
            self.deleted = True
    cache = LRUCache(10)
    obj_a = Deletable()
    self.assertIsNone(cache.get("a"))
    cache.insert("a", obj_a)
    self.assertIs(cache.get("a"), obj_a)
    # test eviction
    objects = [(i, Deletable()) for i in range(10)]
    for key, obj in objects:
        cache.insert(key, obj)
    # object A should have been evicted
    self.assertIsNone(cache.get("a"))
    self.assertTrue(obj_a.deleted)
    cache.insert("a", obj_a)
    for key, obj in objects[:-1]:
        # objects should have been evicted in insertion order
        self.assertIsNone(cache.get(key))
        self.assertTrue(obj.deleted)
        cache.insert(key, obj)
    # use "a" object
    self.assertIs(cache.get("a"), obj_a)
    # insert last object
    key, obj = objects[-1]
    cache.insert(key, obj)
    # "a" is recently used so should not be evicted now
    self.assertIs(cache.get("a"), obj_a)