Example #1
0
    def test_multiple_subscribers(self):
        """Test Event() can trigger multiple callback functions."""

        # Create function for capturing event data.
        event_data_A = list()
        event_data_B = list()
        def callback_A(data): event_data_A.append(data)
        def callback_B(data): event_data_B.append(data)

        # Trigger an event and send data to multiple callback functions.
        event = Event()
        test_data = 'test data'
        event.subscribe(callback_A)
        event.subscribe(callback_B)

        # Ensure multiple callbacks have been added to event.
        self.assertEqual(event.num_subscriptions(), 2)

        # Trigger event.
        event.__trigger__(test_data)

        # Ensure data was issued to all callback functions.
        if (len(event_data_A) == 1) and (len(event_data_B) == 1):
            self.assertEqual(event_data_A[0], test_data)
            self.assertEqual(event_data_B[0], test_data)
        else:
            msg = 'Expected all callback functions to receive data.'
            raise ValueError(msg)
Example #2
0
    def test_subscribe(self):
        """Test Event() can subscribe callback functions."""

        # Create function for capturing event data.
        event_data = list()
        def callback(data): event_data.append(data)

        # Create Event().
        event = Event()

        # Validate Event() can detect when callbacks have NOT been
        # subscribed.
        self.assertFalse(event.is_subscribed(callback))

        # Validate Event() can detect when callbacks HAVE been subscribed.
        self.assertTrue(event.subscribe(callback))
        self.assertTrue(event.is_subscribed(callback))
        self.assertEqual(event.num_subscriptions(), 1)

        # Validate Event() will not re-subscribe callbacks.
        self.assertFalse(event.subscribe(callback))

        # Test subscribe catches callbacks which do not contain a__call__
        # method.
        with self.assertRaises(TypeError):
            event.subscribe(int())
Example #3
0
    def test_subscribe(self):
        """Test Event() can subscribe callback functions."""

        # Create function for capturing event data.
        event_data = list()

        def callback(data):
            event_data.append(data)

        # Create Event().
        event = Event()

        # Validate Event() can detect when callbacks have NOT been
        # subscribed.
        self.assertFalse(event.is_subscribed(callback))

        # Validate Event() can detect when callbacks HAVE been subscribed.
        self.assertTrue(event.subscribe(callback))
        self.assertTrue(event.is_subscribed(callback))
        self.assertEqual(event.num_subscriptions(), 1)

        # Validate Event() will not re-subscribe callbacks.
        self.assertFalse(event.subscribe(callback))

        # Test subscribe catches callbacks which do not contain a__call__
        # method.
        with self.assertRaises(TypeError):
            event.subscribe(int())
Example #4
0
    def test_multiple_subscribers(self):
        """Test Event() can trigger multiple callback functions."""

        # Create function for capturing event data.
        event_data_A = list()
        event_data_B = list()

        def callback_A(data):
            event_data_A.append(data)

        def callback_B(data):
            event_data_B.append(data)

        # Trigger an event and send data to multiple callback functions.
        event = Event()
        test_data = 'test data'
        event.subscribe(callback_A)
        event.subscribe(callback_B)

        # Ensure multiple callbacks have been added to event.
        self.assertEqual(event.num_subscriptions(), 2)

        # Trigger event.
        event.__trigger__(test_data)

        # Ensure data was issued to all callback functions.
        if (len(event_data_A) == 1) and (len(event_data_B) == 1):
            self.assertEqual(event_data_A[0], test_data)
            self.assertEqual(event_data_B[0], test_data)
        else:
            msg = 'Expected all callback functions to receive data.'
            raise ValueError(msg)
Example #5
0
    def test_unsubscribe(self):
        """Test Event() can unsubscribe callback functions."""

        # Create function for capturing event data.
        event_data = list()
        def callback(data): event_data.append(data)

        # Create Event().
        event = Event()

        # Validate Event() can detect when callbacks have been UNsubscribed.
        event.subscribe(callback)
        self.assertTrue(event.is_subscribed(callback))
        self.assertTrue(event.unsubscribe(callback))
        self.assertFalse(event.is_subscribed(callback))
        self.assertEqual(event.num_subscriptions(), 0)

        # Validate Event() will not unsubscribe a callback which does not
        # exist.
        self.assertFalse(event.unsubscribe(callback))
Example #6
0
    def test_unsubscribe(self):
        """Test Event() can unsubscribe callback functions."""

        # Create function for capturing event data.
        event_data = list()

        def callback(data):
            event_data.append(data)

        # Create Event().
        event = Event()

        # Validate Event() can detect when callbacks have been UNsubscribed.
        event.subscribe(callback)
        self.assertTrue(event.is_subscribed(callback))
        self.assertTrue(event.unsubscribe(callback))
        self.assertFalse(event.is_subscribed(callback))
        self.assertEqual(event.num_subscriptions(), 0)

        # Validate Event() will not unsubscribe a callback which does not
        # exist.
        self.assertFalse(event.unsubscribe(callback))