当前位置: 首页>>代码示例>>Python>>正文


Python Mocks.make_paging_response方法代码示例

本文整理汇总了Python中tests.unit.components.Mocks.make_paging_response方法的典型用法代码示例。如果您正苦于以下问题:Python Mocks.make_paging_response方法的具体用法?Python Mocks.make_paging_response怎么用?Python Mocks.make_paging_response使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tests.unit.components.Mocks的用法示例。


在下文中一共展示了Mocks.make_paging_response方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_state_list

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list(self):
        """Verifies a GET /state without parameters works properly.

        It will receive a Protobuf response with:
            - a head id of '2'
            - a paging response with a start of 0, and 3 total resources
            - three leaves with addresses/data of:
                * 'a': b'3'
                * 'b': b'5'
                * 'c': b'7'

        It should send a Protobuf request with:
            - empty paging controls

        It should send back a JSON response with:
            - a response status of 200
            - a head property of '2'
            - a link property that ends in '/state?head=2&min=0&count=3'
            - a paging property that matches the paging response
            - a data property that is a list of 3 leaf dicts
            - three leaves that match those in Protobuf response
        """
        paging = Mocks.make_paging_response(0, 3)
        leaves = Mocks.make_leaves(a=b'3', b=b'5', c=b'7')
        self.connection.preset_response(head_id='2', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state')
        controls = Mocks.make_paging_controls()
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response, '/state?head=2')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 3)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:37,代码来源:test_state_requests.py

示例2: test_state_list_paginated_without_count

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_paginated_without_count(self):
        """Verifies GET /state paginated without count works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 2, and 4 total resources
            - two leaves of {'b': b'2'} and {'a': b'1'}

        It should send a Protobuf request with:
            - a paging controls with a start_index of 2

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/state?head=d&min=2&count=2'
            - paging that matches the response, with a previous link
            - a data property that is a list of 2 dicts
            - and those dicts are leaves that match those received
        """
        paging = Mocks.make_paging_response(2, 4)
        leaves = Mocks.make_leaves(b=b'2', a=b'1')
        self.connection.preset_response(head_id='d', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state?min=2')
        controls = Mocks.make_paging_controls(None, start_index=2)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/state?head=d&min=2')
        self.assert_has_valid_paging(response, paging,
                                     previous_link='/state?head=d&min=0&count=2')
        self.assert_has_valid_data_list(response, 2)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_state_requests.py

示例3: test_state_list_paginated_with_just_count

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_paginated_with_just_count(self):
        """Verifies GET /state paginated just by count works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 0, and 4 total resources
            - two leaves of {'d': b'4'}, and {'c': b'3'}

        It should send a Protobuf request with:
            - a paging controls with a count of 2

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/state?head=d&min=0&count=2'
            - paging that matches the response with a next link
            - a data property that is a list of 2 dicts
            - and those dicts are leaves that match those received
        """
        paging = Mocks.make_paging_response(0, 4)
        leaves = Mocks.make_leaves(d=b'4', c=b'3')
        self.connection.preset_response(head_id='d', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state?count=2')
        controls = Mocks.make_paging_controls(2)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/state?head=d&count=2')
        self.assert_has_valid_paging(response, paging,
                                     '/state?head=d&min=2&count=2')
        self.assert_has_valid_data_list(response, 2)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_state_requests.py

示例4: test_block_list_with_ids

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_block_list_with_ids(self):
        """Verifies GET /blocks with an id filter works properly.

        It will receive a Protobuf response with:
            - a head id of '2'
            - a paging response with a start of 0, and 2 total resources
            - two blocks with ids '0' and '2'

        It should send a Protobuf request with:
            - a block_ids property of ['0', '2']
            - empty paging controls

        It should send back a JSON response with:
            - a response status of 200
            - a head property of '2', the latest
            - a link property that ends in '/blocks?head=2&id=0,2'
            - a paging property that matches the paging response
            - a data property that is a list of 2 dicts
            - and those dicts are full blocks with ids '0' and '2'
        """
        paging = Mocks.make_paging_response(0, 2)
        blocks = Mocks.make_blocks('0', '2')
        self.connection.preset_response(head_id='2', paging=paging, blocks=blocks)

        response = await self.get_assert_200('/blocks?id=0,2')
        controls = Mocks.make_paging_controls()
        self.connection.assert_valid_request_sent(block_ids=['0', '2'], paging=controls)

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response, '/blocks?head=2&id=0,2')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 2)
        self.assert_blocks_well_formed(response['data'], '0', '2')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_block_requests.py

示例5: test_batch_list_with_head

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_batch_list_with_head(self):
        """Verifies a GET /batches with a head parameter works properly.

        It will receive a Protobuf response with:
            - a head id of '1'
            - a paging response with a start of 0, and 2 total resources
            - two batches with ids of 1' and '0'

        It should send a Protobuf request with:
            - a head_id property of '1'
            - empty paging controls

        It should send back a JSON response with:
            - a response status of 200
            - a head property of '1'
            - a link property that ends in '/batches?head=1'
            - a paging property that matches the paging response
            - a data property that is a list of 2 dicts
            - and those dicts are full batches with ids '1' and '0'
        """
        paging = Mocks.make_paging_response(0, 2)
        batches = Mocks.make_batches('1', '0')
        self.connection.preset_response(head_id='1', paging=paging, batches=batches)

        response = await self.get_assert_200('/batches?head=1')
        controls = Mocks.make_paging_controls()
        self.connection.assert_valid_request_sent(head_id='1', paging=controls)

        self.assert_has_valid_head(response, '1')
        self.assert_has_valid_link(response, '/batches?head=1')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 2)
        self.assert_batches_well_formed(response['data'], '1', '0')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_batch_requests.py

示例6: test_block_list

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_block_list(self):
        """Verifies a GET /blocks without parameters works properly.

        It will receive a Protobuf response with:
            - a head id of '2'
            - a paging response with a start of 0, and 3 total resources
            - three blocks with ids '2', '1', and '0'

        It should send a Protobuf request with:
            - empty paging controls

        It should send back a JSON response with:
            - a status of 200
            - a head property of '2'
            - a link property that ends in '/blocks?head=2'
            - a paging property that matches the paging response
            - a data property that is a list of 3 dicts
            - and those dicts are full blocks with ids '2', '1', and '0'
        """
        paging = Mocks.make_paging_response(0, 3)
        blocks = Mocks.make_blocks('2', '1', '0')
        self.connection.preset_response(head_id='2', paging=paging, blocks=blocks)

        response = await self.get_assert_200('/blocks')
        controls = Mocks.make_paging_controls()
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response, '/blocks?head=2')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 3)
        self.assert_blocks_well_formed(response['data'], '2', '1', '0')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:34,代码来源:test_block_requests.py

示例7: test_state_list_with_address

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_with_address(self):
        """Verifies a GET /state works properly filtered by address.

        It will receive a Protobuf response with:
            - a head id of '2'
            - a paging response with a start of 0, and 1 total resource
            - one leaf with addresses/data of: 'c': b'7'

        It should send a Protobuf request with:
            - an address property of 'c'
            - empty paging controls

        It should send back a JSON response with:
            - a response status of 200
            - a head property of '2'
            - a link property that ends in '/state?head=2&min=0&count=1&address=c'
            - a paging property that matches the paging response
            - a data property that is a list of 1 leaf dict
            - one leaf that matches the Protobuf response
        """
        paging = Mocks.make_paging_response(0, 1)
        leaves = Mocks.make_leaves(c=b'7')
        self.connection.preset_response(head_id='2', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state?address=c')
        controls = Mocks.make_paging_controls()
        self.connection.assert_valid_request_sent(address='c', paging=controls)

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response, '/state?head=2&address=c')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 1)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_state_requests.py

示例8: test_batch_list_paginated_without_count

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_batch_list_paginated_without_count(self):
        """Verifies GET /batches paginated without count works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 2, and 4 total resources
            - two batches with the ids 'b' and 'a'

        It should send a Protobuf request with:
            - paging controls with a start_index of 2

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/batches?head=d&min=2'
            - paging that matches the response, with a previous link
            - a data property that is a list of 2 dicts
            - and those dicts are full batches with ids 'd' and 'c'
        """
        paging = Mocks.make_paging_response(2, 4)
        batches = Mocks.make_batches('b', 'a')
        self.connection.preset_response(head_id='d', paging=paging, batches=batches)

        response = await self.get_assert_200('/batches?min=2')
        controls = Mocks.make_paging_controls(None, start_index=2)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/batches?head=d&min=2')
        self.assert_has_valid_paging(response, paging,
                                     previous_link='/batches?head=d&min=0&count=2')
        self.assert_has_valid_data_list(response, 2)
        self.assert_batches_well_formed(response['data'], 'b', 'a')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_batch_requests.py

示例9: test_batch_list_with_bad_ids

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_batch_list_with_bad_ids(self):
        """Verifies GET /batches with a bad id filter breaks properly.

        It will receive a Protobuf response with:
            - a status of NO_RESOURCE
            - a head id of '2'

        It should send back a JSON response with:
            - a response status of 200
            - a head property of '2', the latest
            - a link property that ends in '/batches?head=2&id=bad,notgood'
            - a paging property with only a total_count of 0
            - a data property that is an empty list
        """
        paging = Mocks.make_paging_response(None, 0)
        self.connection.preset_response(
            self.status.NO_RESOURCE,
            head_id='2',
            paging=paging)
        response = await self.get_assert_200('/batches?id=bad,notgood')

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response, '/batches?head=2&id=bad,notgood')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 0)
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:27,代码来源:test_batch_requests.py

示例10: test_batch_list_paginated

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_batch_list_paginated(self):
        """Verifies GET /batches paginated by min id works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 1, and 4 total resources
            - one batch with the id 'c'

        It should send a Protobuf request with:
            - paging controls with a count of 1, and a start_index of 1

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/batches?head=d&min=1&count=1'
            - paging that matches the response, with next and previous links
            - a data property that is a list of 1 dict
            - and that dict is a full batch with the id 'c'
        """
        paging = Mocks.make_paging_response(1, 4)
        batches = Mocks.make_batches('c')
        self.connection.preset_response(head_id='d', paging=paging, batches=batches)

        response = await self.get_assert_200('/batches?min=1&count=1')
        controls = Mocks.make_paging_controls(1, start_index=1)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/batches?head=d&min=1&count=1')
        self.assert_has_valid_paging(response, paging,
                                     '/batches?head=d&min=2&count=1',
                                     '/batches?head=d&min=0&count=1')
        self.assert_has_valid_data_list(response, 1)
        self.assert_batches_well_formed(response['data'], 'c')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:36,代码来源:test_batch_requests.py

示例11: test_state_list_paginated_by_max_index

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_paginated_by_max_index(self):
        """Verifies GET /state paginated by a max index works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 0, and 4 total resources
            - three leaves with the ids {'d': b'4'}, {'c': b'3'} and {'b': b'2'}

        It should send a Protobuf request with:
            - a paging controls with a count of 2 and an start_index of 0

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/state?head=d&min=3&count=7'
            - paging that matches the response, with a next link
            - a data property that is a list of 2 dicts
            - and those dicts are leaves that match those received
        """
        paging = Mocks.make_paging_response(0, 4)
        leaves = Mocks.make_leaves(d=b'4', c=b'3', b=b'2')
        self.connection.preset_response(head_id='d', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state?max=2&count=7')
        controls = Mocks.make_paging_controls(3, start_index=0)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/state?head=d&max=2&count=7')
        self.assert_has_valid_paging(response, paging,
                                     '/state?head=d&min=3&count=7')
        self.assert_has_valid_data_list(response, 3)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_state_requests.py

示例12: test_state_list_paginated

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_paginated(self):
        """Verifies GET /state paginated by min id works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 1, and 4 total resources
            - one leaf of {'c': b'3'}

        It should send a Protobuf request with:
            - a paging controls with a count of 1, and a start_index of 1

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/state?head=d&min=1&count=1'
            - paging that matches the response, with next and previous links
            - a data property that is a list of 1 dict
            - and that dict is a leaf that matches the one received
        """
        paging = Mocks.make_paging_response(1, 4)
        leaves = Mocks.make_leaves(c=b'3')
        self.connection.preset_response(head_id='d', paging=paging, leaves=leaves)

        response = await self.get_assert_200('/state?min=1&count=1')
        controls = Mocks.make_paging_controls(1, start_index=1)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/state?head=d&min=1&count=1')
        self.assert_has_valid_paging(response, paging,
                                     '/state?head=d&min=2&count=1',
                                     '/state?head=d&min=0&count=1')
        self.assert_has_valid_data_list(response, 1)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:36,代码来源:test_state_requests.py

示例13: test_block_list_paginated_with_just_count

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_block_list_paginated_with_just_count(self):
        """Verifies GET /blocks paginated just by count works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 0, and 4 total resources
            - two blocks with the ids 'd' and 'c'

        It should send a Protobuf request with:
            - paging controls with a count of 2

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/blocks?head=d'
            - paging that matches the response with a next link
            - a data property that is a list of 2 dicts
            - and those dicts are full blocks with ids 'd' and 'c'
        """
        paging = Mocks.make_paging_response(0, 4)
        blocks = Mocks.make_blocks('d', 'c')
        self.connection.preset_response(head_id='d', paging=paging, blocks=blocks)

        response = await self.get_assert_200('/blocks?count=2')
        controls = Mocks.make_paging_controls(2)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/blocks?head=d&count=2')
        self.assert_has_valid_paging(response, paging,
                                     '/blocks?head=d&min=2&count=2')
        self.assert_has_valid_data_list(response, 2)
        self.assert_blocks_well_formed(response['data'], 'd', 'c')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_block_requests.py

示例14: test_batch_list_paginated_by_max_index

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_batch_list_paginated_by_max_index(self):
        """Verifies GET /batches paginated by a max index works properly.

        It will receive a Protobuf response with:
            - a head id of 'd'
            - a paging response with a start of 0, and 4 total resources
            - three batches with the ids 'd', 'c' and 'b'

        It should send a Protobuf request with:
            - paging controls with a count of 3, and an start_index of 0

        It should send back a JSON response with:
            - a response status of 200
            - a head property of 'd'
            - a link property that ends in '/batches?head=d&min=3&count=7'
            - paging that matches the response, with a next link
            - a data property that is a list of 2 dicts
            - and those dicts are full batches with ids 'd', 'c', and 'b'
        """
        paging = Mocks.make_paging_response(0, 4)
        batches = Mocks.make_batches('d', 'c', 'b')
        self.connection.preset_response(head_id='d', paging=paging, batches=batches)

        response = await self.get_assert_200('/batches?max=2&count=7')
        controls = Mocks.make_paging_controls(3, start_index=0)
        self.connection.assert_valid_request_sent(paging=controls)

        self.assert_has_valid_head(response, 'd')
        self.assert_has_valid_link(response, '/batches?head=d&max=2&count=7')
        self.assert_has_valid_paging(response, paging,
                                     '/batches?head=d&min=3&count=7')
        self.assert_has_valid_data_list(response, 3)
        self.assert_batches_well_formed(response['data'], 'd', 'c', 'b')
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:35,代码来源:test_batch_requests.py

示例15: test_state_list_sorted_by_many_keys

# 需要导入模块: from tests.unit.components import Mocks [as 别名]
# 或者: from tests.unit.components.Mocks import make_paging_response [as 别名]
    async def test_state_list_sorted_by_many_keys(self):
        """Verifies a GET /state can send proper sort parameters.

        It will receive a Protobuf response with:
            - a head id of '2'
            - a paging response with a start of 0, and 3 total resources
            - three leaves with addresses/data of:
                * 'c': b'7'
                * 'b': b'5'
                * 'a': b'3'

        It should send a Protobuf request with:
            - empty paging controls
            - multiple sort controls with:
                * a key of 'address' that is reversed
                * a key of 'value' that is sorted by length

        It should send back a JSON response with:
            - a status of 200
            - a head property of '2'
            - link with '/state?head=2&sort=-address,value.length'
            - a paging property that matches the paging response
            - a data property that is a list of 3 dicts
            - three leaves that match those in Protobuf response
        """
        paging = Mocks.make_paging_response(0, 3)
        leaves = Mocks.make_leaves(c=b'7', b=b'5', a=b'3')
        self.connection.preset_response(head_id='2', paging=paging, leaves=leaves)

        response = await self.get_assert_200(
            '/state?sort=-address,value.length')
        page_controls = Mocks.make_paging_controls()
        sorting = (Mocks.make_sort_controls('address', reverse=True) +
                   Mocks.make_sort_controls('value', compare_length=True))
        self.connection.assert_valid_request_sent(
            paging=page_controls,
            sorting=sorting)

        self.assert_has_valid_head(response, '2')
        self.assert_has_valid_link(response,
            '/state?head=2&sort=-address,value.length')
        self.assert_has_valid_paging(response, paging)
        self.assert_has_valid_data_list(response, 3)
        self.assert_leaves_match(leaves, response['data'])
开发者ID:feihujiang,项目名称:sawtooth-core,代码行数:46,代码来源:test_state_requests.py


注:本文中的tests.unit.components.Mocks.make_paging_response方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。