pykd/test/scripts/customtypestest.py
SND\EreTIk_cp 70747aac37 [0.2.x] + custom types
git-svn-id: https://pykd.svn.codeplex.com/svn@79382 9b283d60-5439-405e-af05-b73fd8c4d996
2017-11-08 17:42:50 +04:00

73 lines
3.2 KiB
Python

"""Custom types tests"""
import unittest
import target
import pykd
class CustomTypesTest(unittest.TestCase):
def testCommonStruct(self):
mySubStruct = pykd.createStruct("MySubCustomStruct")
mySubStruct.append( "m_uint1", pykd.typeInfo("UInt1B") )
mySubStruct.append( "m_uint2", pykd.typeInfo("UInt2B") )
mySubUnion = pykd.createUnion("MySubCustomUnion")
mySubUnion.append( "m_uint1", pykd.typeInfo("UInt1B") )
mySubUnion.append( "m_uint2", pykd.typeInfo("UInt2B") )
myType = pykd.createStruct("MyCustomStruct")
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
myType.append( "m_uint4", pykd.typeInfo("UInt4B") )
myType.append( "m_uint2", pykd.typeInfo("UInt2B") )
myType.append( "m_struct", mySubStruct )
myType.append( "m_union", mySubUnion )
myType.append( "m_uint8", pykd.typeInfo("UInt8B") )
self.assertTrue( myType.size() != 0 )
self.assertTrue( myType.size() >= myType.fieldOffset("m_uint8") + myType.m_uint8.size() )
self.assertTrue( myType.fieldOffset("m_uint1") == 0 )
self.assertTrue( myType.fieldOffset("m_uint1") < myType.fieldOffset("m_uint4") )
self.assertTrue( myType.fieldOffset("m_uint1") + myType.m_uint1.size() <= myType.fieldOffset("m_uint4") )
self.assertTrue( myType.fieldOffset("m_uint4") < myType.fieldOffset("m_uint2") )
self.assertTrue( myType.fieldOffset("m_uint4") + myType.m_uint4.size() <= myType.fieldOffset("m_uint2") )
self.assertTrue( myType.fieldOffset("m_uint2") < myType.fieldOffset("m_struct") )
self.assertTrue( myType.fieldOffset("m_uint2") + myType.m_uint2.size() <= myType.fieldOffset("m_struct") )
self.assertTrue( myType.fieldOffset("m_struct") < myType.fieldOffset("m_union") )
self.assertTrue( myType.fieldOffset("m_struct") + myType.m_struct.size() <= myType.fieldOffset("m_union") )
# print myType
def testCommonUnion(self):
myType = pykd.createUnion("MyCustomStruct")
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
myType.append( "m_uint4", pykd.typeInfo("UInt4B") )
myType.append( "m_uint2", pykd.typeInfo("UInt2B") )
self.assertFalse( myType.size() == 0 )
self.assertTrue( myType.fieldOffset("m_uint1") == 0 )
self.assertTrue( myType.fieldOffset("m_uint4") == 0 )
self.assertTrue( myType.fieldOffset("m_uint2") == 0 )
def testDupFieldName(self):
myType = pykd.createStruct("MyCustomStruct")
exceptionRised = False
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
try:
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
except pykd.TypeException:
exceptionRised = True
self.assertTrue(exceptionRised)
myType = pykd.createUnion("MyCustomStruct")
exceptionRised = False
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
try:
myType.append( "m_uint1", pykd.typeInfo("UInt1B") )
except pykd.TypeException:
exceptionRised = True
self.assertTrue(exceptionRised)