1 # 2 # This file is part of pyasn1 software. 3 # 4 # Copyright (c) 2005-2018, Ilya Etingof <etingof (at] gmail.com> 5 # License: http://snmplabs.com/pyasn1/license.html 6 # 7 import sys 8 9 try: 10 import unittest2 as unittest 11 except ImportError: 12 import unittest 13 14 from tests.base import BaseTestCase 15 16 from pyasn1.codec.cer import decoder 17 from pyasn1.compat.octets import ints2octs, str2octs, null 18 from pyasn1.error import PyAsn1Error 19 20 21 class BooleanDecoderTestCase(BaseTestCase): 22 def testTrue(self): 23 assert decoder.decode(ints2octs((1, 1, 255))) == (1, null) 24 25 def testFalse(self): 26 assert decoder.decode(ints2octs((1, 1, 0))) == (0, null) 27 28 def testEmpty(self): 29 try: 30 decoder.decode(ints2octs((1, 0))) 31 except PyAsn1Error: 32 pass 33 34 def testOverflow(self): 35 try: 36 decoder.decode(ints2octs((1, 2, 0, 0))) 37 except PyAsn1Error: 38 pass 39 40 class BitStringDecoderTestCase(BaseTestCase): 41 def testShortMode(self): 42 assert decoder.decode( 43 ints2octs((3, 3, 6, 170, 128)) 44 ) == (((1, 0) * 5), null) 45 46 def testLongMode(self): 47 assert decoder.decode( 48 ints2octs((3, 127, 6) + (170,) * 125 + (128,)) 49 ) == (((1, 0) * 501), null) 50 51 # TODO: test failures on short chunked and long unchunked substrate samples 52 53 54 class OctetStringDecoderTestCase(BaseTestCase): 55 def testShortMode(self): 56 assert decoder.decode( 57 ints2octs((4, 15, 81, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120)), 58 ) == (str2octs('Quick brown fox'), null) 59 60 def testLongMode(self): 61 assert decoder.decode( 62 ints2octs((36, 128, 4, 130, 3, 232) + (81,) * 1000 + (4, 1, 81, 0, 0)) 63 ) == (str2octs('Q' * 1001), null) 64 65 # TODO: test failures on short chunked and long unchunked substrate samples 66 67 68 suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) 69 70 if __name__ == '__main__': 71 unittest.TextTestRunner(verbosity=2).run(suite) 72