def test_split_first(self): def func(b): return b % 2; arrow = split() >> FunctionArrow(func).first() value = 7 target = (func(value), value) result = arrow(value) self.assertEquals(target, result)
def test_split_unsplit(self): # +------> f ---------+ # | v # 8 ---> (split) (unsplit (op)) ----> 29 # | ^ # +------> g ---------+ arrow = split() >> FunctionArrow(lambda b : b / 2).first() >> FunctionArrow(lambda b : (3 * b) + 1).second() >> unsplit(lambda b, c: b + c) value = 8 target = 29 result = arrow(value) self.assertEquals(target, result)