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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
|
'''
Copyright (C) 2024-2025 Mo Zhou <lumin@debian.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
import os
import pytest
import numpy as np
import tempfile
from debgpt.cache import Cache
def test_cache_init(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache.close()
def test_cache_setitem(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
def test_cache_getitem(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert cache['test key'] == 'test value'
with pytest.raises(KeyError):
_ = cache['non-exist key']
def test_cache_delitem(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
del cache['test key']
with pytest.raises(KeyError):
del cache['test key']
def test_cache_contains(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert 'test key' in cache
assert 'non-exist key' not in cache
def test_cache_len(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert len(cache) == 1
cache['test key 2'] = 'test value 2'
assert len(cache) == 2
del cache['test key']
assert len(cache) == 1
def test_cache_iter(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
assert set(cache) == {'test key', 'test key 2'}
def test_cache_keys(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
assert set(cache.keys()) == {'test key', 'test key 2'}
def test_cache_values(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
assert set(cache.values()) == {'test value', 'test value 2'}
def test_cache_items(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
assert set(cache.items()) == {('test key', 'test value'),
('test key 2', 'test value 2')}
def test_cache_clear(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
cache.clear()
assert len(cache) == 0
def test_cache_del(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
del cache
def test_cache_get(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert cache.get('test key') == 'test value'
assert cache.get('non-exist key') is None
assert cache.get('non-exist key', 'default') == 'default'
def test_cache_pop(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert cache.pop('test key') == 'test value'
assert len(cache) == 0
assert cache.pop('non-exist key') is None
assert cache.pop('non-exist key', 'default') == 'default'
def test_cache_popitem(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
assert cache.popitem() == ('test key', 'test value')
assert len(cache) == 0
with pytest.raises(KeyError):
cache.popitem()
def test_cache_update(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache.update({'test key': 'test value', 'test key 2': 'test value 2'})
assert cache['test key'] == 'test value'
assert cache['test key 2'] == 'test value 2'
assert len(cache) == 2
cache.update({'test key': 'test value 3'})
assert len(cache) == 2
assert cache['test key'] != 'test value'
assert cache['test key'] == 'test value 3'
def test_cache_setdefault(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache.setdefault('test key', 'test value')
assert cache['test key'] == 'test value'
cache.setdefault('test key', 'test value 2')
assert cache['test key'] == 'test value'
def test_cache_copy(tmpdir):
db_path = str(tmpdir.join('test.db'))
cache = Cache(db_path)
cache['test key'] = 'test value'
cache['test key 2'] = 'test value 2'
cache_copy = cache.copy()
assert cache_copy == cache
assert cache_copy is not cache
|