File size: 1,391 Bytes
a5c1fa0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import pytest
from src.cache import LRUCache
from src.config import CACHE_MAX_SIZE


def test_cache_put_and_get():
    cache = LRUCache(max_size=CACHE_MAX_SIZE)
    cache.put("a", 1)
    assert cache.get("a") == 1


def test_cache_miss():
    cache = LRUCache(max_size=CACHE_MAX_SIZE)
    assert cache.get("nonexistent") is None


def test_cache_eviction():
    cache = LRUCache(max_size=3)
    cache.put("a", 1)
    cache.put("b", 2)
    cache.put("c", 3)
    cache.put("d", 4)  # should evict "a"
    assert cache.get("a") is None
    assert cache.get("d") == 4


def test_cache_lru_order():
    cache = LRUCache(max_size=3)
    cache.put("a", 1)
    cache.put("b", 2)
    cache.put("c", 3)
    cache.get("a")  # access "a" makes it most recent
    cache.put("d", 4)  # should evict "b" (least recently used)
    assert cache.get("a") == 1
    assert cache.get("b") is None


def test_cache_size():
    cache = LRUCache(max_size=5)
    assert cache.size == 0
    cache.put("x", 10)
    cache.put("y", 20)
    assert cache.size == 2


def test_cache_clear():
    cache = LRUCache(max_size=5)
    cache.put("a", 1)
    cache.put("b", 2)
    cache.clear()
    assert cache.size == 0
    assert cache.get("a") is None


def test_cache_update_existing():
    cache = LRUCache(max_size=3)
    cache.put("a", 1)
    cache.put("a", 100)
    assert cache.get("a") == 100
    assert cache.size == 1