def test_notify(self):
        """
        Test the notify method.

        @raise AssertionError: If the test fails.
        """
        observable = self.observable_class()
        observer_1 = self.observer_class()
        observer_2 = self.observer_class()
        observer_3 = self.observer_class()

        observable.attach(observer_1)
        observable.attach(observer_2)
        observable.attach(observer_3)

        observable.change_state(public_state={'foo': 'test1', 'bar': 'test2'}, foo='foo', bar=False)
        expected_state = {'public_state': {'foo': 'test1', 'bar': 'test2'}, 'foo': 'foo', 'bar': False}

        self.assertDictEqual(expected_state, observer_1.updated_state)
        self.assertDictEqual(expected_state, observer_2.updated_state)
        self.assertDictEqual(expected_state, observer_3.updated_state)

        observable.change_state(bar='bar')
        expected_state_2 = {'public_state': {'foo': 'test1', 'bar': 'test2'}, 'foo': 'foo', 'bar': 'bar'}

        self.assertDictEqual(expected_state_2, observer_1.updated_state)
        self.assertDictEqual(expected_state_2, observer_2.updated_state)
        self.assertDictEqual(expected_state_2, observer_3.updated_state)

        Test the notify method.

        @raise AssertionError: If the test fails.
        
tests/behavioral_tests/test_observer.py