def setUp(self): self.event = Event()
class EventsTest(TestCaseWithPatch): def setUp(self): self.event = Event() def some_function(self, unused, another_unused): pass def another_function(self, unused): pass def test_add(self): self.event += self.some_function self.event.add(self.some_function) self.assertEqual(2, len(self.event.handlers)) self.event += Handler(self.some_function, 1, 2) self.event.add(Handler(self.some_function, 1)) self.assertEqual(4, len(self.event.handlers)) def test_remove(self): self.event += self.some_function self.event += Handler(self.some_function, 1, 2) self.event += partial(self.some_function, 'apple') self.event += partial(self.another_function, 1) self.assertEqual(4, len(self.event.handlers)) self.event.remove(self.some_function) self.assertEqual(1, len(self.event.handlers)) self.event -= self.another_function self.assertEqual(0, len(self.event.handlers)) def test_extend(self): handlers = [self.some_function, self.another_function, partial(self.some_function, 213), Handler(self.another_function, 'rumba')] self.event.extend(handlers) self.assertEqual(len(handlers), len(self.event.handlers)) for handler in handlers: self.assertIn(handler, self.event.handlers) def test_remove_many(self): handlers = [self.another_function, self.some_function, partial(max, [3, 4]), Handler(max, 'rumba')] self.event.extend(handlers) self.event.remove_many( [self.some_function, self.another_function, max]) self.assertEqual(0, len(self.event.handlers)) for handler in handlers: self.assertNotIn(handler, self.event.handlers) def test_clear(self): self.event += self.some_function self.event += Handler(self.some_function, 1, 2) self.event.clear() self.assertEqual(0, len(self.event.handlers)) def test_call(self): self.patch_object(self, 'some_function') self.patch_object(self, 'another_function') self.event += Handler(self.some_function, 'banana', 6) self.event += Handler(self.another_function, 18) self.event() self.some_function.assert_called_once_with('banana', 6) self.another_function.assert_called_once_with(18) def test_handler_convert(self): self.assertIsInstance(Handler.convert(self.some_function), Handler) self.assertIsInstance( Handler.convert(partial(self.some_function, 1, 2)), Handler) handler = Handler(self.some_function) self.assertIs(Handler.convert(handler), handler)