class SignalTestCase_listeners(TestCase):
    def setUp(self):
        self.baseSignal = Signal()

    def tearDown(self):
        self.baseSignal = None

    def test_default_length_zero(self):
        self.assertEqual(0, self.baseSignal.get_length())

    def test_listener_is_added(self):
        self.baseSignal.add(self.listenerOne)
        self.assertEqual(1, self.baseSignal.get_length())

    def test_add_listener_is_callable(self):
        self.assertRaises(ValueError, self.baseSignal.add, 10)

    def test_listener_is_added_once(self):
        self.baseSignal.add(self.listenerOne)
        self.assertEqual(1, self.baseSignal.get_length())

    def test_add_once_listener_is_callable(self):
        self.assertRaises(ValueError, self.baseSignal.addOnce, 10)

    def test_listener_is_removed(self):
        self.baseSignal.add(self.listenerOne)
        self.baseSignal.remove(self.listenerOne)
        self.assertEqual(0, self.baseSignal.get_length())

    def test_all_listeners_are_removed(self):
        self.baseSignal.add(self.listenerOne)
        self.baseSignal.add(self.listenerTwo)
        self.baseSignal.removeAll()
        self.assertEqual(0, self.baseSignal.get_length())

    def listenerOne(self):
        pass

    def listenerTwo(self):
        pass
Ejemplo n.º 2
0
class SignalTest(unittest.TestCase):
    def setUp(self):
        self.signal = Signal()

    def test_basic_construction_works(self):
        assert self.signal.add_once(simple_listener_returning_true) is None
        assert self.signal.num_listeners is 1

    def test_add_once_then_add_raises(self):
        self.signal = Signal()

        self.signal.add_once(simple_listener_returning_true)
        self.assertRaises(RuntimeError, self.signal.add, simple_listener_returning_true)

    def test_dispatch_no_listeners(self):
        self.signal.dispatch()

    def test_no_param_dispatch(self):
        self.signal.add(simple_listener_returning_true)
        self.signal.dispatch()

        self.assertRaises(TypeError, self.signal.dispatch, 1)
        self.assertRaises(TypeError, self.signal.dispatch, {'someKeyWord': 1})

    def test_no_param_dispatch_multiple_times(self):
        self.signal.add(simple_listener_returning_true)

        self.signal.dispatch()
        self.signal.dispatch()
        self.signal.dispatch()

    def test_add_once_only_fires_once(self):
        def mylistener(f):
            f.callcount = f.callcount + 1

        mylistener.callcount = 0
        self.signal.add_once(mylistener)
        self.signal.dispatch(mylistener)
        self.signal.dispatch(mylistener)

        self.assertEqual(mylistener.callcount, 1)

    def test_removed_listener_doesnt_fire(self):
        def mylistener(f):
            f.callcount = f.callcount + 1

        mylistener.callcount = 0
        self.signal.add(mylistener)
        self.signal.remove(mylistener)
        self.signal.dispatch(mylistener)

        self.assertEqual(mylistener.callcount, 0)

    def test_listener_added_twice_doesnt_duplicate(self):
        self.signal.add(simple_listener_returning_false)
        self.signal.add(simple_listener_returning_false)
        self.assertEqual(self.signal.num_listeners, 1)
        self.signal.dispatch()

    def test_adding_null_doesnt_add_listener(self):
        self.assertRaises(ValueError, self.signal.add, None)