MCPcopy Index your code
hub / github.com/python/cpython / test_memoize

Method test_memoize

Lib/test/test_decorators.py:148–173  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

146 self.assertRaises(DbcheckError, f, 1, None)
147
148 def test_memoize(self):
149 counts = {}
150
151 @memoize
152 @countcalls(counts)
153 def double(x):
154 return x * 2
155 self.assertEqual(double.__name__, 'double')
156
157 self.assertEqual(counts, dict(double=0))
158
159 # Only the first call with a given argument bumps the call count:
160 #
161 self.assertEqual(double(2), 4)
162 self.assertEqual(counts['double'], 1)
163 self.assertEqual(double(2), 4)
164 self.assertEqual(counts['double'], 1)
165 self.assertEqual(double(3), 6)
166 self.assertEqual(counts['double'], 2)
167
168 # Unhashable arguments do not get memoized:
169 #
170 self.assertEqual(double([10]), [10, 10])
171 self.assertEqual(counts['double'], 3)
172 self.assertEqual(double([10]), [10, 10])
173 self.assertEqual(counts['double'], 4)
174
175 def test_errors(self):
176

Callers

nothing calls this directly

Calls 2

doubleFunction · 0.85
assertEqualMethod · 0.45

Tested by

no test coverage detected