def test_call_deque(self): class Logger(object): def __init__(self): self._log = [] def log(self, str): self._log.append(str) @staticmethod def staticlog(logger, str): logger.log(str) def do_log(logger, str): logger.log(str) logger = Logger() d = CallDeque() d.append(logger.log, 'foo') d.append(logger.log, 'bar') d.append(logger.staticlog, logger, 'baz') d.append(do_log, logger, 'qux') self.assertEqual(logger._log, []) d.execute() self.assertEqual(logger._log, ['foo', 'bar', 'baz', 'qux'])