def test_compose_mapping_and_filter(self): composed = compose(crt.filtering(lambda x: x < 5), crt.mapping(lambda x: x * 2)) result = [] f = composed(crt.append(result)) for i in range(10): f.send(i) self.assertListEqual(result, [x * 2 for x in range(10) if x < 5])
def test_reuse_single_taking_instance(self): take_5 = tdc.taking(5) tdx = compose( take_5, tdc.mapping(lambda x: x * 2), take_5) x = tdc.reduce(tdx(append), range(100), []) y = itertools.islice( (x * 2 for x in itertools.islice(range(100), 5)), 5) self.assertEqual(x, list(y))
def test_compose_mapping_and_filter(self): composed = compose( crt.filtering(lambda x: x < 5), crt.mapping(lambda x: x * 2)) result = [] f = composed(crt.append(result)) for i in range(10): f.send(i) self.assertListEqual( result, [x * 2 for x in range(10) if x < 5])
def test_compose_mapping_and_filter(self): tdx = compose( tdc.filtering(lambda x: x < 5), tdc.mapping(lambda x: x * 2)) x = tdc.reduce(tdx(operator.mul), range(1, 10), 1) self.assertEqual( x, tdc.reduce(operator.mul, (i * 2 for i in range(1, 10) if i < 5), 1))
def test_compose_three_transducers(self): tdx = compose( tdc.mapping(lambda x: x * 2), tdc.mapping(lambda x: x * x), tdc.filtering(lambda x: x % 2 == 0)) x = tdc.reduce(tdx(operator.add), range(100), 0) self.assertEqual( x, sum(filter(lambda x: x % 2 == 0, (x * x for x in (y * 2 for y in range(100))))))
def test_compose_three_coroutines(self): composed = compose(crt.mapping(lambda x: x * 2), crt.mapping(lambda x: x * x), crt.filtering(lambda x: x % 2 == 0)) result = [] f = composed(crt.append(result)) for i in range(100): f.send(i) self.assertListEqual( result, list( filter(lambda z: z % 2 == 0, (x * x for x in (y * 2 for y in range(100))))))
def test_reuse_single_taking_instance(self): take_5 = crt.taking(5) composed = compose(take_5, crt.mapping(lambda x: x * 2), take_5) result = [] f = composed(crt.append(result)) try: for i in range(1000): f.send(i) except crt.StopConsumption: pass expected = list( itertools.islice((x * 2 for x in itertools.islice(range(1000), 5)), 5)) self.assertListEqual(result, expected)
def test_compose_three_coroutines(self): composed = compose( crt.mapping(lambda x: x * 2), crt.mapping(lambda x: x * x), crt.filtering(lambda x: x % 2 == 0)) result = [] f = composed(crt.append(result)) for i in range(100): f.send(i) self.assertListEqual( result, list(filter( lambda z: z % 2 == 0, (x * x for x in (y * 2 for y in range(100))))))
def test_reuse_single_taking_instance(self): take_5 = crt.taking(5) composed = compose( take_5, crt.mapping(lambda x: x * 2), take_5) result = [] f = composed(crt.append(result)) try: for i in range(1000): f.send(i) except crt.StopConsumption: pass expected = list(itertools.islice( (x * 2 for x in itertools.islice(range(1000), 5)), 5)) self.assertListEqual( result, expected)