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