self.assertEqual(next(c), -8)
self.assertEqual(repr(count(10.25)), 'count(10.25)')
self.assertEqual(repr(count(10.0)), 'count(10.0)')
+
+ self.assertEqual(repr(count(maxsize)), f'count({maxsize})')
+ c = count(maxsize - 1)
+ self.assertEqual(repr(c), f'count({maxsize - 1})')
+ next(c) # c is now at masize
+ self.assertEqual(repr(c), f'count({maxsize})')
+ next(c)
+ self.assertEqual(repr(c), f'count({maxsize + 1})')
+
self.assertEqual(type(next(count(10.0))), float)
for i in (-sys.maxsize-5, -sys.maxsize+5 ,-10, -1, 0, 10, sys.maxsize-5, sys.maxsize+5):
# Test repr
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
self.pickletest(proto, count(i, j))
+ c = count(maxsize -2, 2)
+ self.assertEqual(repr(c), f'count({maxsize - 2}, 2)')
+ next(c) # c is now at masize
+ self.assertEqual(repr(c), f'count({maxsize}, 2)')
+ next(c)
+ self.assertEqual(repr(c), f'count({maxsize + 2}, 2)')
+
+ c = count(maxsize + 1, -1)
+ self.assertEqual(repr(c), f'count({maxsize + 1}, -1)')
+ next(c) # c is now at masize
+ self.assertEqual(repr(c), f'count({maxsize}, -1)')
+ next(c)
+ self.assertEqual(repr(c), f'count({maxsize - 1}, -1)')
+
def test_cycle(self):
self.assertEqual(take(10, cycle('abc')), list('abcabcabca'))
self.assertEqual(list(cycle('')), [])
fast_mode: when cnt an integer < PY_SSIZE_T_MAX and no step is specified.
- assert(cnt != PY_SSIZE_T_MAX && long_cnt == NULL && long_step==PyLong(1));
+ assert(long_cnt == NULL && long_step==PyLong(1));
Advances with: cnt += 1
When count hits Y_SSIZE_T_MAX, switch to slow_mode.
PyErr_Clear();
fast_mode = 0;
}
- else if (cnt == PY_SSIZE_T_MAX) {
- fast_mode = 0;
- }
}
} else {
cnt = 0;
else
cnt = PY_SSIZE_T_MAX;
- assert((cnt != PY_SSIZE_T_MAX && long_cnt == NULL && fast_mode) ||
+ assert((long_cnt == NULL && fast_mode) ||
(cnt == PY_SSIZE_T_MAX && long_cnt != NULL && !fast_mode));
assert(!fast_mode ||
(PyLong_Check(long_step) && PyLong_AS_LONG(long_step) == 1));
static PyObject *
count_repr(countobject *lz)
{
- if (lz->cnt != PY_SSIZE_T_MAX)
+ if (lz->long_cnt == NULL)
return PyUnicode_FromFormat("%s(%zd)",
_PyType_Name(Py_TYPE(lz)), lz->cnt);