示例#1
0
    def test_removing_a_callback_multiple_times(self):
        """Guard against incorrect implementations which store their
        callbacks in an array."""
        input_ = InputCell(1)
        output = ComputeCell([input_], lambda inputs: inputs[0] + 1)

        cb1_observer, cb2_observer = [], []
        callback1 = self.callback_factory(cb1_observer)
        callback2 = self.callback_factory(cb2_observer)

        output.add_callback(callback1)
        output.add_callback(callback2)
        output.remove_callback(callback1)
        output.remove_callback(callback1)
        output.remove_callback(callback1)
        input_.value = 2

        self.assertEqual(cb1_observer, [])
        self.assertEqual(cb2_observer[-1], 3)
    def test_removing_a_callback_multiple_times(self):
        """Guard against incorrect implementations which store their
        callbacks in an array."""
        input_ = InputCell(1)
        output = ComputeCell([input_], lambda inputs: inputs[0] + 1)

        cb1_observer, cb2_observer = [], []
        callback1 = self.callback_factory(cb1_observer)
        callback2 = self.callback_factory(cb2_observer)

        output.add_callback(callback1)
        output.add_callback(callback2)
        output.remove_callback(callback1)
        output.remove_callback(callback1)
        output.remove_callback(callback1)
        input_.value = 2

        self.assertEqual(cb1_observer, [])
        self.assertEqual(cb2_observer[-1], 3)
示例#3
0
    def test_callbacks_can_be_added_and_removed(self):
        input_ = InputCell(11)
        output = ComputeCell([input_], lambda inputs: inputs[0] + 1)

        cb1_observer, cb2_observer, cb3_observer = [], [], []
        callback1 = self.callback_factory(cb1_observer)
        callback2 = self.callback_factory(cb2_observer)
        callback3 = self.callback_factory(cb3_observer)

        output.add_callback(callback1)
        output.add_callback(callback2)
        input_.value = 31
        self.assertEqual(cb1_observer[-1], 32)
        self.assertEqual(cb2_observer[-1], 32)

        output.remove_callback(callback1)
        output.add_callback(callback3)
        input_.value = 41
        self.assertEqual(cb2_observer[-1], 42)
        self.assertEqual(cb3_observer[-1], 42)

        # Expect callback1 not to be called.
        self.assertEqual(len(cb1_observer), 1)
    def test_callbacks_can_be_added_and_removed(self):
        input_ = InputCell(11)
        output = ComputeCell([input_], lambda inputs: inputs[0] + 1)

        cb1_observer, cb2_observer, cb3_observer = [], [], []
        callback1 = self.callback_factory(cb1_observer)
        callback2 = self.callback_factory(cb2_observer)
        callback3 = self.callback_factory(cb3_observer)

        output.add_callback(callback1)
        output.add_callback(callback2)
        input_.value = 31
        self.assertEqual(cb1_observer[-1], 32)
        self.assertEqual(cb2_observer[-1], 32)

        output.remove_callback(callback1)
        output.add_callback(callback3)
        input_.value = 41
        self.assertEqual(cb2_observer[-1], 42)
        self.assertEqual(cb3_observer[-1], 42)

        # Expect callback1 not to be called.
        self.assertEqual(len(cb1_observer), 1)