示例#1
0
 def test09pipeline_00noop(self):
     ''' Run a single stage one to one no-op pipeline.
 '''
     with Later(1) as L:
         items = ['a', 'b', 'c', 'g', 'f', 'e']
         P = pipeline(L, [(FUNC_ONE_TO_ONE, lambda x: x)], items)
         result = list(P.outQ)
         self.assertEqual(items, result)
示例#2
0
    def test09pipeline_01idenitity(self):
        ''' Run a single stage one to many no-op pipeline.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']

        def func(x):
            yield x

        P = pipeline(L, [(FUNC_ONE_TO_MANY, func)], items)
        self.assertIsNot(P.outQ, items)
        result = list(P.outQ)
        self.assertEqual(items, result)
示例#3
0
    def test09pipeline_03a_sort(self):
        ''' Run a single stage many to many pipeline doing a sort.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']
        expected = ['a', 'b', 'c', 'e', 'f', 'g']

        def func(x):
            return sorted(x)

        P = pipeline(L, [(FUNC_MANY_TO_MANY, func)], items)
        self.assertIsNot(P.outQ, items)
        result = list(P.outQ)
        self.assertEqual(result, expected)
示例#4
0
    def test09pipeline_03b_set(self):
        ''' Run a single stage man to many pipeline.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']
        expected = ['a', 'b', 'c', 'e', 'f', 'g']

        def func(x):
            return set(x)

        P = pipeline(L, [(FUNC_MANY_TO_MANY, func)], items)
        self.assertIsNot(P.outQ, items)
        result = set(P.outQ)
        self.assertEqual(result, set(items))
示例#5
0
    def test09pipeline_04select(self):
        ''' Run a single stage selection pipeline.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']
        want = ('a', 'f', 'c')
        expected = ['a', 'c', 'f']

        def wanted(x):
            return x in want

        P = pipeline(L, [(FUNC_SELECTOR, wanted)], items)
        self.assertIsNot(P.outQ, items)
        result = list(P.outQ)
        self.assertEqual(result, expected)
示例#6
0
    def test09pipeline_02double(self):
        ''' Run a single stage one to many pipeline.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']
        expected = ['a', 'a', 'b', 'b', 'c', 'c', 'g', 'g', 'f', 'f', 'e', 'e']

        def func(x):
            yield x
            yield x

        P = pipeline(L, [(FUNC_ONE_TO_MANY, func)], items)
        self.assertIsNot(P.outQ, items)
        result = list(P.outQ)
        # values may be interleaved due to parallelism
        self.assertEqual(len(result), len(expected))
        self.assertEqual(sorted(result), sorted(expected))
示例#7
0
    def test09pipeline_05two_by_two_by_sort(self):
        ''' Run a 3 stage pipeline with some fan out.
    '''
        L = self.L
        items = ['a', 'b', 'c', 'g', 'f', 'e']
        expected = [
            'a',
            'a',
            'a',
            'a',
            'b',
            'b',
            'b',
            'b',
            'c',
            'c',
            'c',
            'c',
            'e',
            'e',
            'e',
            'e',
            'f',
            'f',
            'f',
            'f',
            'g',
            'g',
            'g',
            'g',
        ]

        def double(x):
            yield x
            yield x

        P = pipeline(L,
                     [(FUNC_ONE_TO_MANY, double), (FUNC_ONE_TO_MANY, double),
                      (FUNC_MANY_TO_MANY, sorted)], items)
        self.assertIsNot(P.outQ, items)
        result = list(P.outQ)
        self.assertEqual(result, expected)