def test_methods(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 'foobar' lazy_fn = mod.lazy(fn) lazy_obj = lazy_fn() assert lazy_obj.replace('bar', 'foo') == 'foofoo'
def test_hash(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 'foo' lazy_fn = mod.lazy(fn) lazy_obj = lazy_fn() assert hash('foo') == hash(lazy_obj)
def test_subscript(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 'foo' lazy_fn = mod.lazy(fn) lazy_obj = lazy_fn() assert lazy_obj[:2] == 'fo'
def test_decorator_with_kwargs(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 'foo' lazy_fn = mod.lazy(fn) lazy_fn(1, 2, foo=3)._eval() fn.assert_called_once_with(1, 2, foo=3)
def test_decorator(): """ Calling the lazy object will call function's return value """ fn = mock.Mock() fn.__name__ = str('foo') lazy_fn = mod.lazy(fn) val = lazy_fn() assert fn.called == False, "Should not be called before value is accessed" assert isinstance(val, mod.Lazy), "Return value should be a Lazy instance"
def test_lazy_class(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 1 # int lazy_fn = mod.lazy(fn) lazy_obj = lazy_fn() assert isinstance(lazy_obj, int) fn.return_value = 'str' # str if PY2: assert isinstance(lazy_obj, unicode) else: assert isinstance(lazy_obj, str)
def test_caching_vs_noncaching(): """ Testing use of different Lazy classes """ fn1 = mock.Mock() fn1.__name__ = str('foo') fn2 = mock.Mock() fn2.__name__ = str('bar') lazy_fn = mod.lazy(fn1) lazy_caching_fn = mod.caching_lazy(fn2) val1 = lazy_fn() val1._eval() val1._eval() val1._eval() val2 = lazy_caching_fn() val2._eval() val2._eval() val2._eval() assert fn1.call_count == 3, "Expected 3 calls, got %s" % fn1.call_count assert fn2.call_count == 1, "Expected one call, got %s" % fn2.call_count assert isinstance(val1, mod.Lazy), "Expected Lazy instance" assert isinstance(val2, mod.CachingLazy), "Expected CachingLazy instance"
def test_interpolation(): fn = mock.Mock() fn.__name__ = str('foo') fn.return_value = 'foo %s' lazy_fn = mod.lazy(fn) assert lazy_fn() % 'bar' == 'foo bar'