class IRCProxy(object): def __init__(self, irc_delegate, irc_bot=IRCBot): _log.info("Connecting to IRC") self._message_queue = ThreadedMessageQueue() self._child_thread = _IRCThread(self._message_queue, irc_delegate, irc_bot) self._child_thread.start() def post(self, message): self._message_queue.post(message) def disconnect(self): _log.info("Disconnecting from IRC...") self._message_queue.stop() self._child_thread.join()
def test_basic(self): queue = ThreadedMessageQueue() delegate = TestDelegate() pump = MessagePump(delegate, queue) self.assertEqual(delegate.log, [ 'schedule' ]) delegate.callback() queue.post("Hello") queue.post("There") delegate.callback() self.assertEqual(delegate.log, [ 'schedule', 'schedule', 'message_available: Hello', 'message_available: There', 'schedule' ]) queue.post("More") queue.post("Messages") queue.stop() delegate.callback() self.assertEqual(delegate.log, [ 'schedule', 'schedule', 'message_available: Hello', 'message_available: There', 'schedule', 'message_available: More', 'message_available: Messages', 'final_message_delivered' ])
def test_basic(self): queue = ThreadedMessageQueue() queue.post("Hello") queue.post("There") (messages, is_running) = queue.take_all() self.assertEqual(messages, ["Hello", "There"]) self.assertTrue(is_running) (messages, is_running) = queue.take_all() self.assertEqual(messages, []) self.assertTrue(is_running) queue.post("More") queue.stop() queue.post("Messages") (messages, is_running) = queue.take_all() self.assertEqual(messages, ["More", "Messages"]) self.assertFalse(is_running) (messages, is_running) = queue.take_all() self.assertEqual(messages, []) self.assertFalse(is_running)