def testLineBreak(self): lhs = [ "Hello World", "Happy Days Are Here" ] rhs = ["Hello ","World\nHappy", flow.Cooperate(), " Days"," Are Here\n"] mrg = flow.LineBreak(slowlist(rhs), delimiter='\n') rhs = list(flow.Block(mrg)) self.assertEqual(lhs,rhs)
def testDeferredWrapper(self): a = defer.Deferred() reactor.callLater(0, lambda: a.callback("test")) b = flow.Merge(a, slowlist([1,2,flow.Cooperate(),3])) d = flow.Deferred(b) d.addCallback(self.assertEqual, [1, 2, 'test', 3]) return d
def testFilter(self): def odd(val): if val % 2: return True lhs = [ 1, 3 ] mrg = flow.Filter(odd,slowlist([1,2,flow.Cooperate(),3])) rhs = list(flow.Block(mrg)) self.assertEqual(lhs,rhs)
def testZipFailure(self): lhs = [(1,'a'),(2,'b'),(3,'c')] mrg = flow.Zip([1,2,flow.Cooperate(),3],badgen()) d = flow.Deferred(mrg) return self.assertFailure(d, ZeroDivisionError)
def testZip(self): lhs = [(1,'a'),(2,'b'),(3,None)] mrg = flow.Zip([1,2,flow.Cooperate(),3],['a','b']) rhs = list(flow.Block(mrg)) self.assertEqual(lhs,rhs)
def testBasicList(self): lhs = [1,2,3] rhs = list(flow.Block([1,2,flow.Cooperate(),3])) self.assertEqual(lhs,rhs)
It is primarly used to simulate generators by using a list (for testing purposes) without being wrapped as a flow.List, which has all kinds of shortcuts we don't want for testing. """ def __init__(self, list): self.list = list[:] def __iter__(self): return self def next(self): if self.list: return self.list.pop(0) raise StopIteration _onetwothree = ['one','two',flow.Cooperate(),'three'] class producer: """ iterator version of the following generator... def producer(): lst = flow.wrap(slowlist([1,2,3])) nam = flow.wrap(slowlist(_onetwothree)) while True: yield lst yield nam yield (lst.next(),nam.next()) """ def __iter__(self): self.lst = flow.wrap(slowlist([1,2,3]))