diff --git a/CHANGES.rst b/CHANGES.rst index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_Q0hBTkdFUy5yc3Q=..98dd99e3a57248175522a8100675dde63fb14552_Q0hBTkdFUy5yc3Q= 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,6 @@ - ANY DEFINED BY clause support implemented -Revision 0.3.5, released XX-09-2017 +Revision 0.3.5, released 16-09-2017 ----------------------------------- @@ -8,5 +8,6 @@ ----------------------------------- -- Codecs signatures unified and pass **options through the call chain +- Codecs signatures unified and pass the options kwargs through the + call chain - Explicit tag encoding optimized to avoid unnecessary copying - End-of-octets sentinel encoding optimized @@ -11,5 +12,5 @@ - Explicit tag encoding optimized to avoid unnecessary copying - End-of-octets sentinel encoding optimized -- Refactored ASN.1 codecs properties to silently enforce proper length and - chunk size encoding modes +- Refactored ASN.1 codecs properties to silently enforce proper + length and chunk size encoding modes - Fixed DER encoder to always produce primitive encoding @@ -15,4 +16,7 @@ - Fixed DER encoder to always produce primitive encoding +- Fixed crash at SequenceOf native decoder +- Fixed Real.prettyPrint() to fail gracefully on overflow +- Fixed a couple of crashes when debug mode is enabled Revision 0.3.4, released 07-09-2017 ----------------------------------- diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvZGVjL2Jlci9kZWNvZGVyLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvZGVjL2Jlci9kZWNvZGVyLnB5 100644 --- a/pyasn1/codec/ber/decoder.py +++ b/pyasn1/codec/ber/decoder.py @@ -707,6 +707,7 @@ return asn1Object, substrate + class SequenceOrSequenceOfDecoder(UniversalConstructedTypeDecoder): protoRecordComponent = univ.Sequence() protoSequenceComponent = univ.SequenceOf() @@ -809,7 +810,7 @@ decodeFun=None, substrateFun=None, **options): if asn1Spec is None or asn1Spec is not None and tagSet != asn1Spec.tagSet: - fullSubstrate=options['fullSubstrate'] + fullSubstrate = options['fullSubstrate'] # untagged Any container, recover inner header substrate length += len(fullSubstrate) - len(substrate) @@ -831,7 +832,7 @@ # tagged Any type -- consume header substrate header = null else: - fullSubstrate=options['fullSubstrate'] + fullSubstrate = options['fullSubstrate'] # untagged Any, recover header substrate header = fullSubstrate[:-len(substrate)] @@ -1232,7 +1233,7 @@ ) if logger: - logger('codec %s yields type %s, value:\n%s\n...remaining substrate is: %s' % (concreteDecoder.__class__.__name__, value.__class__.__name__, isinstance(value, base.Asn1Item) and value.prettyPrint() or repr(value), substrate and debug.hexdump(substrate) or '<none>')) + logger('codec %s yields type %s, value:\n%s\n...remaining substrate is: %s' % (concreteDecoder.__class__.__name__, value.__class__.__name__, isinstance(value, base.Asn1Item) and value.prettyPrint() or value, substrate and debug.hexdump(substrate) or '<none>')) state = stStop break diff --git a/pyasn1/codec/ber/encoder.py b/pyasn1/codec/ber/encoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvZGVjL2Jlci9lbmNvZGVyLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvZGVjL2Jlci9lbmNvZGVyLnB5 100644 --- a/pyasn1/codec/ber/encoder.py +++ b/pyasn1/codec/ber/encoder.py @@ -23,5 +23,5 @@ if isConstructed: encodedTag |= tag.tagFormatConstructed if tagId < 31: - return (encodedTag | tagId,) + return encodedTag | tagId, else: @@ -27,5 +27,5 @@ else: - substrate = (tagId & 0x7f,) + substrate = tagId & 0x7f, tagId >>= 7 while tagId: substrate = (0x80 | (tagId & 0x7f),) + substrate @@ -36,7 +36,7 @@ if not defMode and self.supportIndefLenMode: return (0x80,) if length < 0x80: - return (length,) + return length, else: substrate = () while length: @@ -398,7 +398,7 @@ class AnyEncoder(OctetStringEncoder): def encodeValue(self, value, encodeFun, **options): - return value.asOctets(), options.get('defMode', True) == False, True + return value.asOctets(), not options.get('defMode', True), True tagMap = { diff --git a/pyasn1/codec/native/decoder.py b/pyasn1/codec/native/decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvZGVjL25hdGl2ZS9kZWNvZGVyLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvZGVjL25hdGl2ZS9kZWNvZGVyLnB5 100644 --- a/pyasn1/codec/native/decoder.py +++ b/pyasn1/codec/native/decoder.py @@ -38,7 +38,7 @@ asn1Value = asn1Spec.clone() for pyValue in pyObject: - asn1Value.append(decodeFun(pyValue, asn1Spec.componentType.asn1Object), **options) + asn1Value.append(decodeFun(pyValue, asn1Spec.componentType), **options) return asn1Value diff --git a/pyasn1/compat/calling.py b/pyasn1/compat/calling.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvbXBhdC9jYWxsaW5nLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvbXBhdC9jYWxsaW5nLnB5 100644 --- a/pyasn1/compat/calling.py +++ b/pyasn1/compat/calling.py @@ -12,7 +12,8 @@ if (2, 7) < version_info[:2] < (3, 2): import collections - callable = lambda x: isinstance(x, collections.Callable) + def callable(x): + return isinstance(x, collections.Callable) else: diff --git a/pyasn1/compat/integer.py b/pyasn1/compat/integer.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvbXBhdC9pbnRlZ2VyLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvbXBhdC9pbnRlZ2VyLnB5 100644 --- a/pyasn1/compat/integer.py +++ b/pyasn1/compat/integer.py @@ -106,4 +106,3 @@ def bitLength(number): return int(number).bit_length() - diff --git a/pyasn1/compat/string.py b/pyasn1/compat/string.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2NvbXBhdC9zdHJpbmcucHk=..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2NvbXBhdC9zdHJpbmcucHk= 100644 --- a/pyasn1/compat/string.py +++ b/pyasn1/compat/string.py @@ -23,4 +23,4 @@ else: def partition(string, sep): - return string.partition(sep) \ No newline at end of file + return string.partition(sep) diff --git a/pyasn1/debug.py b/pyasn1/debug.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL2RlYnVnLnB5..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL2RlYnVnLnB5 100644 --- a/pyasn1/debug.py +++ b/pyasn1/debug.py @@ -29,4 +29,5 @@ def __init__(self, logger=None, handler=None, formatter=None): if logger is None: logger = logging.getLogger('pyasn1') + logger.setLevel(logging.DEBUG) @@ -32,3 +33,4 @@ logger.setLevel(logging.DEBUG) + if handler is None: handler = logging.StreamHandler() @@ -33,4 +35,5 @@ if handler is None: handler = logging.StreamHandler() + if formatter is None: formatter = logging.Formatter('%(asctime)s %(name)s: %(message)s') @@ -35,5 +38,6 @@ if formatter is None: formatter = logging.Formatter('%(asctime)s %(name)s: %(message)s') + handler.setFormatter(formatter) handler.setLevel(logging.DEBUG) logger.addHandler(handler) @@ -37,9 +41,10 @@ handler.setFormatter(formatter) handler.setLevel(logging.DEBUG) logger.addHandler(handler) + self.__logger = logger def __call__(self, msg): self.__logger.debug(msg) def __str__(self): @@ -40,11 +45,11 @@ self.__logger = logger def __call__(self, msg): self.__logger.debug(msg) def __str__(self): - return '<python built-in logging>' + return '<python logging>' if hasattr(logging, 'NullHandler'): NullHandler = logging.NullHandler @@ -47,7 +52,8 @@ if hasattr(logging, 'NullHandler'): NullHandler = logging.NullHandler + else: # Python 2.6 and older class NullHandler(logging.Handler): @@ -56,7 +62,7 @@ class Debug(object): - defaultPrinter = None + defaultPrinter = Printer() def __init__(self, *flags, **options): self._flags = flagNone @@ -60,13 +66,10 @@ def __init__(self, *flags, **options): self._flags = flagNone - if options.get('printer') is not None: - self._printer = options.get('printer') - elif self.defaultPrinter is not None: - self._printer = self.defaultPrinter + if 'loggerName' in options: # route our logs to parent logger self._printer = Printer( logger=logging.getLogger(options['loggerName']), handler=NullHandler() ) @@ -67,7 +70,11 @@ if 'loggerName' in options: # route our logs to parent logger self._printer = Printer( logger=logging.getLogger(options['loggerName']), handler=NullHandler() ) + + elif 'printer' in options: + self._printer = options.get('printer') + else: @@ -73,6 +80,8 @@ else: - self._printer = Printer() - self('running pyasn1 version %s' % __version__) - for f in flags: - inverse = f and f[0] in ('!', '~') + self._printer = self.defaultPrinter + + self._printer('running pyasn1 %s, debug flags %s' % (__version__, ', '.join(flags))) + + for flag in flags: + inverse = flag and flag[0] in ('!', '~') if inverse: @@ -78,4 +87,4 @@ if inverse: - f = f[1:] + flag = flag[1:] try: if inverse: @@ -80,4 +89,4 @@ try: if inverse: - self._flags &= ~flagMap[f] + self._flags &= ~flagMap[flag] else: @@ -83,3 +92,3 @@ else: - self._flags |= flagMap[f] + self._flags |= flagMap[flag] except KeyError: @@ -85,3 +94,3 @@ except KeyError: - raise error.PyAsn1Error('bad debug flag %s' % f) + raise error.PyAsn1Error('bad debug flag %s' % flag) @@ -87,5 +96,5 @@ - self('debug category \'%s\' %s' % (f, inverse and 'disabled' or 'enabled')) + self._printer("debug category '%s' %s" % (flag, inverse and 'disabled' or 'enabled')) def __str__(self): return 'logger %s, flags %x' % (self._printer, self._flags) @@ -103,5 +112,5 @@ logger = 0 -def setLogger(l): +def setLogger(userLogger): global logger @@ -107,5 +116,9 @@ global logger - logger = l + + if userLogger: + logger = userLogger + else: + logger = 0 def hexdump(octets): diff --git a/pyasn1/type/opentype.py b/pyasn1/type/opentype.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL3R5cGUvb3BlbnR5cGUucHk=..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL3R5cGUvb3BlbnR5cGUucHk= 100644 --- a/pyasn1/type/opentype.py +++ b/pyasn1/type/opentype.py @@ -25,6 +25,6 @@ typeMap: :py:class:`dict`: A map of value->ASN.1 type. It's stored by reference and can be mutated later to register new mappings. - + Examples -------- @@ -29,6 +29,6 @@ Examples -------- - + .. code-block:: openType = OpenType( diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_cHlhc24xL3R5cGUvdW5pdi5weQ==..98dd99e3a57248175522a8100675dde63fb14552_cHlhc24xL3R5cGUvdW5pdi5weQ== 100644 --- a/pyasn1/type/univ.py +++ b/pyasn1/type/univ.py @@ -1498,7 +1498,11 @@ if self.isInf: return self.prettyOut(self._value) else: - return str(float(self)) + try: + return str(float(self)) + + except OverflowError: + return '<overflow>' @property def isPlusInf(self): diff --git a/tests/base.py b/tests/base.py new file mode 100644 index 0000000000000000000000000000000000000000..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvYmFzZS5weQ== --- /dev/null +++ b/tests/base.py @@ -0,0 +1,22 @@ +# +# This file is part of pyasn1 software. +# +# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com> +# License: http://pyasn1.sf.net/license.html +# +import sys +try: + import unittest2 as unittest +except ImportError: + import unittest + +from pyasn1 import debug + + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + debug.setLogger(debug.Debug('all', printer=lambda *x: None)) + + def tearDown(self): + debug.setLogger(None) diff --git a/tests/codec/ber/test_decoder.py b/tests/codec/ber/test_decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvYmVyL3Rlc3RfZGVjb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvYmVyL3Rlc3RfZGVjb2Rlci5weQ== 100644 --- a/tests/codec/ber/test_decoder.py +++ b/tests/codec/ber/test_decoder.py @@ -10,9 +10,11 @@ except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import tag, namedtype, opentype, univ, char from pyasn1.codec.ber import decoder, eoo from pyasn1.compat.octets import ints2octs, str2octs, null from pyasn1.error import PyAsn1Error @@ -13,10 +15,10 @@ from pyasn1.type import tag, namedtype, opentype, univ, char from pyasn1.codec.ber import decoder, eoo from pyasn1.compat.octets import ints2octs, str2octs, null from pyasn1.error import PyAsn1Error -class LargeTagDecoderTestCase(unittest.TestCase): +class LargeTagDecoderTestCase(BaseTestCase): def testLargeTag(self): assert decoder.decode(ints2octs((127, 141, 245, 182, 253, 47, 3, 2, 1, 1))) == (1, null) @@ -29,8 +31,8 @@ ints2octs((0x9f, 0x00, 0x02, 0x01, 0x02)), asn1Spec=integer) -class DecoderCacheTestCase(unittest.TestCase): +class DecoderCacheTestCase(BaseTestCase): def testCache(self): assert decoder.decode(ints2octs((0x1f, 2, 1, 0))) == decoder.decode(ints2octs((0x1f, 2, 1, 0))) @@ -33,8 +35,8 @@ def testCache(self): assert decoder.decode(ints2octs((0x1f, 2, 1, 0))) == decoder.decode(ints2octs((0x1f, 2, 1, 0))) -class IntegerDecoderTestCase(unittest.TestCase): +class IntegerDecoderTestCase(BaseTestCase): def testPosInt(self): assert decoder.decode(ints2octs((2, 1, 12))) == (12, null) @@ -82,7 +84,7 @@ assert 0, 'wrong tagFormat worked out' -class BooleanDecoderTestCase(unittest.TestCase): +class BooleanDecoderTestCase(BaseTestCase): def testTrue(self): assert decoder.decode(ints2octs((1, 1, 1))) == (1, null) @@ -104,7 +106,7 @@ assert 0, 'wrong tagFormat worked out' -class BitStringDecoderTestCase(unittest.TestCase): +class BitStringDecoderTestCase(BaseTestCase): def testDefMode(self): assert decoder.decode( ints2octs((3, 3, 1, 169, 138)) @@ -128,9 +130,9 @@ def testDefModeChunkedSubst(self): assert decoder.decode( ints2octs((35, 8, 3, 2, 0, 169, 3, 2, 1, 138)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((3, 2, 0, 169, 3, 2, 1, 138)), 8) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((3, 2, 0, 169, 3, 2, 1, 138)), str2octs('')) def testIndefModeChunkedSubst(self): assert decoder.decode( ints2octs((35, 128, 3, 2, 0, 169, 3, 2, 1, 138, 0, 0)), @@ -133,9 +135,9 @@ def testIndefModeChunkedSubst(self): assert decoder.decode( ints2octs((35, 128, 3, 2, 0, 169, 3, 2, 1, 138, 0, 0)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((3, 2, 0, 169, 3, 2, 1, 138, 0, 0)), -1) + substrateFun=lambda a, b, c: (b, str2octs('')) + ) == (ints2octs((3, 2, 0, 169, 3, 2, 1, 138, 0, 0)), str2octs('')) def testTypeChecking(self): try: @@ -146,7 +148,7 @@ assert 0, 'accepted mis-encoded bit-string constructed out of an integer' -class OctetStringDecoderTestCase(unittest.TestCase): +class OctetStringDecoderTestCase(BaseTestCase): def testDefMode(self): assert decoder.decode( ints2octs((4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)) @@ -173,11 +175,10 @@ assert decoder.decode( ints2octs( (36, 23, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120)), - 23) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120)), str2octs('')) def testIndefModeChunkedSubst(self): assert decoder.decode( ints2octs((36, 128, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0)), @@ -179,7 +180,7 @@ def testIndefModeChunkedSubst(self): assert decoder.decode( ints2octs((36, 128, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0)), - substrateFun=lambda a, b, c: (b, c) + substrateFun=lambda a, b, c: (b, str2octs('')) ) == (ints2octs( @@ -185,4 +186,4 @@ ) == (ints2octs( - (4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0)), -1) + (4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0)), str2octs('')) @@ -187,4 +188,4 @@ -class ExpTaggedOctetStringDecoderTestCase(unittest.TestCase): +class ExpTaggedOctetStringDecoderTestCase(BaseTestCase): def setUp(self): @@ -190,4 +191,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.o = univ.OctetString( 'Quick brown fox', tagSet=univ.OctetString.tagSet.tagExplicitly( @@ -233,11 +235,11 @@ def testDefModeSubst(self): assert decoder.decode( ints2octs((101, 17, 4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)), 17) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)), str2octs('')) def testIndefModeSubst(self): assert decoder.decode( ints2octs(( 101, 128, 36, 128, 4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 0, 0, 0, 0)), @@ -238,8 +240,8 @@ def testIndefModeSubst(self): assert decoder.decode( ints2octs(( 101, 128, 36, 128, 4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 0, 0, 0, 0)), - substrateFun=lambda a, b, c: (b, c) + substrateFun=lambda a, b, c: (b, str2octs('')) ) == (ints2octs( @@ -245,4 +247,4 @@ ) == (ints2octs( - (36, 128, 4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 0, 0, 0, 0)), -1) + (36, 128, 4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 0, 0, 0, 0)), str2octs('')) @@ -247,6 +249,6 @@ -class NullDecoderTestCase(unittest.TestCase): +class NullDecoderTestCase(BaseTestCase): def testNull(self): assert decoder.decode(ints2octs((5, 0))) == (null, null) @@ -261,7 +263,7 @@ # Useful analysis of OID encoding issues could be found here: # http://www.viathinksoft.de/~daniel-marschall/asn.1/oid_facts.html -class ObjectIdentifierDecoderTestCase(unittest.TestCase): +class ObjectIdentifierDecoderTestCase(BaseTestCase): def testOne(self): assert decoder.decode( ints2octs((6, 6, 43, 6, 0, 191, 255, 126)) @@ -402,7 +404,7 @@ ) == ((2, 999, 18446744073709551535184467440737095), null) -class RealDecoderTestCase(unittest.TestCase): +class RealDecoderTestCase(BaseTestCase): def testChar(self): assert decoder.decode( ints2octs((9, 7, 3, 49, 50, 51, 69, 49, 49)) @@ -478,8 +480,8 @@ if sys.version_info[0:2] > (2, 5): - class UniversalStringDecoderTestCase(unittest.TestCase): + class UniversalStringDecoderTestCase(BaseTestCase): def testDecoder(self): assert decoder.decode(ints2octs((28, 12, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99))) == (char.UniversalString(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) @@ -482,9 +484,9 @@ def testDecoder(self): assert decoder.decode(ints2octs((28, 12, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99))) == (char.UniversalString(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) -class BMPStringDecoderTestCase(unittest.TestCase): +class BMPStringDecoderTestCase(BaseTestCase): def testDecoder(self): assert decoder.decode(ints2octs((30, 6, 0, 97, 0, 98, 0, 99))) == (char.BMPString(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) @@ -487,9 +489,9 @@ def testDecoder(self): assert decoder.decode(ints2octs((30, 6, 0, 97, 0, 98, 0, 99))) == (char.BMPString(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) -class UTF8StringDecoderTestCase(unittest.TestCase): +class UTF8StringDecoderTestCase(BaseTestCase): def testDecoder(self): assert decoder.decode(ints2octs((12, 3, 97, 98, 99))) == (char.UTF8String(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) @@ -492,6 +494,6 @@ def testDecoder(self): assert decoder.decode(ints2octs((12, 3, 97, 98, 99))) == (char.UTF8String(sys.version_info[0] == 3 and 'abc' or unicode('abc')), null) -class SequenceOfDecoderTestCase(unittest.TestCase): +class SequenceOfDecoderTestCase(BaseTestCase): def setUp(self): @@ -497,4 +499,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.SequenceOf(componentType=univ.OctetString()) self.s.setComponentByPosition(0, univ.OctetString('quick brown')) @@ -524,7 +528,7 @@ ) == (self.s, null) -class ExpTaggedSequenceOfDecoderTestCase(unittest.TestCase): +class ExpTaggedSequenceOfDecoderTestCase(BaseTestCase): def testWithSchema(self): s = univ.SequenceOf().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)) @@ -545,5 +549,5 @@ assert s.tagSet == s2.tagSet -class SequenceOfDecoderWithSchemaTestCase(unittest.TestCase): +class SequenceOfDecoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -549,4 +553,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SequenceOf(componentType=univ.OctetString()) self.s.setComponentByPosition(0, univ.OctetString('quick brown')) @@ -571,5 +576,5 @@ ) == (self.s, null) -class SetOfDecoderTestCase(unittest.TestCase): +class SetOfDecoderTestCase(BaseTestCase): def setUp(self): @@ -575,4 +580,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SetOf(componentType=univ.OctetString()) self.s.setComponentByPosition(0, univ.OctetString('quick brown')) @@ -602,5 +608,5 @@ ) == (self.s, null) -class SetOfDecoderWithSchemaTestCase(unittest.TestCase): +class SetOfDecoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -606,4 +612,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SetOf(componentType=univ.OctetString()) self.s.setComponentByPosition(0, univ.OctetString('quick brown')) @@ -628,5 +635,5 @@ ) == (self.s, null) -class SequenceDecoderTestCase(unittest.TestCase): +class SequenceDecoderTestCase(BaseTestCase): def setUp(self): @@ -632,4 +639,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), @@ -665,8 +673,8 @@ def testWithOptionalAndDefaultedDefModeSubst(self): assert decoder.decode( ints2octs((48, 18, 5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), 18) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), str2octs('')) def testWithOptionalAndDefaultedIndefModeSubst(self): assert decoder.decode( @@ -670,7 +678,6 @@ def testWithOptionalAndDefaultedIndefModeSubst(self): assert decoder.decode( - ints2octs((48, 128, 5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, - 0, 0)), - substrateFun=lambda a, b, c: (b, c) + ints2octs((48, 128, 5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), + substrateFun=lambda a, b, c: (b, str2octs('')) ) == (ints2octs( @@ -676,5 +683,5 @@ ) == (ints2octs( - (5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), -1) + (5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), str2octs('')) def testTagFormat(self): try: @@ -687,5 +694,5 @@ assert 0, 'wrong tagFormat worked out' -class SequenceDecoderWithSchemaTestCase(unittest.TestCase): +class SequenceDecoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -691,4 +698,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), @@ -823,7 +831,7 @@ ) == (self.s, null) -class SequenceDecoderWithIntegerOpenTypesTestCase(unittest.TestCase): +class SequenceDecoderWithIntegerOpenTypesTestCase(BaseTestCase): def setUp(self): openType = opentype.OpenType( 'id', @@ -872,5 +880,5 @@ assert s[1] == ints2octs((4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110)) -class SetDecoderTestCase(unittest.TestCase): +class SetDecoderTestCase(BaseTestCase): def setUp(self): @@ -876,4 +884,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), @@ -909,9 +918,9 @@ def testWithOptionalAndDefaultedDefModeSubst(self): assert decoder.decode( ints2octs((49, 18, 5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), 18) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1)), str2octs('')) def testWithOptionalAndDefaultedIndefModeSubst(self): assert decoder.decode( ints2octs((49, 128, 5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), @@ -914,6 +923,6 @@ def testWithOptionalAndDefaultedIndefModeSubst(self): assert decoder.decode( ints2octs((49, 128, 5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), - substrateFun=lambda a, b, c: (b, c) + substrateFun=lambda a, b, c: (b, str2octs('')) ) == (ints2octs( @@ -919,5 +928,5 @@ ) == (ints2octs( - (5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), -1) + (5, 0, 36, 128, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)), str2octs('')) def testTagFormat(self): try: @@ -930,5 +939,5 @@ assert 0, 'wrong tagFormat worked out' -class SetDecoderWithSchemaTestCase(unittest.TestCase): +class SetDecoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -934,4 +943,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), @@ -1069,5 +1079,5 @@ ) == (self.s, null) -class SequenceOfWithExpTaggedOctetStringDecoder(unittest.TestCase): +class SequenceOfWithExpTaggedOctetStringDecoder(BaseTestCase): def setUp(self): @@ -1073,4 +1083,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SequenceOf( componentType=univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3)) ) @@ -1114,5 +1125,5 @@ assert s.tagSet == self.s.tagSet -class SequenceWithExpTaggedOctetStringDecoder(unittest.TestCase): +class SequenceWithExpTaggedOctetStringDecoder(BaseTestCase): def setUp(self): @@ -1118,4 +1129,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType( @@ -1163,5 +1175,5 @@ assert s.tagSet == self.s.tagSet -class ChoiceDecoderTestCase(unittest.TestCase): +class ChoiceDecoderTestCase(BaseTestCase): def setUp(self): @@ -1167,4 +1179,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Choice( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), @@ -1202,5 +1215,5 @@ assert decoder.decode(ints2octs((164, 128, 5, 0, 0, 0)), asn1Spec=s) == (s, null) -class AnyDecoderTestCase(unittest.TestCase): +class AnyDecoderTestCase(BaseTestCase): def setUp(self): @@ -1206,4 +1219,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Any() def testByUntagged(self): @@ -1236,10 +1250,10 @@ assert decoder.decode( ints2octs((4, 3, 102, 111, 120)), asn1Spec=self.s, - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((4, 3, 102, 111, 120)), 5) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((4, 3, 102, 111, 120)), str2octs('')) def testTaggedExSubst(self): assert decoder.decode( ints2octs((164, 5, 4, 3, 102, 111, 120)), asn1Spec=self.s, @@ -1241,9 +1255,9 @@ def testTaggedExSubst(self): assert decoder.decode( ints2octs((164, 5, 4, 3, 102, 111, 120)), asn1Spec=self.s, - substrateFun=lambda a, b, c: (b, c) - ) == (ints2octs((164, 5, 4, 3, 102, 111, 120)), 7) + substrateFun=lambda a, b, c: (b, b[c:]) + ) == (ints2octs((164, 5, 4, 3, 102, 111, 120)), str2octs('')) @@ -1248,6 +1262,6 @@ -class EndOfOctetsTestCase(unittest.TestCase): +class EndOfOctetsTestCase(BaseTestCase): def testUnexpectedEoo(self): try: decoder.decode(ints2octs((0, 0))) @@ -1298,5 +1312,5 @@ assert 0, 'end-of-contents octets accepted with unexpected data' -class NonStringDecoderTestCase(unittest.TestCase): +class NonStringDecoderTestCase(BaseTestCase): def setUp(self): @@ -1302,4 +1316,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null(null)), diff --git a/tests/codec/ber/test_encoder.py b/tests/codec/ber/test_encoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvYmVyL3Rlc3RfZW5jb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvYmVyL3Rlc3RfZW5jb2Rlci5weQ== 100644 --- a/tests/codec/ber/test_encoder.py +++ b/tests/codec/ber/test_encoder.py @@ -5,5 +5,6 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest @@ -8,5 +9,6 @@ try: import unittest2 as unittest + except ImportError: import unittest @@ -10,7 +12,9 @@ except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import tag, namedtype, univ, char from pyasn1.codec.ber import encoder from pyasn1.compat.octets import ints2octs from pyasn1.error import PyAsn1Error @@ -13,7 +17,6 @@ from pyasn1.type import tag, namedtype, univ, char from pyasn1.codec.ber import encoder from pyasn1.compat.octets import ints2octs from pyasn1.error import PyAsn1Error -from sys import version_info @@ -18,4 +21,4 @@ -class LargeTagEncoderTestCase(unittest.TestCase): +class LargeTagEncoderTestCase(BaseTestCase): def setUp(self): @@ -21,4 +24,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.o = univ.Integer().subtype( value=1, explicitTag=tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0xdeadbeaf) ) @@ -27,7 +32,7 @@ assert encoder.encode(self.o) == ints2octs((127, 141, 245, 182, 253, 47, 3, 2, 1, 1)) -class IntegerEncoderTestCase(unittest.TestCase): +class IntegerEncoderTestCase(BaseTestCase): def testPosInt(self): assert encoder.encode(univ.Integer(12)) == ints2octs((2, 1, 12)) @@ -57,7 +62,7 @@ ) == ints2octs((2, 9, 255, 0, 0, 0, 0, 0, 0, 0, 1)) -class BooleanEncoderTestCase(unittest.TestCase): +class BooleanEncoderTestCase(BaseTestCase): def testTrue(self): assert encoder.encode(univ.Boolean(1)) == ints2octs((1, 1, 1)) @@ -65,5 +70,5 @@ assert encoder.encode(univ.Boolean(0)) == ints2octs((1, 1, 0)) -class BitStringEncoderTestCase(unittest.TestCase): +class BitStringEncoderTestCase(BaseTestCase): def setUp(self): @@ -69,4 +74,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.b = univ.BitString((1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1)) def testDefMode(self): @@ -91,5 +97,5 @@ assert encoder.encode(univ.BitString([])) == ints2octs((3, 1, 0)) -class OctetStringEncoderTestCase(unittest.TestCase): +class OctetStringEncoderTestCase(BaseTestCase): def setUp(self): @@ -95,4 +101,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.o = univ.OctetString('Quick brown fox') def testDefMode(self): @@ -117,5 +124,5 @@ 32, 4, 3, 102, 111, 120, 0, 0)) -class ExpTaggedOctetStringEncoderTestCase(unittest.TestCase): +class ExpTaggedOctetStringEncoderTestCase(BaseTestCase): def setUp(self): @@ -121,4 +128,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.o = univ.OctetString().subtype( value='Quick brown fox', explicitTag=tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 5) @@ -145,8 +153,8 @@ ) == ints2octs((101, 128, 36, 128, 4, 4, 81, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 4, 111, 119, 110, 32, 4, 3, 102, 111, 120, 0, 0, 0, 0)) -class NullEncoderTestCase(unittest.TestCase): +class NullEncoderTestCase(BaseTestCase): def testNull(self): assert encoder.encode(univ.Null('')) == ints2octs((5, 0)) @@ -149,8 +157,8 @@ def testNull(self): assert encoder.encode(univ.Null('')) == ints2octs((5, 0)) -class ObjectIdentifierEncoderTestCase(unittest.TestCase): +class ObjectIdentifierEncoderTestCase(BaseTestCase): def testOne(self): assert encoder.encode( univ.ObjectIdentifier((1, 3, 6, 0, 0xffffe)) @@ -258,7 +266,7 @@ 0xB8, 0xCB, 0xE2, 0xB6, 0x47)) -class RealEncoderTestCase(unittest.TestCase): +class RealEncoderTestCase(BaseTestCase): def testChar(self): assert encoder.encode( univ.Real((123, 10, 11)) @@ -322,6 +330,6 @@ assert encoder.encode(univ.Real(0)) == ints2octs((9, 0)) -if version_info[0:2] > (2, 5): - class UniversalStringEncoderTestCase(unittest.TestCase): +if sys.version_info[0:2] > (2, 5): + class UniversalStringEncoderTestCase(BaseTestCase): def testEncoding(self): @@ -327,5 +335,5 @@ def testEncoding(self): - assert encoder.encode(char.UniversalString(version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( + assert encoder.encode(char.UniversalString(sys.version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( (28, 12, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99)), 'Incorrect encoding' @@ -329,5 +337,5 @@ (28, 12, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99)), 'Incorrect encoding' -class BMPStringEncoderTestCase(unittest.TestCase): +class BMPStringEncoderTestCase(BaseTestCase): def testEncoding(self): @@ -333,5 +341,5 @@ def testEncoding(self): - assert encoder.encode(char.BMPString(version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( + assert encoder.encode(char.BMPString(sys.version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( (30, 6, 0, 97, 0, 98, 0, 99)), 'Incorrect encoding' @@ -335,5 +343,5 @@ (30, 6, 0, 97, 0, 98, 0, 99)), 'Incorrect encoding' -class UTF8StringEncoderTestCase(unittest.TestCase): +class UTF8StringEncoderTestCase(BaseTestCase): def testEncoding(self): @@ -339,5 +347,5 @@ def testEncoding(self): - assert encoder.encode(char.UTF8String(version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( + assert encoder.encode(char.UTF8String(sys.version_info[0] == 3 and 'abc' or unicode('abc'))) == ints2octs( (12, 3, 97, 98, 99)), 'Incorrect encoding' @@ -341,7 +349,7 @@ (12, 3, 97, 98, 99)), 'Incorrect encoding' -class SequenceOfEncoderTestCase(unittest.TestCase): +class SequenceOfEncoderTestCase(BaseTestCase): def testEmpty(self): s = univ.SequenceOf() assert encoder.encode(s) == ints2octs((48, 0)) @@ -373,5 +381,5 @@ ) == ints2octs((48, 128, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 0, 0)) -class SequenceOfEncoderWithSchemaTestCase(unittest.TestCase): +class SequenceOfEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -377,4 +385,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SequenceOf(componentType=univ.OctetString()) def __init(self): @@ -404,7 +413,7 @@ ) == ints2octs((48, 128, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 0, 0)) -class SetOfEncoderTestCase(unittest.TestCase): +class SetOfEncoderTestCase(BaseTestCase): def testEmpty(self): s = univ.SetOf() assert encoder.encode(s) == ints2octs((49, 0)) @@ -436,5 +445,5 @@ ) == ints2octs((49, 128, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 0, 0)) -class SetOfEncoderWithSchemaTestCase(unittest.TestCase): +class SetOfEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -440,4 +449,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SetOf(componentType=univ.OctetString()) def __init(self): @@ -467,5 +477,5 @@ ) == ints2octs((49, 128, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 0, 0)) -class SequenceEncoderTestCase(unittest.TestCase): +class SequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -471,4 +481,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence() self.s.setComponentByPosition(0, univ.Null('')) self.s.setComponentByPosition(1, univ.OctetString('quick brown')) @@ -493,5 +504,5 @@ ) == ints2octs((48, 128, 5, 0, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)) -class SequenceEncoderWithSchemaTestCase(unittest.TestCase): +class SequenceEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -497,4 +508,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null()), @@ -617,5 +629,5 @@ 0, 2, 1, 1, 0, 0)) -class ExpTaggedSequenceEncoderTestCase(unittest.TestCase): +class ExpTaggedSequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -621,4 +633,5 @@ def setUp(self): + BaseTestCase.setUp(self) s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('number', univ.Integer()), @@ -642,5 +655,5 @@ ) == ints2octs((101, 128, 48, 128, 2, 1, 12, 0, 0, 0, 0)) -class SetEncoderTestCase(unittest.TestCase): +class SetEncoderTestCase(BaseTestCase): def setUp(self): @@ -646,4 +659,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set() self.s.setComponentByPosition(0, univ.Null('')) self.s.setComponentByPosition(1, univ.OctetString('quick brown')) @@ -668,5 +682,5 @@ ) == ints2octs((49, 128, 5, 0, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)) -class SetEncoderWithSchemaTestCase(unittest.TestCase): +class SetEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -672,4 +686,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null()), @@ -791,7 +806,7 @@ ) == ints2octs((49, 128, 5, 0, 36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0, 2, 1, 1, 0, 0)) -class ChoiceEncoderTestCase(unittest.TestCase): +class ChoiceEncoderTestCase(BaseTestCase): def testEmpty(self): s = univ.Choice() @@ -834,5 +849,5 @@ ) == ints2octs((36, 128, 4, 4, 113, 117, 105, 99, 4, 4, 107, 32, 98, 114, 4, 3, 111, 119, 110, 0, 0)) -class ChoiceEncoderWithSchemaTestCase(unittest.TestCase): +class ChoiceEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -838,4 +853,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Choice( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null('')), @@ -877,5 +893,5 @@ (164, 128, 36, 128, 4, 3, 97, 98, 99, 4, 3, 100, 101, 102, 4, 2, 103, 104, 0, 0, 0, 0)) -class AnyEncoderTestCase(unittest.TestCase): +class AnyEncoderTestCase(BaseTestCase): def setUp(self): @@ -881,4 +897,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Any(encoder.encode(univ.OctetString('fox'))) def testUntagged(self): diff --git a/tests/codec/cer/test_decoder.py b/tests/codec/cer/test_decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvY2VyL3Rlc3RfZGVjb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvY2VyL3Rlc3RfZGVjb2Rlci5weQ== 100644 --- a/tests/codec/cer/test_decoder.py +++ b/tests/codec/cer/test_decoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,10 +9,12 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.codec.cer import decoder from pyasn1.compat.octets import ints2octs, str2octs, null from pyasn1.error import PyAsn1Error @@ -13,9 +16,9 @@ from pyasn1.codec.cer import decoder from pyasn1.compat.octets import ints2octs, str2octs, null from pyasn1.error import PyAsn1Error -class BooleanDecoderTestCase(unittest.TestCase): +class BooleanDecoderTestCase(BaseTestCase): def testTrue(self): assert decoder.decode(ints2octs((1, 1, 255))) == (1, null) @@ -34,7 +37,7 @@ except PyAsn1Error: pass -class BitStringDecoderTestCase(unittest.TestCase): +class BitStringDecoderTestCase(BaseTestCase): def testShortMode(self): assert decoder.decode( ints2octs((3, 3, 6, 170, 128)) @@ -48,7 +51,7 @@ # TODO: test failures on short chunked and long unchunked substrate samples -class OctetStringDecoderTestCase(unittest.TestCase): +class OctetStringDecoderTestCase(BaseTestCase): def testShortMode(self): assert decoder.decode( ints2octs((4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)), diff --git a/tests/codec/cer/test_encoder.py b/tests/codec/cer/test_encoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvY2VyL3Rlc3RfZW5jb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvY2VyL3Rlc3RfZW5jb2Rlci5weQ== 100644 --- a/tests/codec/cer/test_encoder.py +++ b/tests/codec/cer/test_encoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,11 +9,13 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import namedtype, univ, useful from pyasn1.codec.cer import encoder from pyasn1.compat.octets import ints2octs from pyasn1.error import PyAsn1Error @@ -13,10 +16,10 @@ from pyasn1.type import namedtype, univ, useful from pyasn1.codec.cer import encoder from pyasn1.compat.octets import ints2octs from pyasn1.error import PyAsn1Error -class BooleanEncoderTestCase(unittest.TestCase): +class BooleanEncoderTestCase(BaseTestCase): def testTrue(self): assert encoder.encode(univ.Boolean(1)) == ints2octs((1, 1, 255)) @@ -24,7 +27,7 @@ assert encoder.encode(univ.Boolean(0)) == ints2octs((1, 1, 0)) -class BitStringEncoderTestCase(unittest.TestCase): +class BitStringEncoderTestCase(BaseTestCase): def testShortMode(self): assert encoder.encode( univ.BitString((1, 0) * 5) @@ -34,7 +37,7 @@ assert encoder.encode(univ.BitString((1, 0) * 501)) == ints2octs((3, 127, 6) + (170,) * 125 + (128,)) -class OctetStringEncoderTestCase(unittest.TestCase): +class OctetStringEncoderTestCase(BaseTestCase): def testShortMode(self): assert encoder.encode( univ.OctetString('Quick brown fox') @@ -46,7 +49,7 @@ ) == ints2octs((36, 128, 4, 130, 3, 232) + (81,) * 1000 + (4, 1, 81, 0, 0)) -class GeneralizedTimeEncoderTestCase(unittest.TestCase): +class GeneralizedTimeEncoderTestCase(BaseTestCase): # def testExtraZeroInSeconds(self): # try: # assert encoder.encode( @@ -104,7 +107,7 @@ ) == ints2octs((24, 13, 50, 48, 49, 55, 48, 56, 48, 49, 49, 50, 48, 49, 90)) -class UTCTimeEncoderTestCase(unittest.TestCase): +class UTCTimeEncoderTestCase(BaseTestCase): def testFractionOfSecond(self): try: assert encoder.encode( @@ -146,7 +149,7 @@ ) == ints2octs((23, 11, 57, 57, 48, 56, 48, 49, 49, 50, 48, 49, 90)) -class SequenceOfEncoderTestCase(unittest.TestCase): +class SequenceOfEncoderTestCase(BaseTestCase): def testEmpty(self): s = univ.SequenceOf() assert encoder.encode(s) == ints2octs((48, 128, 0, 0)) @@ -176,5 +179,5 @@ assert encoder.encode(s) == ints2octs((48, 128, 4, 1, 97, 4, 1, 98, 0, 0)) -class SequenceOfEncoderWithSchemaTestCase(unittest.TestCase): +class SequenceOfEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -180,4 +183,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SequenceOf(componentType=univ.OctetString()) def testEmpty(self): @@ -209,7 +213,7 @@ assert encoder.encode(self.s) == ints2octs((48, 128, 4, 1, 97, 4, 1, 98, 0, 0)) -class SetOfEncoderTestCase(unittest.TestCase): +class SetOfEncoderTestCase(BaseTestCase): def testEmpty(self): s = univ.SetOf() assert encoder.encode(s) == ints2octs((49, 128, 0, 0)) @@ -239,5 +243,5 @@ assert encoder.encode(s) == ints2octs((49, 128, 4, 1, 97, 4, 1, 98, 0, 0)) -class SetOfEncoderWithSchemaTestCase(unittest.TestCase): +class SetOfEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -243,4 +247,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.SetOf(componentType=univ.OctetString()) def testEmpty(self): @@ -276,5 +281,5 @@ assert encoder.encode(self.s) == ints2octs((49, 128, 4, 1, 97, 4, 1, 98, 0, 0)) -class SetEncoderTestCase(unittest.TestCase): +class SetEncoderTestCase(BaseTestCase): def setUp(self): @@ -280,4 +285,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set() self.s.setComponentByPosition(0, univ.Null('')) self.s.setComponentByPosition(1, univ.OctetString('quick brown')) @@ -302,5 +308,5 @@ ) == ints2octs((49, 128, 2, 1, 1, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 5, 0, 0, 0)) -class SetEncoderWithSchemaTestCase(unittest.TestCase): +class SetEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -306,4 +312,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set(componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null('')), namedtype.OptionalNamedType('first-name', univ.OctetString()), @@ -353,5 +360,5 @@ ) == ints2octs((49, 128, 2, 1, 1, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 5, 0, 0, 0)) -class SetWithChoiceWithSchemaEncoderTestCase(unittest.TestCase): +class SetWithChoiceWithSchemaEncoderTestCase(BaseTestCase): def setUp(self): @@ -357,4 +364,5 @@ def setUp(self): + BaseTestCase.setUp(self) c = univ.Choice(componentType=namedtype.NamedTypes( namedtype.NamedType('actual', univ.Boolean(0)) )) @@ -370,5 +378,5 @@ assert encoder.encode(self.s) == ints2octs((49, 128, 1, 1, 255, 5, 0, 0, 0)) -class SetEncoderTestCase(unittest.TestCase): +class SetEncoderTestCase(BaseTestCase): def setUp(self): @@ -374,4 +382,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Set() self.s.setComponentByPosition(0, univ.Null('')) self.s.setComponentByPosition(1, univ.OctetString('quick brown')) @@ -396,5 +405,5 @@ ) == ints2octs((49, 128, 2, 1, 1, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 5, 0, 0, 0)) -class SequenceEncoderTestCase(unittest.TestCase): +class SequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -400,4 +409,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence() self.s.setComponentByPosition(0, univ.Null('')) self.s.setComponentByPosition(1, univ.OctetString('quick brown')) @@ -422,5 +432,5 @@ ) == ints2octs((48, 128, 5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1, 0, 0)) -class SequenceEncoderWithSchemaTestCase(unittest.TestCase): +class SequenceEncoderWithSchemaTestCase(BaseTestCase): def setUp(self): @@ -426,4 +436,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null('')), @@ -475,5 +486,5 @@ ) == ints2octs((48, 128, 5, 0, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 2, 1, 1, 0, 0)) -class NestedOptionalSequenceEncoderTestCase(unittest.TestCase): +class NestedOptionalSequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -479,4 +490,5 @@ def setUp(self): + BaseTestCase.setUp(self) inner = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.OptionalNamedType('first-name', univ.OctetString()), @@ -564,5 +576,5 @@ assert encoder.encode(s) == ints2octs((48, 128, 48, 128, 2, 1, 123, 0, 0, 0, 0)) -class NestedOptionalChoiceEncoderTestCase(unittest.TestCase): +class NestedOptionalChoiceEncoderTestCase(BaseTestCase): def setUp(self): @@ -568,4 +580,5 @@ def setUp(self): + BaseTestCase.setUp(self) layer3 = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.OptionalNamedType('first-name', univ.OctetString()), @@ -625,5 +638,5 @@ assert encoder.encode(s) == ints2octs((48, 128, 0, 0)) -class NestedOptionalSequenceOfEncoderTestCase(unittest.TestCase): +class NestedOptionalSequenceOfEncoderTestCase(BaseTestCase): def setUp(self): @@ -629,4 +642,5 @@ def setUp(self): + BaseTestCase.setUp(self) layer2 = univ.SequenceOf( componentType=univ.OctetString() ) diff --git a/tests/codec/der/test_decoder.py b/tests/codec/der/test_decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvZGVyL3Rlc3RfZGVjb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvZGVyL3Rlc3RfZGVjb2Rlci5weQ== 100644 --- a/tests/codec/der/test_decoder.py +++ b/tests/codec/der/test_decoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,10 +9,12 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.codec.der import decoder from pyasn1.compat.octets import ints2octs, null from pyasn1.error import PyAsn1Error @@ -13,9 +16,9 @@ from pyasn1.codec.der import decoder from pyasn1.compat.octets import ints2octs, null from pyasn1.error import PyAsn1Error -class BitStringDecoderTestCase(unittest.TestCase): +class BitStringDecoderTestCase(BaseTestCase): def testShortMode(self): assert decoder.decode( ints2octs((3, 127, 6) + (170,) * 125 + (128,)) @@ -42,7 +45,7 @@ assert 0, 'chunked encoding tolerated' -class OctetStringDecoderTestCase(unittest.TestCase): +class OctetStringDecoderTestCase(BaseTestCase): def testShortMode(self): assert decoder.decode( '\004\017Quick brown fox'.encode() diff --git a/tests/codec/der/test_encoder.py b/tests/codec/der/test_encoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvZGVyL3Rlc3RfZW5jb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvZGVyL3Rlc3RfZW5jb2Rlci5weQ== 100644 --- a/tests/codec/der/test_encoder.py +++ b/tests/codec/der/test_encoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,8 +9,10 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import namedtype, univ from pyasn1.codec.der import encoder from pyasn1.compat.octets import ints2octs @@ -13,6 +16,5 @@ from pyasn1.type import namedtype, univ from pyasn1.codec.der import encoder from pyasn1.compat.octets import ints2octs -from pyasn1.error import PyAsn1Error @@ -17,6 +19,6 @@ -class OctetStringEncoderTestCase(unittest.TestCase): +class OctetStringEncoderTestCase(BaseTestCase): def testDefModeShort(self): assert encoder.encode( univ.OctetString('Quick brown fox') @@ -28,7 +30,7 @@ ) == ints2octs((4, 130, 39, 16) + (81,) * 10000) -class BitStringEncoderTestCase(unittest.TestCase): +class BitStringEncoderTestCase(BaseTestCase): def testDefModeShort(self): assert encoder.encode( univ.BitString((1,)) @@ -40,5 +42,5 @@ ) == ints2octs((3, 130, 39, 17, 0) + (255,) * 10000) -class SetOfEncoderTestCase(unittest.TestCase): +class SetOfEncoderTestCase(BaseTestCase): def setUp(self): @@ -44,4 +46,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.SetOf(componentType=univ.OctetString()) def testDefMode1(self): @@ -72,5 +76,5 @@ assert encoder.encode(self.s) == ints2octs((49, 6, 4, 1, 97, 4, 1, 98)) -class SetWithChoiceEncoderTestCase(unittest.TestCase): +class SetWithChoiceEncoderTestCase(BaseTestCase): def setUp(self): @@ -76,5 +80,7 @@ def setUp(self): + BaseTestCase.setUp(self) + c = univ.Choice(componentType=namedtype.NamedTypes( namedtype.NamedType('name', univ.OctetString()), namedtype.NamedType('amount', univ.Boolean())) ) @@ -77,7 +83,8 @@ c = univ.Choice(componentType=namedtype.NamedTypes( namedtype.NamedType('name', univ.OctetString()), namedtype.NamedType('amount', univ.Boolean())) ) + self.s = univ.Set(componentType=namedtype.NamedTypes( namedtype.NamedType('value', univ.Integer(5)), namedtype.NamedType('status', c)) @@ -94,5 +101,5 @@ assert encoder.encode(self.s) == ints2octs((49, 6, 1, 1, 255, 2, 1, 5)) -class NestedOptionalSequenceEncoderTestCase(unittest.TestCase): +class NestedOptionalSequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -98,4 +105,6 @@ def setUp(self): + BaseTestCase.setUp(self) + inner = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.OptionalNamedType('first-name', univ.OctetString()), @@ -183,5 +192,5 @@ assert encoder.encode(s) == ints2octs((48, 5, 48, 3, 2, 1, 123)) -class NestedOptionalChoiceEncoderTestCase(unittest.TestCase): +class NestedOptionalChoiceEncoderTestCase(BaseTestCase): def setUp(self): @@ -187,4 +196,6 @@ def setUp(self): + BaseTestCase.setUp(self) + layer3 = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.OptionalNamedType('first-name', univ.OctetString()), @@ -244,5 +255,5 @@ assert encoder.encode(s) == ints2octs((48, 0)) -class NestedOptionalSequenceOfEncoderTestCase(unittest.TestCase): +class NestedOptionalSequenceOfEncoderTestCase(BaseTestCase): def setUp(self): @@ -248,4 +259,6 @@ def setUp(self): + BaseTestCase.setUp(self) + layer2 = univ.SequenceOf( componentType=univ.OctetString() ) diff --git a/tests/codec/native/test_decoder.py b/tests/codec/native/test_decoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvbmF0aXZlL3Rlc3RfZGVjb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvbmF0aXZlL3Rlc3RfZGVjb2Rlci5weQ== 100644 --- a/tests/codec/native/test_decoder.py +++ b/tests/codec/native/test_decoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,10 +9,12 @@ try: import unittest2 as unittest except ImportError: import unittest -from pyasn1.type import tag, namedtype, univ, char +from tests.base import BaseTestCase + +from pyasn1.type import namedtype, univ from pyasn1.codec.native import decoder from pyasn1.error import PyAsn1Error @@ -14,8 +17,8 @@ from pyasn1.codec.native import decoder from pyasn1.error import PyAsn1Error -class BadAsn1SpecTestCase(unittest.TestCase): +class BadAsn1SpecTestCase(BaseTestCase): def testBadSpec(self): try: decoder.decode('', asn1Spec='not an Asn1Item') @@ -25,7 +28,7 @@ assert 0, 'Invalid asn1Spec accepted' -class IntegerDecoderTestCase(unittest.TestCase): +class IntegerDecoderTestCase(BaseTestCase): def testPosInt(self): assert decoder.decode(12, asn1Spec=univ.Integer()) == univ.Integer(12) @@ -33,7 +36,7 @@ assert decoder.decode(-12, asn1Spec=univ.Integer()) == univ.Integer(-12) -class BooleanDecoderTestCase(unittest.TestCase): +class BooleanDecoderTestCase(BaseTestCase): def testTrue(self): assert decoder.decode(True, asn1Spec=univ.Boolean()) == univ.Boolean(True) @@ -41,8 +44,8 @@ assert decoder.decode(False, asn1Spec=univ.Boolean()) == univ.Boolean(False) -class BitStringDecoderTestCase(unittest.TestCase): +class BitStringDecoderTestCase(BaseTestCase): def testSimple(self): assert decoder.decode('11111111', asn1Spec=univ.BitString()) == univ.BitString(hexValue='ff') @@ -45,9 +48,9 @@ def testSimple(self): assert decoder.decode('11111111', asn1Spec=univ.BitString()) == univ.BitString(hexValue='ff') -class OctetStringDecoderTestCase(unittest.TestCase): +class OctetStringDecoderTestCase(BaseTestCase): def testSimple(self): assert decoder.decode('Quick brown fox', asn1Spec=univ.OctetString()) == univ.OctetString('Quick brown fox') @@ -50,9 +53,9 @@ def testSimple(self): assert decoder.decode('Quick brown fox', asn1Spec=univ.OctetString()) == univ.OctetString('Quick brown fox') -class NullDecoderTestCase(unittest.TestCase): +class NullDecoderTestCase(BaseTestCase): def testNull(self): assert decoder.decode(None, asn1Spec=univ.Null()) == univ.Null() @@ -55,9 +58,9 @@ def testNull(self): assert decoder.decode(None, asn1Spec=univ.Null()) == univ.Null() -class ObjectIdentifierDecoderTestCase(unittest.TestCase): +class ObjectIdentifierDecoderTestCase(BaseTestCase): def testOne(self): assert decoder.decode('1.3.6.11', asn1Spec=univ.ObjectIdentifier()) == univ.ObjectIdentifier('1.3.6.11') @@ -60,9 +63,9 @@ def testOne(self): assert decoder.decode('1.3.6.11', asn1Spec=univ.ObjectIdentifier()) == univ.ObjectIdentifier('1.3.6.11') -class RealDecoderTestCase(unittest.TestCase): +class RealDecoderTestCase(BaseTestCase): def testSimple(self): assert decoder.decode(1.33, asn1Spec=univ.Real()) == univ.Real(1.33) @@ -65,6 +68,6 @@ def testSimple(self): assert decoder.decode(1.33, asn1Spec=univ.Real()) == univ.Real(1.33) -class SequenceDecoderTestCase(unittest.TestCase): +class SequenceDecoderTestCase(BaseTestCase): def setUp(self): @@ -70,4 +73,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.Sequence( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null()), @@ -84,5 +89,5 @@ assert decoder.decode({'place-holder': None, 'first-name': 'xx', 'age': 33}, asn1Spec=self.s) == s -class ChoiceDecoderTestCase(unittest.TestCase): +class ChoiceDecoderTestCase(BaseTestCase): def setUp(self): @@ -88,4 +93,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.Choice( componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null()), @@ -100,5 +107,5 @@ assert decoder.decode({'first-name': 'xx'}, asn1Spec=self.s) == s -class AnyDecoderTestCase(unittest.TestCase): +class AnyDecoderTestCase(BaseTestCase): def setUp(self): @@ -104,4 +111,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.Any() def testSimple(self): diff --git a/tests/codec/native/test_encoder.py b/tests/codec/native/test_encoder.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29kZWMvbmF0aXZlL3Rlc3RfZW5jb2Rlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29kZWMvbmF0aXZlL3Rlc3RfZW5jb2Rlci5weQ== 100644 --- a/tests/codec/native/test_encoder.py +++ b/tests/codec/native/test_encoder.py @@ -5,8 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,11 +9,13 @@ try: import unittest2 as unittest except ImportError: import unittest -from pyasn1.type import tag, namedtype, univ +from tests.base import BaseTestCase + +from pyasn1.type import namedtype, univ from pyasn1.codec.native import encoder from pyasn1.compat.octets import str2octs from pyasn1.error import PyAsn1Error @@ -14,9 +17,9 @@ from pyasn1.codec.native import encoder from pyasn1.compat.octets import str2octs from pyasn1.error import PyAsn1Error -class BadAsn1SpecTestCase(unittest.TestCase): +class BadAsn1SpecTestCase(BaseTestCase): def testBadValueType(self): try: encoder.encode('not an Asn1Item') @@ -20,5 +23,6 @@ def testBadValueType(self): try: encoder.encode('not an Asn1Item') + except PyAsn1Error: pass @@ -23,6 +27,7 @@ except PyAsn1Error: pass + else: assert 0, 'Invalid value type accepted' @@ -25,8 +30,8 @@ else: assert 0, 'Invalid value type accepted' -class IntegerEncoderTestCase(unittest.TestCase): +class IntegerEncoderTestCase(BaseTestCase): def testPosInt(self): assert encoder.encode(univ.Integer(12)) == 12 @@ -34,7 +39,7 @@ assert encoder.encode(univ.Integer(-12)) == -12 -class BooleanEncoderTestCase(unittest.TestCase): +class BooleanEncoderTestCase(BaseTestCase): def testTrue(self): assert encoder.encode(univ.Boolean(1)) is True @@ -42,5 +47,5 @@ assert encoder.encode(univ.Boolean(0)) is False -class BitStringEncoderTestCase(unittest.TestCase): +class BitStringEncoderTestCase(BaseTestCase): def setUp(self): @@ -46,7 +51,8 @@ def setUp(self): + BaseTestCase.setUp(self) self.b = univ.BitString((1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1)) def testValue(self): assert encoder.encode(self.b) == '101010011000101' @@ -47,8 +53,8 @@ self.b = univ.BitString((1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1)) def testValue(self): assert encoder.encode(self.b) == '101010011000101' -class OctetStringEncoderTestCase(unittest.TestCase): +class OctetStringEncoderTestCase(BaseTestCase): def setUp(self): @@ -54,7 +60,8 @@ def setUp(self): + BaseTestCase.setUp(self) self.o = univ.OctetString('Quick brown fox') def testValue(self): assert encoder.encode(self.o) == str2octs('Quick brown fox') @@ -55,11 +62,11 @@ self.o = univ.OctetString('Quick brown fox') def testValue(self): assert encoder.encode(self.o) == str2octs('Quick brown fox') -class NullEncoderTestCase(unittest.TestCase): +class NullEncoderTestCase(BaseTestCase): def testNull(self): assert encoder.encode(univ.Null('')) is None @@ -62,9 +69,9 @@ def testNull(self): assert encoder.encode(univ.Null('')) is None -class ObjectIdentifierEncoderTestCase(unittest.TestCase): +class ObjectIdentifierEncoderTestCase(BaseTestCase): def testOne(self): assert encoder.encode(univ.ObjectIdentifier((1, 3, 6, 0, 12345))) == '1.3.6.0.12345' @@ -67,8 +74,8 @@ def testOne(self): assert encoder.encode(univ.ObjectIdentifier((1, 3, 6, 0, 12345))) == '1.3.6.0.12345' -class RealEncoderTestCase(unittest.TestCase): +class RealEncoderTestCase(BaseTestCase): def testChar(self): assert encoder.encode(univ.Real((123, 10, 11))) == 1.23e+13 @@ -79,5 +86,5 @@ assert encoder.encode(univ.Real('-inf')) == float('-inf') -class SequenceEncoderTestCase(unittest.TestCase): +class SequenceEncoderTestCase(BaseTestCase): def setUp(self): @@ -83,4 +90,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.s = univ.Sequence(componentType=namedtype.NamedTypes( namedtype.NamedType('place-holder', univ.Null('')), namedtype.OptionalNamedType('first-name', univ.OctetString('')), @@ -95,5 +104,5 @@ assert encoder.encode(s) == {'place-holder': None, 'first-name': str2octs('abc'), 'age': 123} -class ChoiceEncoderTestCase(unittest.TestCase): +class ChoiceEncoderTestCase(BaseTestCase): def setUp(self): @@ -99,9 +108,13 @@ def setUp(self): - self.s = univ.Choice(componentType=namedtype.NamedTypes( - namedtype.NamedType('place-holder', univ.Null('')), - namedtype.NamedType('number', univ.Integer(0)), - namedtype.NamedType('string', univ.OctetString()) - )) + BaseTestCase.setUp(self) + + self.s = univ.Choice( + componentType=namedtype.NamedTypes( + namedtype.NamedType('place-holder', univ.Null('')), + namedtype.NamedType('number', univ.Integer(0)), + namedtype.NamedType('string', univ.OctetString()) + ) + ) def testEmpty(self): try: @@ -116,5 +129,5 @@ assert encoder.encode(self.s) == {'place-holder': None} -class AnyEncoderTestCase(unittest.TestCase): +class AnyEncoderTestCase(BaseTestCase): def setUp(self): @@ -120,4 +133,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s = univ.Any(encoder.encode(univ.OctetString('fox'))) def testSimple(self): diff --git a/tests/compat/test_binary.py b/tests/compat/test_binary.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29tcGF0L3Rlc3RfYmluYXJ5LnB5..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29tcGF0L3Rlc3RfYmluYXJ5LnB5 100644 --- a/tests/compat/test_binary.py +++ b/tests/compat/test_binary.py @@ -5,10 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys -from pyasn1.compat import binary try: import unittest2 as unittest except ImportError: import unittest @@ -9,7 +8,8 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase @@ -15,5 +15,8 @@ -class BinaryTestCase(unittest.TestCase): +from pyasn1.compat import binary + + +class BinaryTestCase(BaseTestCase): def test_bin_zero(self): assert '0b0' == binary.bin(0) diff --git a/tests/compat/test_integer.py b/tests/compat/test_integer.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29tcGF0L3Rlc3RfaW50ZWdlci5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29tcGF0L3Rlc3RfaW50ZWdlci5weQ== 100644 --- a/tests/compat/test_integer.py +++ b/tests/compat/test_integer.py @@ -5,10 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys -from pyasn1.compat import integer try: import unittest2 as unittest except ImportError: import unittest @@ -9,7 +8,8 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase @@ -15,5 +15,8 @@ -class IntegerTestCase(unittest.TestCase): +from pyasn1.compat import integer + + +class IntegerTestCase(BaseTestCase): if sys.version_info[0] > 2: diff --git a/tests/compat/test_octets.py b/tests/compat/test_octets.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvY29tcGF0L3Rlc3Rfb2N0ZXRzLnB5..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvY29tcGF0L3Rlc3Rfb2N0ZXRzLnB5 100644 --- a/tests/compat/test_octets.py +++ b/tests/compat/test_octets.py @@ -5,10 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys -from pyasn1.compat import octets try: import unittest2 as unittest except ImportError: import unittest @@ -9,7 +8,8 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase @@ -15,5 +15,8 @@ -class OctetsTestCase(unittest.TestCase): +from pyasn1.compat import octets + + +class OctetsTestCase(BaseTestCase): if sys.version_info[0] > 2: diff --git a/tests/test_debug.py b/tests/test_debug.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdGVzdF9kZWJ1Zy5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdGVzdF9kZWJ1Zy5weQ== 100644 --- a/tests/test_debug.py +++ b/tests/test_debug.py @@ -5,5 +5,6 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest @@ -8,5 +9,6 @@ try: import unittest2 as unittest + except ImportError: import unittest @@ -10,6 +12,8 @@ except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1 import debug from pyasn1 import error @@ -13,5 +17,5 @@ from pyasn1 import debug from pyasn1 import error -class DebugCaseBase(unittest.TestCase): +class DebugCaseBase(BaseTestCase): def testKnownFlags(self): @@ -17,4 +21,5 @@ def testKnownFlags(self): + debug.setLogger(0) debug.setLogger(debug.Debug('all', 'encoder', 'decoder')) debug.setLogger(0) diff --git a/tests/type/test_char.py b/tests/type/test_char.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X2NoYXIucHk=..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X2NoYXIucHk= 100644 --- a/tests/type/test_char.py +++ b/tests/type/test_char.py @@ -5,12 +5,9 @@ # License: http://pyasn1.sf.net/license.html # import sys -from pyasn1.type import char, univ, constraint -from pyasn1.compat.octets import ints2octs -from pyasn1.error import PyAsn1Error try: import unittest2 as unittest except ImportError: import unittest @@ -11,7 +8,8 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase @@ -17,8 +15,13 @@ -class AbstractStringTestCase: +from pyasn1.type import char, univ, constraint +from pyasn1.compat.octets import ints2octs +from pyasn1.error import PyAsn1Error + + +class AbstractStringTestCase(object): initializer = () encoding = 'us-ascii' asn1Type = None def setUp(self): @@ -19,9 +22,11 @@ initializer = () encoding = 'us-ascii' asn1Type = None def setUp(self): + BaseTestCase.setUp(self) + self.asn1String = self.asn1Type(ints2octs(self.initializer), encoding=self.encoding) self.pythonString = ints2octs(self.initializer).decode(self.encoding) @@ -107,10 +112,10 @@ assert list(reversed(self.asn1String)) == list(reversed(self.pythonString)) -class VisibleStringTestCase(AbstractStringTestCase, unittest.TestCase): +class VisibleStringTestCase(AbstractStringTestCase, BaseTestCase): initializer = (97, 102) encoding = 'us-ascii' asn1Type = char.VisibleString @@ -111,13 +116,13 @@ initializer = (97, 102) encoding = 'us-ascii' asn1Type = char.VisibleString -class GeneralStringTestCase(AbstractStringTestCase, unittest.TestCase): +class GeneralStringTestCase(AbstractStringTestCase, BaseTestCase): initializer = (169, 174) encoding = 'iso-8859-1' asn1Type = char.GeneralString @@ -118,13 +123,13 @@ initializer = (169, 174) encoding = 'iso-8859-1' asn1Type = char.GeneralString -class UTF8StringTestCase(AbstractStringTestCase, unittest.TestCase): +class UTF8StringTestCase(AbstractStringTestCase, BaseTestCase): initializer = (209, 132, 208, 176) encoding = 'utf-8' asn1Type = char.UTF8String @@ -125,10 +130,10 @@ initializer = (209, 132, 208, 176) encoding = 'utf-8' asn1Type = char.UTF8String -class BMPStringTestCase(AbstractStringTestCase, unittest.TestCase): +class BMPStringTestCase(AbstractStringTestCase, BaseTestCase): initializer = (4, 48, 4, 68) encoding = 'utf-16-be' @@ -139,7 +144,7 @@ # Somehow comparison of UTF-32 encoded strings does not work in Py2 - class UniversalStringTestCase(AbstractStringTestCase, unittest.TestCase): + class UniversalStringTestCase(AbstractStringTestCase, BaseTestCase): initializer = (0, 0, 4, 48, 0, 0, 4, 68) encoding = 'utf-32-be' asn1Type = char.UniversalString diff --git a/tests/type/test_constraint.py b/tests/type/test_constraint.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X2NvbnN0cmFpbnQucHk=..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X2NvbnN0cmFpbnQucHk= 100644 --- a/tests/type/test_constraint.py +++ b/tests/type/test_constraint.py @@ -5,9 +5,10 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,9 +9,11 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import constraint, error @@ -14,5 +17,5 @@ from pyasn1.type import constraint, error -class SingleValueConstraintTestCase(unittest.TestCase): +class SingleValueConstraintTestCase(BaseTestCase): def setUp(self): @@ -18,4 +21,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.SingleValueConstraint(1, 2) self.c2 = constraint.SingleValueConstraint(3, 4) @@ -28,6 +32,7 @@ def testGoodVal(self): try: self.c1(1) + except error.ValueConstraintError: assert 0, 'constraint check fails' @@ -40,5 +45,5 @@ assert 0, 'constraint check fails' -class ContainedSubtypeConstraintTestCase(unittest.TestCase): +class ContainedSubtypeConstraintTestCase(BaseTestCase): def setUp(self): @@ -44,4 +49,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ContainedSubtypeConstraint( constraint.SingleValueConstraint(12) ) @@ -61,5 +67,5 @@ assert 0, 'constraint check fails' -class ValueRangeConstraintTestCase(unittest.TestCase): +class ValueRangeConstraintTestCase(BaseTestCase): def setUp(self): @@ -65,4 +71,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ValueRangeConstraint(1, 4) def testGoodVal(self): @@ -80,5 +87,5 @@ assert 0, 'constraint check fails' -class ValueSizeConstraintTestCase(unittest.TestCase): +class ValueSizeConstraintTestCase(BaseTestCase): def setUp(self): @@ -84,4 +91,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ValueSizeConstraint(1, 2) def testGoodVal(self): @@ -119,5 +127,5 @@ assert 0, 'constraint check fails' -class ConstraintsIntersectionTestCase(unittest.TestCase): +class ConstraintsIntersectionTestCase(BaseTestCase): def setUp(self): @@ -123,4 +131,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ConstraintsIntersection( constraint.SingleValueConstraint(4), constraint.ValueRangeConstraint(2, 4) @@ -161,7 +170,7 @@ assert 0, 'constraint check fails' -class InnerTypeConstraintTestCase(unittest.TestCase): +class InnerTypeConstraintTestCase(BaseTestCase): def testConst1(self): c = constraint.InnerTypeConstraint( constraint.SingleValueConstraint(4) @@ -203,5 +212,5 @@ # Constraints compositions -class ConstraintsIntersectionRangeTestCase(unittest.TestCase): +class ConstraintsIntersectionRangeTestCase(BaseTestCase): def setUp(self): @@ -207,4 +216,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ConstraintsIntersection( constraint.ValueRangeConstraint(1, 9), constraint.ValueRangeConstraint(2, 5) @@ -225,5 +235,5 @@ assert 0, 'constraint check fails' -class ConstraintsUnionTestCase(unittest.TestCase): +class ConstraintsUnionTestCase(BaseTestCase): def setUp(self): @@ -229,4 +239,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ConstraintsUnion( constraint.SingleValueConstraint(5), constraint.ValueRangeConstraint(1, 3) @@ -248,5 +259,5 @@ assert 0, 'constraint check fails' -class ConstraintsExclusionTestCase(unittest.TestCase): +class ConstraintsExclusionTestCase(BaseTestCase): def setUp(self): @@ -252,4 +263,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.c1 = constraint.ConstraintsExclusion( constraint.ValueRangeConstraint(2, 4) ) @@ -271,5 +283,5 @@ # Constraints derivations -class DirectDerivationTestCase(unittest.TestCase): +class DirectDerivationTestCase(BaseTestCase): def setUp(self): @@ -275,2 +287,4 @@ def setUp(self): + BaseTestCase.setUp(self) + self.c1 = constraint.SingleValueConstraint(5) @@ -276,4 +290,5 @@ self.c1 = constraint.SingleValueConstraint(5) + self.c2 = constraint.ConstraintsUnion( self.c1, constraint.ValueRangeConstraint(1, 3) ) @@ -287,5 +302,5 @@ assert self.c2.isSubTypeOf(self.c1), 'isSubTypeOf failed' -class IndirectDerivationTestCase(unittest.TestCase): +class IndirectDerivationTestCase(BaseTestCase): def setUp(self): @@ -291,4 +306,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.c1 = constraint.ConstraintsIntersection( constraint.ValueRangeConstraint(1, 30) ) @@ -292,6 +309,7 @@ self.c1 = constraint.ConstraintsIntersection( constraint.ValueRangeConstraint(1, 30) ) + self.c2 = constraint.ConstraintsIntersection( self.c1, constraint.ValueRangeConstraint(1, 20) ) @@ -295,6 +313,7 @@ self.c2 = constraint.ConstraintsIntersection( self.c1, constraint.ValueRangeConstraint(1, 20) ) + self.c2 = constraint.ConstraintsIntersection( self.c2, constraint.ValueRangeConstraint(1, 10) ) @@ -307,7 +326,7 @@ assert not self.c2.isSuperTypeOf(self.c1), 'isSuperTypeOf failed' assert self.c2.isSubTypeOf(self.c1), 'isSubTypeOf failed' -# TODO: how to apply size constriants to constructed types? +# TODO: how to apply size constraints to constructed types? suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) diff --git a/tests/type/test_namedtype.py b/tests/type/test_namedtype.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X25hbWVkdHlwZS5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X25hbWVkdHlwZS5weQ== 100644 --- a/tests/type/test_namedtype.py +++ b/tests/type/test_namedtype.py @@ -5,5 +5,6 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest @@ -8,5 +9,6 @@ try: import unittest2 as unittest + except ImportError: import unittest @@ -10,7 +12,9 @@ except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import namedtype, univ from pyasn1.error import PyAsn1Error @@ -13,6 +17,6 @@ from pyasn1.type import namedtype, univ from pyasn1.error import PyAsn1Error -class NamedTypeCaseBase(unittest.TestCase): +class NamedTypeCaseBase(BaseTestCase): def setUp(self): @@ -18,4 +22,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.e = namedtype.NamedType('age', univ.Integer(0)) def testIter(self): @@ -26,5 +31,5 @@ assert eval(repr(self.e), {'NamedType': namedtype.NamedType, 'Integer': univ.Integer}) == self.e, 'repr() fails' -class NamedTypesCaseBase(unittest.TestCase): +class NamedTypesCaseBase(BaseTestCase): def setUp(self): @@ -30,4 +35,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.e = namedtype.NamedTypes( namedtype.NamedType('first-name', univ.OctetString('')), namedtype.OptionalNamedType('age', univ.Integer(0)), @@ -35,9 +42,15 @@ ) def testRepr(self): - assert eval(repr(self.e), {'NamedTypes': namedtype.NamedTypes, 'NamedType': namedtype.NamedType, - 'OptionalNamedType': namedtype.OptionalNamedType, 'Integer': univ.Integer, - 'OctetString': univ.OctetString}) == self.e, 'repr() fails' + assert eval( + repr(self.e), { + 'NamedTypes': namedtype.NamedTypes, + 'NamedType': namedtype.NamedType, + 'OptionalNamedType': namedtype.OptionalNamedType, + 'Integer': univ.Integer, + 'OctetString': univ.OctetString + } + ) == self.e, 'repr() fails' def testContains(self): assert 'first-name' in self.e @@ -104,5 +117,5 @@ assert self.e.getPositionNearType(univ.OctetString.tagSet, 2) == 2 -class OrderedNamedTypesCaseBase(unittest.TestCase): +class OrderedNamedTypesCaseBase(BaseTestCase): def setUp(self): @@ -108,4 +121,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.e = namedtype.NamedTypes( namedtype.NamedType('first-name', univ.OctetString('')), namedtype.NamedType('age', univ.Integer(0)) @@ -116,7 +131,7 @@ 'getTypeByPosition() fails' -class DuplicateNamedTypesCaseBase(unittest.TestCase): +class DuplicateNamedTypesCaseBase(BaseTestCase): def testDuplicateDefaultTags(self): nt = namedtype.NamedTypes( namedtype.NamedType('first-name', univ.Any()), diff --git a/tests/type/test_namedval.py b/tests/type/test_namedval.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X25hbWVkdmFsLnB5..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X25hbWVkdmFsLnB5 100644 --- a/tests/type/test_namedval.py +++ b/tests/type/test_namedval.py @@ -5,9 +5,10 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,9 +9,11 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import namedval @@ -14,5 +17,5 @@ from pyasn1.type import namedval -class NamedValuesCaseBase(unittest.TestCase): +class NamedValuesCaseBase(BaseTestCase): def setUp(self): @@ -18,4 +21,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.e = namedval.NamedValues(('off', 0), ('on', 1)) def testDict(self): diff --git a/tests/type/test_tag.py b/tests/type/test_tag.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X3RhZy5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X3RhZy5weQ== 100644 --- a/tests/type/test_tag.py +++ b/tests/type/test_tag.py @@ -5,9 +5,10 @@ # License: http://pyasn1.sf.net/license.html # import sys + try: import unittest2 as unittest except ImportError: import unittest @@ -8,9 +9,11 @@ try: import unittest2 as unittest except ImportError: import unittest +from tests.base import BaseTestCase + from pyasn1.type import tag @@ -14,5 +17,5 @@ from pyasn1.type import tag -class TagTestCaseBase(unittest.TestCase): +class TagTestCaseBase(BaseTestCase): def setUp(self): @@ -18,4 +21,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.t1 = tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 3) self.t2 = tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 3) @@ -38,5 +42,5 @@ self.t1[2] == self.t2[2], 'tag sequence protocol fails' -class TagSetTestCaseBase(unittest.TestCase): +class TagSetTestCaseBase(BaseTestCase): def setUp(self): @@ -42,4 +46,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.ts1 = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 12) ) @@ -43,6 +49,7 @@ self.ts1 = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 12) ) + self.ts2 = tag.initTagSet( tag.Tag(tag.tagClassUniversal, tag.tagFormatSimple, 12) ) diff --git a/tests/type/test_univ.py b/tests/type/test_univ.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X3VuaXYucHk=..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X3VuaXYucHk= 100644 --- a/tests/type/test_univ.py +++ b/tests/type/test_univ.py @@ -6,7 +6,16 @@ # import sys import math + +try: + import unittest2 as unittest + +except ImportError: + import unittest + +from tests.base import BaseTestCase + from pyasn1.type import univ, tag, constraint, namedtype, namedval, error from pyasn1.compat.octets import str2octs, ints2octs, octs2ints from pyasn1.error import PyAsn1Error @@ -9,9 +18,5 @@ from pyasn1.type import univ, tag, constraint, namedtype, namedval, error from pyasn1.compat.octets import str2octs, ints2octs, octs2ints from pyasn1.error import PyAsn1Error -try: - import unittest2 as unittest -except ImportError: - import unittest @@ -17,6 +22,5 @@ - -class NoValueTestCase(unittest.TestCase): +class NoValueTestCase(BaseTestCase): def testSingleton(self): assert univ.NoValue() is univ.NoValue(), 'NoValue is not a singleton' @@ -144,7 +148,7 @@ assert False, 'sizeof failed for NoValue object' -class IntegerTestCase(unittest.TestCase): +class IntegerTestCase(BaseTestCase): def testStr(self): assert str(univ.Integer(1)) in ('1', '1L'), 'str() fails' @@ -292,7 +296,7 @@ ) -class BooleanTestCase(unittest.TestCase): +class BooleanTestCase(BaseTestCase): def testTruth(self): assert univ.Boolean(True) and univ.Boolean(1), 'Truth initializer fails' @@ -324,5 +328,5 @@ assert 0, 'constraint fail' -class BitStringTestCase(unittest.TestCase): +class BitStringTestCase(BaseTestCase): def setUp(self): @@ -328,4 +332,6 @@ def setUp(self): + BaseTestCase.setUp(self) + self.b = univ.BitString( namedValues=namedval.NamedValues(('Active', 0), ('Urgent', 1)) ) @@ -465,8 +471,8 @@ assert list(reversed(univ.OctetString(self.encodedPythonString))) == list(reversed(self.encodedPythonString)) -class OctetStringWithAsciiTestCase(OctetStringWithUnicodeMixIn, unittest.TestCase): +class OctetStringWithAsciiTestCase(OctetStringWithUnicodeMixIn, BaseTestCase): initializer = (97, 102) encoding = 'us-ascii' @@ -469,9 +475,9 @@ initializer = (97, 102) encoding = 'us-ascii' -class OctetStringWithUtf8TestCase(OctetStringWithUnicodeMixIn, unittest.TestCase): +class OctetStringWithUtf8TestCase(OctetStringWithUnicodeMixIn, BaseTestCase): initializer = (208, 176, 208, 177, 208, 178) encoding = 'utf-8' @@ -474,8 +480,8 @@ initializer = (208, 176, 208, 177, 208, 178) encoding = 'utf-8' -class OctetStringWithUtf16TestCase(OctetStringWithUnicodeMixIn, unittest.TestCase): +class OctetStringWithUtf16TestCase(OctetStringWithUnicodeMixIn, BaseTestCase): initializer = (4, 48, 4, 49, 4, 50) encoding = 'utf-16-be' @@ -484,8 +490,8 @@ # Somehow comparison of UTF-32 encoded strings does not work in Py2 - class OctetStringWithUtf32TestCase(OctetStringWithUnicodeMixIn, unittest.TestCase): + class OctetStringWithUtf32TestCase(OctetStringWithUnicodeMixIn, BaseTestCase): initializer = (0, 0, 4, 48, 0, 0, 4, 49, 0, 0, 4, 50) encoding = 'utf-32-be' @@ -488,8 +494,8 @@ initializer = (0, 0, 4, 48, 0, 0, 4, 49, 0, 0, 4, 50) encoding = 'utf-32-be' -class OctetStringTestCase(unittest.TestCase): +class OctetStringTestCase(BaseTestCase): def testBinDefault(self): @@ -539,7 +545,7 @@ assert OctetString(hexValue="FA9823C43E43510DE3422") == ints2octs((250, 152, 35, 196, 62, 67, 81, 13, 227, 66, 32)) -class Null(unittest.TestCase): +class Null(BaseTestCase): def testStr(self): assert str(univ.Null('')) == '', 'str() fails' @@ -568,7 +574,7 @@ assert not Null() -class RealTestCase(unittest.TestCase): +class RealTestCase(BaseTestCase): def testFloat4BinEnc(self): assert univ.Real((0.25, 2, 3)) == 2.0, 'float initializer for binary encoding fails' @@ -701,7 +707,7 @@ assert Real(1.0) == 1.0 -class ObjectIdentifier(unittest.TestCase): +class ObjectIdentifier(BaseTestCase): def testStr(self): assert str(univ.ObjectIdentifier((1, 3, 6))) == '1.3.6', 'str() fails' @@ -761,5 +767,5 @@ assert str(ObjectIdentifier((1, 3, 6))) == '1.3.6' -class SequenceOf(unittest.TestCase): +class SequenceOf(BaseTestCase): def setUp(self): @@ -765,4 +771,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s1 = univ.SequenceOf( componentType=univ.OctetString('') ) @@ -954,5 +961,5 @@ assert n == o -class Sequence(unittest.TestCase): +class Sequence(BaseTestCase): def setUp(self): @@ -958,8 +965,11 @@ def setUp(self): - self.s1 = univ.Sequence(componentType=namedtype.NamedTypes( - namedtype.NamedType('name', univ.OctetString('')), - namedtype.OptionalNamedType('nick', univ.OctetString('')), - namedtype.DefaultedNamedType('age', univ.Integer(34)) - )) + BaseTestCase.setUp(self) + self.s1 = univ.Sequence( + componentType=namedtype.NamedTypes( + namedtype.NamedType('name', univ.OctetString('')), + namedtype.OptionalNamedType('nick', univ.OctetString('')), + namedtype.DefaultedNamedType('age', univ.Integer(34)) + ) + ) def testRepr(self): @@ -964,10 +974,15 @@ def testRepr(self): - assert eval(repr(self.s1.clone().setComponents('a', 'b')), - {'Sequence': univ.Sequence, 'OctetString': univ.OctetString, 'Integer': univ.Integer, - 'NamedTypes': namedtype.NamedTypes, 'NamedType': namedtype.NamedType, - 'OptionalNamedType': namedtype.OptionalNamedType, - 'DefaultedNamedType': namedtype.DefaultedNamedType}) == self.s1.clone().setComponents('a', 'b'), 'repr() fails' + assert eval( + repr(self.s1.clone().setComponents('a', 'b')), + {'Sequence': univ.Sequence, + 'OctetString': univ.OctetString, + 'Integer': univ.Integer, + 'NamedTypes': namedtype.NamedTypes, + 'NamedType': namedtype.NamedType, + 'OptionalNamedType': namedtype.OptionalNamedType, + 'DefaultedNamedType': namedtype.DefaultedNamedType} + ) == self.s1.clone().setComponents('a', 'b'), 'repr() fails' def testTag(self): assert self.s1.tagSet == tag.TagSet( @@ -1101,7 +1116,7 @@ assert s['name'] == str2octs('abc') -class SequenceWithoutSchema(unittest.TestCase): +class SequenceWithoutSchema(BaseTestCase): def testIter(self): s = univ.Sequence() @@ -1151,5 +1166,5 @@ assert 'field-0' not in s -class SetOf(unittest.TestCase): +class SetOf(BaseTestCase): def setUp(self): @@ -1155,4 +1170,5 @@ def setUp(self): + BaseTestCase.setUp(self) self.s1 = univ.SetOf(componentType=univ.OctetString('')) def testTag(self): @@ -1178,5 +1194,5 @@ assert s == [str2octs('abc')] -class Set(unittest.TestCase): +class Set(BaseTestCase): def setUp(self): @@ -1182,9 +1198,13 @@ def setUp(self): - self.s1 = univ.Set(componentType=namedtype.NamedTypes( - namedtype.NamedType('name', univ.OctetString('')), - namedtype.OptionalNamedType('null', univ.Null('')), - namedtype.DefaultedNamedType('age', univ.Integer(34)) - )) + BaseTestCase.setUp(self) + + self.s1 = univ.Set( + componentType=namedtype.NamedTypes( + namedtype.NamedType('name', univ.OctetString('')), + namedtype.OptionalNamedType('null', univ.Null('')), + namedtype.DefaultedNamedType('age', univ.Integer(34)) + ) + ) self.s2 = self.s1.clone() def testTag(self): @@ -1241,5 +1261,5 @@ assert s['name'] == str2octs('abc') -class Choice(unittest.TestCase): +class Choice(BaseTestCase): def setUp(self): @@ -1245,4 +1265,6 @@ def setUp(self): + BaseTestCase.setUp(self) + innerComp = univ.Choice( componentType=namedtype.NamedTypes( namedtype.NamedType('count', univ.Integer()), diff --git a/tests/type/test_useful.py b/tests/type/test_useful.py index c0b44b64489ed1e333c5bd000e4edb46e0b946f7_dGVzdHMvdHlwZS90ZXN0X3VzZWZ1bC5weQ==..98dd99e3a57248175522a8100675dde63fb14552_dGVzdHMvdHlwZS90ZXN0X3VzZWZ1bC5weQ== 100644 --- a/tests/type/test_useful.py +++ b/tests/type/test_useful.py @@ -6,8 +6,6 @@ # import sys import datetime -from pyasn1.type import useful -from pyasn1.error import PyAsn1Error try: import unittest2 as unittest @@ -11,6 +9,7 @@ try: import unittest2 as unittest + except ImportError: import unittest @@ -14,6 +13,9 @@ except ImportError: import unittest +from tests.base import BaseTestCase + +from pyasn1.type import useful class FixedOffset(datetime.tzinfo): def __init__(self, offset, name): @@ -34,7 +36,7 @@ UTC2 = FixedOffset(120, 'UTC') -class ObjectDescriptorTestCase(unittest.TestCase): +class ObjectDescriptorTestCase(BaseTestCase): pass @@ -38,7 +40,7 @@ pass -class GeneralizedTimeTestCase(unittest.TestCase): +class GeneralizedTimeTestCase(BaseTestCase): def testFromDateTime(self): assert useful.GeneralizedTime.fromDateTime(datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC)) == '20170711000102.3Z' @@ -71,7 +73,7 @@ assert datetime.datetime(2017, 7, 11, 0) == useful.GeneralizedTime('2017071100').asDateTime -class UTCTimeTestCase(unittest.TestCase): +class UTCTimeTestCase(BaseTestCase): def testFromDateTime(self): assert useful.UTCTime.fromDateTime(datetime.datetime(2017, 7, 11, 0, 1, 2, tzinfo=UTC)) == '170711000102Z'