def testCancelPostEnd(self): """ Check that canceller is not called if cancelled after end """ self.cancelled = 0 future = CancellableFuture() future.task_canceller = self.cancel_task self.assertEqual(self.cancelled, 0) # "start" the task future.set_running_or_notify_cancel() # "end" the task future.set_result("boo") self.assertEqual(future.result(), "boo") # try to cancel after end self.assertFalse(future.cancel()) self.assertFalse(future.cancelled()) # The result shouldn't change self.assertEqual(future.result(), "boo") self.assertEqual(self.cancelled, 0)
def test_cancel_while_running(self): """Cancel future while running.""" self.cancelled = 0 future = CancellableFuture() future.task_canceller = self.cancel_task # "start" the task (set the future running) future.set_running_or_notify_cancel() self.assertEqual(self.cancelled, 0) # try to cancel while running self.assertTrue(future.cancel()) self.assertTrue(future.cancelled()) self.assertRaises(CancelledError, future.result, 1) self.assertEqual(self.cancelled, 1)
def testCancelWhileRunning(self): """ Only tests a simple CancellableFuture """ self.cancelled = 0 future = CancellableFuture() future.task_canceller = self.cancel_task # "start" the task future.set_running_or_notify_cancel() self.assertEqual(self.cancelled, 0) # try to cancel while running self.assertTrue(future.cancel()) self.assertTrue(future.cancelled()) self.assertRaises(CancelledError, future.result, 1) self.assertEqual(self.cancelled, 1)