示例#1
0
    def test_conj_reducer(self):
        conj_reducer = T.get_immutable_appender()
        self.assertEqual(self.conjoining.__class__.__name__, 'Conjoining')

        result = T.transduce(T.compose(T.mapping(lambda x: x)),
                             self.conjoining, range(5))
        self.assertEqual((0, 1, 2, 3, 4), result)
示例#2
0
    def test_first(self):
        transducer = T.compose(
            T.filtering(lambda x: True if x > 4 else False),
            T.first(lambda x: True if x * x > 64 else False))

        result = T.transduce(transducer, T.single(), range(1000))
        self.assertEqual(9, result)
示例#3
0
        def generator():
            try:
                print('Generator is starting:', data)
                while True:
                    iterrable = (yield)

                    if this.cashe.get(tuple(iterrable)) == None:
                        if transducer is not None:
                            new_itterable = T.transduce(
                                transducer, reducer, iterrable)
                            this.cashe[tuple(iterrable)] = new_itterable
                            print('.', data, new_itterable)
                        else:
                            if action is not None:
                                new_itterable = action(iterrable)
                                this.cashe[tuple(iterrable)] = new_itterable
                                print('.', data, new_itterable)
                    else:
                        new_itterable = this.cashe[tuple(iterrable)]
                        print('.c', data, new_itterable)

                    try:
                        if this.target == None:
                            pass
                        else:
                            this.target.send(new_itterable)
                    except StopIteration as e:
                        return e.value

            except GeneratorExit:
                print("Generator is closing:", data)
示例#4
0
    def test_transduce(self):
        transducer = T.compose(T.filtering(is_prime),
                               T.mapping(lambda x: x + 1))

        self.assertEqual(transducer.__class__.__name__, 'function')

        result = T.transduce(transducer, self.appending, range(20))
        self.assertEqual([3, 4, 6, 8, 12, 14, 18, 20], result)
示例#5
0
    def test_enumerating(self):
        transducer = T.compose(T.mapping(lambda x: x * 2 + 3), T.enumerating())

        result = T.transduce(transducer, self.appending, range(4))
        self.assertEqual([(0, 3), (1, 5), (2, 7), (3, 9)], result)
示例#6
0
    def test_repeating(self):
        transducer = T.compose(T.mapping(lambda x: x * x), T.repeating(2))

        result = T.transduce(transducer, self.appending, range(2))
        self.assertEqual([0, 0, 1, 1], result)
示例#7
0
    def test_chunking(self):
        transducer = T.compose(T.mapping(lambda x: x * x), T.chunking(2))

        result = T.transduce(transducer, self.appending, range(5))
        self.assertEqual([[0, 1], [4, 9], [16]], result)
示例#8
0
    def test_appending_reducer(self):
        self.assertEqual(self.appending.__class__.__name__, 'Appending')

        result = T.transduce(T.compose(T.mapping(lambda x: x)), self.appending,
                             range(5))
        self.assertEqual([0, 1, 2, 3, 4], result)