contrib/python-zstandard/tests/test_module_attributes.py
author Jun Wu <quark@fb.com>
Fri, 08 Dec 2017 14:20:34 -0800
changeset 35330 0c1aff6d73a7
parent 30895 c32454d69b85
child 37495 b1fb341d8a61
permissions -rw-r--r--
revset: use phasecache.getrevset to calculate public() Other revsets like secret(), draft(), _nonpublic() are using phasescache.getrevset already. The latter is more efficient after D1606. So let's migrate the public() revset function too. Tested using: $ hg debugshell --hidden --cwd hg-committed` In [1]: %timeit len(repo.revs('public()')) * Before D1606: 10 loops, best of 3: 22.5 ms per loop * Before this change, after D1606: 10 loops, best of 3: 28.6 ms per loop * After this change: 10 loops, best of 3: 20.2 ms per loop Therefore `public()` revset becomes even slightly faster after the data structure change by D1606. A similar performance win could also be observed on a large repo. A side effect is `phasecache.getrevset` needs to take a `subset` parameter. That was added with a default value so it won't cause BC issues. Differential Revision: https://phab.mercurial-scm.org/D1620

from __future__ import unicode_literals

try:
    import unittest2 as unittest
except ImportError:
    import unittest

import zstd

from . common import (
    make_cffi,
)


@make_cffi
class TestModuleAttributes(unittest.TestCase):
    def test_version(self):
        self.assertEqual(zstd.ZSTD_VERSION, (1, 1, 3))

    def test_constants(self):
        self.assertEqual(zstd.MAX_COMPRESSION_LEVEL, 22)
        self.assertEqual(zstd.FRAME_HEADER, b'\x28\xb5\x2f\xfd')

    def test_hasattr(self):
        attrs = (
            'COMPRESSION_RECOMMENDED_INPUT_SIZE',
            'COMPRESSION_RECOMMENDED_OUTPUT_SIZE',
            'DECOMPRESSION_RECOMMENDED_INPUT_SIZE',
            'DECOMPRESSION_RECOMMENDED_OUTPUT_SIZE',
            'MAGIC_NUMBER',
            'WINDOWLOG_MIN',
            'WINDOWLOG_MAX',
            'CHAINLOG_MIN',
            'CHAINLOG_MAX',
            'HASHLOG_MIN',
            'HASHLOG_MAX',
            'HASHLOG3_MAX',
            'SEARCHLOG_MIN',
            'SEARCHLOG_MAX',
            'SEARCHLENGTH_MIN',
            'SEARCHLENGTH_MAX',
            'TARGETLENGTH_MIN',
            'TARGETLENGTH_MAX',
            'STRATEGY_FAST',
            'STRATEGY_DFAST',
            'STRATEGY_GREEDY',
            'STRATEGY_LAZY',
            'STRATEGY_LAZY2',
            'STRATEGY_BTLAZY2',
            'STRATEGY_BTOPT',
        )

        for a in attrs:
            self.assertTrue(hasattr(zstd, a), a)