raise RuntimeError
class MutateCmp:
- def __init__(self, deque):
+ def __init__(self, deque, result):
self.deque = deque
+ self.result = result
def __eq__(self, other):
self.deque.clear()
- return True
+ return self.result
class TestBasic(unittest.TestCase):
self.assert_(x is y)
# Handle evil mutator
- d = deque(['ab'])
- d.extend([MutateCmp(d), 'c'])
- e = deque(d)
- self.assertRaises(IndexError, d.remove, 'c')
- self.assertEqual(d, deque())
+ for match in (True, False):
+ d = deque(['ab'])
+ d.extend([MutateCmp(d, match), 'c'])
+ self.assertRaises(IndexError, d.remove, 'c')
+ self.assertEqual(d, deque())
def test_repr(self):
d = deque(xrange(200))
for (i=0 ; i<n ; i++) {
PyObject *item = deque->leftblock->data[deque->leftindex];
int cmp = PyObject_RichCompareBool(item, value, Py_EQ);
+
+ if (deque->len != n) {
+ PyErr_SetString(PyExc_IndexError,
+ "deque mutated during remove().");
+ return NULL;
+ }
if (cmp > 0) {
- PyObject *tgt;
- if (deque->len != n) {
- PyErr_SetString(PyExc_IndexError,
- "deque mutated during remove().");
- return NULL;
- }
- tgt = deque_popleft(deque, NULL);
+ PyObject *tgt = deque_popleft(deque, NULL);
assert (tgt != NULL);
Py_DECREF(tgt);
if (_deque_rotate(deque, i) == -1)