Пример #1
0
def test_overflow_after_clear():
    lru = LruCache(1)

    lru.clear()
    lru.set('a', 10)
    lru.set('b', 20)
    assert lru.get('c') == SENTINEL
Пример #2
0
def test_maxsize_compatibility_check():

    lru = LruCache(None)
    lru.set('a', 10)
    lru.set('b', 20)

    assert lru.get('a') == 10

    lru = LruCache(0)
    lru.set('a', 10)

    assert lru.get('a') == SENTINEL

    lru = LruCache('test')
    with pytest.raises(TypeError):
        lru.set('a', 10)
Пример #3
0
def test_expire_object():
    lru = LruCache(3)

    now_mock = MagicMock()
    now_mock.return_value = 0
    lru.now = now_mock

    lru.set('a', 10, expire=1)
    lru.set('b', 20, expire=2)
    lru.set('c', 30, expire=3)  # a - b - c
    # Check if cache works well
    assert lru.get('a') == 10  # b - c - a
    # Check if 'a' key expired
    now_mock.return_value = 1
    assert lru.get('a') == SENTINEL  # b - c
    # Check if lru logic works well
    lru.set('d', 40, expire=4)  # b - c - d
    assert lru.get('b') == 20  # c - d - b
    # Check if 'c' key not expired
    assert lru.get('c') == 30  # d - b - c
    lru.set('e', 50)  # b - c - e
    assert lru.get('d') == SENTINEL
Пример #4
0
def test_lru_object():
    lru = LruCache(3)

    lru.set('a', 10)
    lru.set('b', 20)
    lru.set('c', 30)
    assert 10 == lru.get('a')
    lru.set('d', 40)
    assert SENTINEL is lru.get('b')
    assert 30 == lru.get('c')

    lru.delete('c')
    assert 10 == lru.get('a')
    assert SENTINEL is lru.get('b')
    assert SENTINEL is lru.get('c')
    assert 40 == lru.get('d')

    lru.clear()
    for c in 'abcd':
        assert SENTINEL is lru.get(c)

    lru.cache_info()