Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)