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"])