def test_observer_executes_when_notified(self): class DummyObserver(Observer): def on_change(self): self.test_value += 1 obs = DummyObserver() obs.test_value = 1 obs2 = DummyObserver() obs2.test_value = 1 self.assertEqual(obs.test_value, 1) obs.notify() self.assertEqual(obs.test_value, 2) obs.notify() self.assertEqual(obs.test_value, 3) self.assertEqual(obs2.test_value, 1) able = Observable() able.register_observer(obs) self.assertEqual(obs.test_value, 4) able.notify_observers() self.assertEqual(obs.test_value, 5) self.assertEqual(obs2.test_value, 1)
def test_observer_receives_observable_signals(self): obs = Observer() obs2 = Observer() able = Observable() able.register_observer(obs) self.assertIn(obs, able._observers) self.assertNotIn(obs2, able._observers)
def test_observable_keeps_no_duplicates(self): obs = Observer() able = Observable() self.assertEqual(len(able._observers), 0) able.register_observer(obs) self.assertEqual(len(able._observers), 1) able.register_observer(obs) self.assertEqual(len(able._observers), 1) able.register_observer(Observer()) self.assertEqual(len(able._observers), 2) able.unregister_observer(obs) self.assertEqual(len(able._observers), 1)