Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import unittest
|
|
|
|
from cachelib import Cache
|
|
|
|
|
|
class CacheContractTests(unittest.TestCase):
|
|
def test_negative_lookup_is_loaded_once(self):
|
|
cache = Cache()
|
|
calls = []
|
|
|
|
def loader(key):
|
|
calls.append(key)
|
|
return None
|
|
|
|
self.assertIsNone(cache.get_or_load("missing", loader))
|
|
self.assertIsNone(cache.get_or_load("missing", loader))
|
|
self.assertEqual(calls, ["missing"])
|
|
|
|
def test_custom_default_still_distinguishes_missing_from_none(self):
|
|
cache = Cache()
|
|
marker = object()
|
|
self.assertIs(cache.get("unknown", marker), marker)
|
|
cache.put("known-none", None)
|
|
self.assertIsNone(cache.get("known-none", marker))
|
|
|
|
def test_falsey_values_are_cached(self):
|
|
cache = Cache()
|
|
calls = []
|
|
|
|
def loader(key):
|
|
calls.append(key)
|
|
return 0
|
|
|
|
self.assertEqual(cache.get_or_load("zero", loader), 0)
|
|
self.assertEqual(cache.get_or_load("zero", loader), 0)
|
|
self.assertEqual(calls, ["zero"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|