Viewing File: /home/ubuntu/combine_ai/combine/lib/python3.10/site-packages/sympy/core/tests/test_cache.py
import sys
from sympy.core.cache import cacheit, cached_property, lazy_function
from sympy.testing.pytest import raises
def test_cacheit_doc():
@cacheit
def testfn():
"test docstring"
pass
assert testfn.__doc__ == "test docstring"
assert testfn.__name__ == "testfn"
def test_cacheit_unhashable():
@cacheit
def testit(x):
return x
assert testit(1) == 1
assert testit(1) == 1
a = {}
assert testit(a) == {}
a[1] = 2
assert testit(a) == {1: 2}
def test_cachit_exception():
# Make sure the cache doesn't call functions multiple times when they
# raise TypeError
a = []
@cacheit
def testf(x):
a.append(0)
raise TypeError
raises(TypeError, lambda: testf(1))
assert len(a) == 1
a.clear()
# Unhashable type
raises(TypeError, lambda: testf([]))
assert len(a) == 1
@cacheit
def testf2(x):
a.append(0)
raise TypeError("Error")
a.clear()
raises(TypeError, lambda: testf2(1))
assert len(a) == 1
a.clear()
# Unhashable type
raises(TypeError, lambda: testf2([]))
assert len(a) == 1
def test_cached_property():
class A:
def __init__(self, value):
self.value = value
self.calls = 0
@cached_property
def prop(self):
self.calls = self.calls + 1
return self.value
a = A(2)
assert a.calls == 0
assert a.prop == 2
assert a.calls == 1
assert a.prop == 2
assert a.calls == 1
b = A(None)
assert b.prop == None
def test_lazy_function():
module_name='xmlrpc.client'
function_name = 'gzip_decode'
lazy = lazy_function(module_name, function_name)
assert lazy(b'') == b''
assert module_name in sys.modules
assert function_name in str(lazy)
repr_lazy = repr(lazy)
assert 'LazyFunction' in repr_lazy
assert function_name in repr_lazy
lazy = lazy_function('sympy.core.cache', 'cheap')
Back to Directory
File Manager