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)
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)
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)
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)
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)
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)
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)
def test2(data): # Any actions return data def test_generator(data): # Any actions return data master = master() output_sink = output() generator1 = master.create_generator(action=test_generator, data='Generator_test') transducer2 = T.compose(T.mapping(lambda x: x), T.filtering(is_prime)) transducer1 = T.compose(T.mapping(lambda x: x + 1), T.filtering(lambda x: True if x > 1 else False)) chain = master.solve(generators=[generator1], transducers=[transducer1, transducer2], actions=[test1, test2], target=output_sink) input(iterable=range(15), target=chain) print('\nCashed:\n') input(iterable=range(20), target=chain)