def testSimpleDefaultChooser(self):  # {{{
        """If can't decide, choose original callable"""
        var = []

        def DummyNew1(var):  # {{{
            var.append("NEW1")
            return 1

        # End def #}}}
        def DummyNew2(var):  # {{{
            var.append("NEW2")
            return 2

        # End def #}}}
        def choose1(var):
            return True

        def choose2(var):
            return True

        s = Signal(DummyFunction)
        c = [(choose1, DummyNew1), (choose2, DummyNew2)]
        s.connect(choose=c)
        s.chooserpolicy = "default"
        ret = s(var)
        self.assertEqual(ret, 1)
        self.assertEqual(var, ["DUMMY"])
    def testSimpleAmbiguousChooser(self):  # {{{
        """Default or unknown policy generates error on ambiguity"""
        var = []

        def DummyNew1(var):  # {{{
            var.append("NEW1")
            return 1

        # End def #}}}
        def DummyNew2(var):  # {{{
            var.append("NEW2")
            return 2

        # End def #}}}
        def choose1(var):
            return True

        def choose2(var):
            return True

        s = Signal(DummyFunction)
        c = [(choose1, DummyNew1), (choose2, DummyNew2)]
        s.connect(choose=c)
        s.chooserpolicy = None
        try:
            ret = s(var)
            self.assert_(False)
        except AmbiguousChoiceError, err:
            self.assertEqual(str(err).strip(), "Found more than one selectable callable")
    def testSimpleLastChooser(self):  # {{{
        """Choose last acceptable choice"""
        var = []

        def DummyNew1(var):  # {{{
            var.append("NEW1")
            return 1

        # End def #}}}
        def DummyNew2(var):  # {{{
            var.append("NEW2")
            return 2

        # End def #}}}
        def choose1(var):
            return True

        def choose2(var):
            return True

        s = Signal(DummyFunction)
        c = [(choose1, DummyNew1), (choose2, DummyNew2)]
        s.connect(choose=c)
        s.chooserpolicy = "last"
        ret = s(var)
        self.assertEqual(ret, 2)
        self.assertEqual(var, ["NEW2"])