def test_processor_chain_complex(self): p0 = Processor(lambda partial, options={}: '%s -> %s' % (options, partial * 34)) p = Processor.flow([ float, int, lambda partial, options={}: '%s -> %s' % (options, partial * 34) ]) self.assertEqual(p('1.0'), '1.0 -> 34')
def test_processor_chain_lambda_original_value(self): partA = lambda partial, options={}: {'total': sum(partial)} def partB(partial, options={}): partial.update({'fraction': options[1] / partial['total']}) return partial def partC(partial, options={}): return {'fraction': options[1] / partial['total']} pReduce = Processor.flow([partA, partC], aggregator='reduce') pReduceMerge = Processor.flow([partA, partB], aggregator='reduce') pMerge = Processor.flow([partA, partC], aggregator='merge') resultReduce = pReduce([10, 2, 100]) resultReduceMerge = pReduceMerge([10, 2, 100]) resultMerge = pMerge([10, 2, 100]) exp = {'total': 112, 'fraction': 2 / 112} self.assertEqual({'fraction': 2 / 112}, resultReduce) self.assertEqual(exp, resultReduceMerge) self.assertEqual(exp, resultMerge) self.assertEqual(resultReduceMerge, resultMerge)
def test_processor_chain_complex(self): p = Processor.flow([float, int, lambda x: x * 34]) self.assertEqual(p('1.0'), 34)
def test_processor_chain_flow(self): p = Processor.flow([float, int]) self.assertEqual(p('1.0'), 1) # Base case of 1 elem p = Processor.flow([int]) self.assertEqual(p('1.0'), 1)