mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 04:53:20 +08:00
58ceb7b7bb
- Moved zipline.utils.lazyval. - Added `remember_last` which is just `lru_cache(1)` with simpler logic.
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
"""
|
|
Tests for zipline.utils.memoize.
|
|
"""
|
|
from unittest import TestCase
|
|
|
|
from zipline.utils.memoize import remember_last
|
|
|
|
|
|
class TestRememberLast(TestCase):
|
|
|
|
def test_remember_last(self):
|
|
|
|
# Store the count in a list so we can mutate it from inside `func`.
|
|
call_count = [0]
|
|
|
|
@remember_last
|
|
def func(x):
|
|
call_count[0] += 1
|
|
return x
|
|
|
|
self.assertEqual((func(1), call_count[0]), (1, 1))
|
|
|
|
# Calling again with the same argument should just re-use the old
|
|
# value, which means func shouldn't get called again.
|
|
self.assertEqual((func(1), call_count[0]), (1, 1))
|
|
self.assertEqual((func(1), call_count[0]), (1, 1))
|
|
|
|
# Calling with a new value should increment the counter.
|
|
self.assertEqual((func(2), call_count[0]), (2, 2))
|
|
self.assertEqual((func(2), call_count[0]), (2, 2))
|
|
|
|
# Calling the old value should still increment the counter.
|
|
self.assertEqual((func(1), call_count[0]), (1, 3))
|
|
self.assertEqual((func(1), call_count[0]), (1, 3))
|