def test_handler_callback_failure(): """Test failure mode for inappropriate handlers.""" class BadHandler(object): def handler(self, one): return 'too many' ob = EventTest() handler = BadHandler() with pytest.raises(TypeError): ob.PublicEvent += handler.handler ob.OnPublicEvent(EventArgsTest(10)) ob.PublicEvent -= handler.handler class BadHandler(object): def handler(self, one, two, three, four, five): return 'not enough' ob = EventTest() handler = BadHandler() with pytest.raises(TypeError): ob.PublicEvent += handler.handler ob.OnPublicEvent(EventArgsTest(10)) ob.PublicEvent -= handler.handler
def testMulticastEvent(self): """Test multicast events.""" object = EventTest() handler1 = GenericHandler() handler2 = GenericHandler() handler3 = GenericHandler() object.PublicEvent += handler1.handler object.PublicEvent += handler2.handler object.PublicEvent += handler3.handler object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler1.value == 10) self.failUnless(handler2.value == 10) self.failUnless(handler3.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler1.value == 20) self.failUnless(handler2.value == 20) self.failUnless(handler3.value == 20) object.PublicEvent -= handler1.handler object.PublicEvent -= handler2.handler object.PublicEvent -= handler3.handler
def test_multicast_event(): """Test multicast events.""" ob = EventTest() handler1 = GenericHandler() handler2 = GenericHandler() handler3 = GenericHandler() ob.PublicEvent += handler1.handler ob.PublicEvent += handler2.handler ob.PublicEvent += handler3.handler ob.OnPublicEvent(EventArgsTest(10)) assert handler1.value == 10 assert handler2.value == 10 assert handler3.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler1.value == 20 assert handler2.value == 20 assert handler3.value == 20 ob.PublicEvent -= handler1.handler ob.PublicEvent -= handler2.handler ob.PublicEvent -= handler3.handler
def test_incorrect_invokation(): """Test incorrect invocation of events.""" ob = EventTest() handler = GenericHandler() ob.PublicEvent += handler.handler with pytest.raises(TypeError): ob.OnPublicEvent() with pytest.raises(TypeError): ob.OnPublicEvent(32) ob.PublicEvent -= handler.handler
def test_managed_instance_method_handler(): """Test managed instance method handlers.""" ob = EventTest() ob.PublicEvent += ob.GenericHandler assert ob.value == 0 ob.OnPublicEvent(EventArgsTest(10)) assert ob.value == 10 ob.PublicEvent -= ob.GenericHandler assert ob.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert ob.value == 10
def testManagedInstanceMethodHandler(self): """Test managed instance method handlers.""" object = EventTest() object.PublicEvent += object.GenericHandler self.failUnless(object.value == 0) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(object.value == 10) object.PublicEvent -= object.GenericHandler self.failUnless(object.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(object.value == 10)
def testManagedStaticMethodHandler(self): """Test managed static method handlers.""" object = EventTest() EventTest.s_value = 0 object.PublicEvent += object.StaticHandler self.failUnless(EventTest.s_value == 0) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(EventTest.s_value == 10) object.PublicEvent -= object.StaticHandler self.failUnless(EventTest.s_value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(EventTest.s_value == 10)
def testVarArgsCallableHandler(self): """Test varargs callable handlers.""" object = EventTest() handler = VarCallableHandler() object.PublicEvent += handler self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def testCallableObjectHandler(self): """Test callable object handlers.""" object = EventTest() handler = CallableHandler() object.PublicEvent += handler self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def testVarArgsInstanceMethodHandler(self): """Test vararg instance method handlers.""" object = EventTest() handler = VariableArgsHandler() object.PublicEvent += handler.handler self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler.handler self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def testInstanceMethodHandler(self): """Test instance method handlers.""" object = EventTest() handler = GenericHandler() object.PublicEvent += handler.handler self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler.handler self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def test_instance_method_handler(): """Test instance method handlers.""" ob = EventTest() handler = GenericHandler() ob.PublicEvent += handler.handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler.handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_var_args_instance_method_handler(): """Test vararg instance method handlers.""" ob = EventTest() handler = VariableArgsHandler() ob.PublicEvent += handler.handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler.handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_var_args_callable_handler(): """Test varargs callable handlers.""" ob = EventTest() handler = VarCallableHandler() ob.PublicEvent += handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_callableob_handler(): """Test callable ob handlers.""" ob = EventTest() handler = CallableHandler() ob.PublicEvent += handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_managed_static_method_handler(): """Test managed static method handlers.""" ob = EventTest() EventTest.s_value = 0 ob.PublicEvent += ob.StaticHandler assert EventTest.s_value == 0 ob.OnPublicEvent(EventArgsTest(10)) assert EventTest.s_value == 10 ob.PublicEvent -= ob.StaticHandler assert EventTest.s_value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert EventTest.s_value == 10
def testStaticMethodHandler(self): """Test static method handlers.""" object = EventTest() handler = StaticMethodHandler() StaticMethodHandler.value = None object.PublicEvent += handler.handler self.assertTrue(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.assertTrue(handler.value == 10) object.PublicEvent -= handler.handler self.assertTrue(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.assertTrue(handler.value == 10)
def testRandomMultipleHandlers(self): """Test random subscribe / unsubscribe of the same handlers.""" import random object = EventTest() handler = MultipleHandler() handler2 = MultipleHandler() object.PublicEvent += handler2.handler object.PublicEvent += handler2.handler handlers = [] for i in range(30): method = handler.handler object.PublicEvent += method handlers.append(method) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 300) self.failUnless(handler2.value == 20) handler.value = 0 handler2.value = 0 for i in range(30): item = random.choice(handlers) handlers.remove(item) object.PublicEvent -= item handler.value = 0 object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == (len(handlers) * 10)) self.failUnless(handler2.value == ((i + 1) * 20)) handler2.value = 0 object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler2.value == 20) object.PublicEvent -= handler2.handler handler2.value = 0 object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler2.value == 10) object.PublicEvent -= handler2.handler handler2.value = 0 object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler2.value == 0)
def test_random_multiple_handlers(): """Test random subscribe / unsubscribe of the same handlers.""" import random ob = EventTest() handler = MultipleHandler() handler2 = MultipleHandler() ob.PublicEvent += handler2.handler ob.PublicEvent += handler2.handler handlers = [] for _ in range(30): method = handler.handler ob.PublicEvent += method handlers.append(method) ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 300 assert handler2.value == 20 handler.value = 0 handler2.value = 0 for i in range(30): item = random.choice(handlers) handlers.remove(item) ob.PublicEvent -= item handler.value = 0 ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == (len(handlers) * 10) assert handler2.value == ((i + 1) * 20) handler2.value = 0 ob.OnPublicEvent(EventArgsTest(10)) assert handler2.value == 20 ob.PublicEvent -= handler2.handler handler2.value = 0 ob.OnPublicEvent(EventArgsTest(10)) assert handler2.value == 10 ob.PublicEvent -= handler2.handler handler2.value = 0 ob.OnPublicEvent(EventArgsTest(10)) assert handler2.value == 0
def testClassMethodHandler(self): """Test class method handlers.""" object = EventTest() handler = ClassMethodHandler() ClassMethodHandler.value = None object.PublicEvent += handler.handler self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler.handler self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def testExplicitCLSEventRegistration(self): """Test explicit CLS event registration.""" object = EventTest() handler = GenericHandler() delegate = TestEventHandler(handler.handler) object.add_PublicEvent(delegate) self.failUnless(handler.value == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.remove_PublicEvent(delegate) self.failUnless(handler.value == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(handler.value == 10)
def test_class_method_handler(): """Test class method handlers.""" ob = EventTest() handler = ClassMethodHandler() ClassMethodHandler.value = None ob.PublicEvent += handler.handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler.handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_static_method_handler(): """Test static method handlers.""" ob = EventTest() handler = StaticMethodHandler() StaticMethodHandler.value = None ob.PublicEvent += handler.handler assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler.handler assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_unbound_method_handler(): """Test failure mode for unbound method handlers.""" ob = EventTest() ob.PublicEvent += GenericHandler.handler with pytest.raises(TypeError): ob.OnPublicEvent(EventArgsTest(10)) ob.PublicEvent -= GenericHandler.handler
def test_explicit_cls_event_registration(): """Test explicit CLS event registration.""" from Python.Test import EventHandlerTest ob = EventTest() handler = GenericHandler() delegate = EventHandlerTest(handler.handler) ob.add_PublicEvent(delegate) assert handler.value is None ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.remove_PublicEvent(delegate) assert handler.value == 10 ob.OnPublicEvent(EventArgsTest(20)) assert handler.value == 10
def test_function_handler(): """Test function handlers.""" ob = EventTest() dict_ = {'value': None} def handler(sender, args, dict_=dict_): dict_['value'] = args.value ob.PublicEvent += handler assert dict_['value'] is None ob.OnPublicEvent(EventArgsTest(10)) assert dict_['value'] == 10 ob.PublicEvent -= handler assert dict_['value'] == 10 ob.OnPublicEvent(EventArgsTest(20)) assert dict_['value'] == 10
def testFunctionHandler(self): """Test function handlers.""" object = EventTest() dict = {'value': None} def handler(sender, args, dict=dict): dict['value'] = args.value object.PublicEvent += handler self.failUnless(dict['value'] == None) object.OnPublicEvent(TestEventArgs(10)) self.failUnless(dict['value'] == 10) object.PublicEvent -= handler self.failUnless(dict['value'] == 10) object.OnPublicEvent(TestEventArgs(20)) self.failUnless(dict['value'] == 10)
def testUnboundMethodHandler(self): """Test failure mode for unbound method handlers.""" object = EventTest() object.PublicEvent += GenericHandler.handler try: object.OnPublicEvent(TestEventArgs(10)) except TypeError: object.PublicEvent -= GenericHandler.handler return raise TypeError("should have raised a TypeError")
def testPublicInstanceEvent(self): """Test public instance events.""" object = EventTest() handler = GenericHandler() self.failUnless(handler.value == None) object.PublicEvent += handler.handler object.OnPublicEvent(TestEventArgs(10)) self.failUnless(handler.value == 10) object.PublicEvent -= handler.handler
def test_public_instance_event(): """Test public instance events.""" ob = EventTest() handler = GenericHandler() assert handler.value is None ob.PublicEvent += handler.handler ob.OnPublicEvent(EventArgsTest(10)) assert handler.value == 10 ob.PublicEvent -= handler.handler