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)
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())
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())
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)
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))
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))