blob: 3a4f305994f0421ac242dd9b74ca324740e753dd [file] [log] [blame]
from pyasn1.type import namedtype, univ
from pyasn1.error import PyAsn1Error
from sys import version_info
if version_info[0:2] < (2, 7) or \
version_info[0:2] in ( (3, 0), (3, 1) ):
try:
import unittest2 as unittest
except ImportError:
import unittest
else:
import unittest
class NamedTypeCaseBase(unittest.TestCase):
def setUp(self):
self.e = namedtype.NamedType('age', univ.Integer())
def testIter(self):
n, t = self.e
assert n == 'age' or t == univ.Integer(), 'unpack fails'
class NamedTypesCaseBase(unittest.TestCase):
def 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 testIter(self):
for t in self.e:
break
else:
assert 0, '__getitem__() fails'
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).getPosMap() == {
univ.OctetString.tagSet: univ.OctetString('')
}
assert self.e.getTagMapNearPosition(1).getPosMap() == {
univ.Integer.tagSet: univ.Integer(0),
univ.OctetString.tagSet: univ.OctetString('')
}
assert self.e.getTagMapNearPosition(2).getPosMap() == {
univ.OctetString.tagSet: univ.OctetString('')
}
def testGetTagMap(self):
assert self.e.getTagMap().getPosMap() == {
univ.OctetString.tagSet: univ.OctetString(''),
univ.Integer.tagSet: univ.Integer(0)
}
def testGetTagMapWithDups(self):
try:
self.e.getTagMap(1)
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(unittest.TestCase):
def 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'
if __name__ == '__main__': unittest.main()