2011-07-27 19:07:14 +08:00
|
|
|
#
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
import pykd
|
|
|
|
import target
|
|
|
|
|
|
|
|
|
|
|
|
class TypeInfoTest( unittest.TestCase ):
|
|
|
|
|
|
|
|
def testBasicTypes(self):
|
|
|
|
|
|
|
|
self.assertEqual( pykd.char_t.name(), "char" )
|
|
|
|
self.assertEqual( pykd.char_t.size(), 1 )
|
|
|
|
self.assertEqual( pykd.uchar_t.name(), "unsigned char" )
|
|
|
|
self.assertEqual( pykd.uchar_t.size(), 1 )
|
|
|
|
|
|
|
|
def testSimpleStruct(self):
|
|
|
|
|
|
|
|
ti = pykd.typeInfo( target.moduleName, "Type1" )
|
|
|
|
self.assertEqual( hasattr( ti, "field1" ), True )
|
|
|
|
self.assertEqual( hasattr( ti, "field2" ), True )
|
2011-07-27 22:50:48 +08:00
|
|
|
self.assertEqual( hasattr( ti, "field3" ), True )
|
2011-07-27 19:07:14 +08:00
|
|
|
|
|
|
|
tv = pykd.typedVar( ti, target.module.var1 )
|
|
|
|
self.assertEqual( tv.field1, -121 )
|
|
|
|
self.assertEqual( tv.field2, 220 )
|
2011-07-27 22:50:48 +08:00
|
|
|
# self.assertLess( tv.field3 - 1.0095, 0.0001 )
|
2011-07-27 19:07:14 +08:00
|
|
|
|
|
|
|
def testEnumField(self):
|
|
|
|
ti = pykd.typeInfo( target.moduleName, "Type2" )
|
|
|
|
self.assertEqual( hasattr( ti, "field1" ), True )
|
|
|
|
|
|
|
|
tv = pykd.typedVar( ti, target.module.var2 )
|
|
|
|
self.assertEqual( tv.field1, 100 )
|
2011-07-27 22:50:48 +08:00
|
|
|
|
|
|
|
def testNamspace(self):
|
|
|
|
ti1 = pykd.typeInfo( target.moduleName, "Namespace1::Class1" )
|
|
|
|
ti2 = pykd.typeInfo( target.moduleName, "Namespace1::Namespace2::Class2" )
|
|
|
|
self.assertNotEqual( target.module.var3, 0 )
|
|
|
|
self.assertNotEqual( target.module.var4, 0 )
|
|
|
|
var3 = pykd.typedVar( ti1, target.module.var3 )
|
|
|
|
var4 = pykd.typedVar( ti1, target.module.var4 )
|
|
|
|
self.assertEqual( var3.m_field1, 50 )
|
|
|
|
|
|
|
|
|
2011-07-27 19:07:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
|