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
Beispiel #2
0
    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
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #18
0
    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
Beispiel #20
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)
Beispiel #21
0
    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
Beispiel #27
0
    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)
Beispiel #28
0
    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")
Beispiel #29
0
    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