| # |
| # 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 tests.base import BaseTestCase |
| |
| from pyasn1.type import namedtype, univ |
| from pyasn1.error import PyAsn1Error |
| |
| |
| class NamedTypeCaseBase(BaseTestCase): |
| def setUp(self): |
| BaseTestCase.setUp(self) |
| self.e = namedtype.NamedType('age', univ.Integer(0)) |
| |
| def testIter(self): |
| n, t = self.e |
| assert n == 'age' or t == univ.Integer(), 'unpack fails' |
| |
| def testRepr(self): |
| assert eval(repr(self.e), {'NamedType': namedtype.NamedType, 'Integer': univ.Integer}) == self.e, 'repr() fails' |
| |
| |
| class NamedTypesCaseBase(BaseTestCase): |
| def setUp(self): |
| BaseTestCase.setUp(self) |
| |
| self.e = namedtype.NamedTypes( |
| namedtype.NamedType('first-name', univ.OctetString('')), |
| namedtype.OptionalNamedType('age', univ.Integer(0)), |
| namedtype.NamedType('family-name', univ.OctetString('')) |
| ) |
| |
| 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' |
| |
| def testContains(self): |
| assert 'first-name' in self.e |
| assert '<missing>' not in self.e |
| |
| # noinspection PyUnusedLocal |
| def testGetItem(self): |
| assert self.e[0] == namedtype.NamedType('first-name', univ.OctetString('')) |
| |
| def testIter(self): |
| assert list(self.e) == ['first-name', 'age', 'family-name'] |
| |
| def testGetTypeByPosition(self): |
| assert self.e.getTypeByPosition(0) == univ.OctetString(''), \ |
| 'getTypeByPosition() fails' |
| |
| def testGetNameByPosition(self): |
| assert self.e.getNameByPosition(0) == 'first-name', \ |
| 'getNameByPosition() fails' |
| |
| def testGetPositionByName(self): |
| assert self.e.getPositionByName('first-name') == 0, \ |
| 'getPositionByName() fails' |
| |
| def testGetTypesNearPosition(self): |
| assert self.e.getTagMapNearPosition(0).presentTypes == { |
| univ.OctetString.tagSet: univ.OctetString('') |
| } |
| assert self.e.getTagMapNearPosition(1).presentTypes == { |
| univ.Integer.tagSet: univ.Integer(0), |
| univ.OctetString.tagSet: univ.OctetString('') |
| } |
| assert self.e.getTagMapNearPosition(2).presentTypes == { |
| univ.OctetString.tagSet: univ.OctetString('') |
| } |
| |
| def testGetTagMap(self): |
| assert self.e.tagMap.presentTypes == { |
| univ.OctetString.tagSet: univ.OctetString(''), |
| univ.Integer.tagSet: univ.Integer(0) |
| } |
| |
| def testStrTagMap(self): |
| assert 'TagMap' in str(self.e.tagMap) |
| assert 'OctetString' in str(self.e.tagMap) |
| assert 'Integer' in str(self.e.tagMap) |
| |
| def testReprTagMap(self): |
| assert 'TagMap' in repr(self.e.tagMap) |
| assert 'OctetString' in repr(self.e.tagMap) |
| assert 'Integer' in repr(self.e.tagMap) |
| |
| def testGetTagMapWithDups(self): |
| try: |
| self.e.tagMapUnique[0] |
| except PyAsn1Error: |
| pass |
| else: |
| assert 0, 'Duped types not noticed' |
| |
| def testGetPositionNearType(self): |
| assert self.e.getPositionNearType(univ.OctetString.tagSet, 0) == 0 |
| assert self.e.getPositionNearType(univ.Integer.tagSet, 1) == 1 |
| assert self.e.getPositionNearType(univ.OctetString.tagSet, 2) == 2 |
| |
| |
| class OrderedNamedTypesCaseBase(BaseTestCase): |
| def setUp(self): |
| BaseTestCase.setUp(self) |
| |
| self.e = namedtype.NamedTypes( |
| namedtype.NamedType('first-name', univ.OctetString('')), |
| namedtype.NamedType('age', univ.Integer(0)) |
| ) |
| |
| def testGetTypeByPosition(self): |
| assert self.e.getTypeByPosition(0) == univ.OctetString(''), \ |
| 'getTypeByPosition() fails' |
| |
| |
| class DuplicateNamedTypesCaseBase(BaseTestCase): |
| def testDuplicateDefaultTags(self): |
| nt = namedtype.NamedTypes( |
| namedtype.NamedType('first-name', univ.Any()), |
| namedtype.NamedType('age', univ.Any()) |
| ) |
| |
| assert isinstance(nt.tagMap, namedtype.NamedTypes.PostponedError) |
| |
| |
| suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) |
| |
| if __name__ == '__main__': |
| unittest.TextTestRunner(verbosity=2).run(suite) |