Ejemplo n.º 1
0
    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))
Ejemplo n.º 3
0
    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))))))
Ejemplo n.º 6
0
    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))))))
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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))))))
Ejemplo n.º 9
0
    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)