Пример #1
0
def test_lfu():
    cache = Cache()

    cache['a'] = 'x'
    assert len(cache) == 1
    assert len(cache.queue) == 1

    _ = cache['a']
    assert len(cache) == 1
    assert len(cache.queue) == 2
    assert cache.cache['a'] == (2, 'x')

    _ = cache['a']
    assert len(cache) == 1
    assert len(cache.queue) == 3
    assert cache.cache['a'] == (3, 'x')

    cache.evict_one()
    assert len(cache) == 1
    assert len(cache.queue) == 2
    assert cache.cache['a'] == (2, 'x')

    cache.evict_one()
    assert len(cache) == 1
    assert len(cache.queue) == 1
    assert cache.cache['a'] == (1, 'x')

    cache.evict_one()
    assert len(cache) == 0
    assert len(cache.queue) == 0

    cache['a'] = 'x'
    assert len(cache) == 1
    assert len(cache.queue) == 1

    cache['a'] = 'y'
    assert len(cache) == 1
    assert len(cache.queue) == 2
    assert cache.cache['a'] == (2, 'y')