(self)
| 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 |
nothing calls this directly
no test coverage detected