    def test_data_collection_concat(self):
        """
        target: test window_all() API for pipeline
        method: Concat one or more pipelines to the existing pipeline and update all data from each pipeline.
        expected: output successfully
        """
        # concat 1 pipeline
        pipe0 = towhee.pipe.input('a', 'b', 'c')
        pipe1 = pipe0.map('a', 'd', lambda x: x + 1)
        pipe2 = pipe0.map(('b', 'c'), 'e', lambda x, y: x - y)
        pipe3 = pipe2.concat(pipe1).output('d', 'e')
        assert pipe3(1, 2, 3).get() == [2, -1]

        # concat >1 pipelines
        # if concat same such as concat(pipe1, pipe1, pipe1) ,execute as one.
        pipe6 = towhee.pipe.input('a')
        pipe7 = pipe6.map('a', 'b', lambda x: x + 1)
        pipe8 = pipe6.map('a', 'c', lambda x: x + 2)
        pipe9 = pipe8.filter('a', 'b', 'a', lambda x: x > 1)
        pipe10 = pipe9.concat(pipe7, pipe8).output('b', 'c')
        assert pipe10(10).get() == [11, 12]

        # concat repeatedly
        pipe0 = towhee.pipe.input('a')
        pipe1 = pipe0.map('a', 'b', lambda x: x + 1)
        pipe2 = pipe0.filter('a', 'b', 'a', lambda x: x > 0)
        pipe3 = pipe2.concat(pipe1).concat(pipe1).output('b')
        assert pipe3(10).get() == [11]

        # concat itself
        pipe0 = towhee.pipe.input('a')
        p = pipe0.concat(pipe0).map('a', 'c', lambda x: x + 1).output('c')
        assert p(10).get() == [11]

        return True
target: test window_all() API for pipeline
method: Concat one or more pipelines to the existing pipeline and update all data from each pipeline.
expected: output successfully
tests/testcases/test_data_collection.py