Home | History | Annotate | Download | only in cer
      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