[test] added : testEnumField ( fields of enumarable type is returned as integer )

git-svn-id: https://pykd.svn.codeplex.com/svn@68330 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2011-07-27 11:07:14 +00:00
parent ab06800664
commit 393cf3131a
6 changed files with 177 additions and 28 deletions

14
test/scripts/basetest.py Normal file
View File

@ -0,0 +1,14 @@
#
#
#
import unittest
import target
class BaseTest( unittest.TestCase ):
def test1( self ):
self.assertNotEqual( target.module, None )

View File

@ -1,37 +1,69 @@
import sys import sys
import os import os
import unittest import unittest
import pykd
import target
import basetest
import typeinfo
if __name__ == "__main__":
targetAppPath = sys.argv[1]
target.moduleName = os.path.splitext(os.path.basename(targetAppPath))[0]
pykd.startProcess( targetAppPath )
pykd.go()
target.module = pykd.loadModule( target.moduleName )
suite = unittest.TestSuite( [
# unittest.TestLoader().loadTestsFromTestCase( basetest.BaseTest ),
unittest.TestLoader().loadTestsFromTestCase( typeinfo.TypeInfoTest ),
] )
unittest.TextTestRunner().run( suite )
# Append current pykd.pyd path to PYTHONPATH # Append current pykd.pyd path to PYTHONPATH
sys.path.append(os.path.dirname(sys.argv[1])) #sys.path.append(os.path.dirname(sys.argv[1]))
import pykd #import pykd
class TestPykd(unittest.TestCase): #class TestPykd(unittest.TestCase):
def setUp(self): # def setUp(self):
self.targetAppPath = sys.argv[1] # self.targetAppPath = sys.argv[1]
self.targetModuleName = os.path.splitext(os.path.basename(self.targetAppPath))[0] # self.targetModuleName = os.path.splitext(os.path.basename(self.targetAppPath))[0]
self.targetModule = None # self.targetModule = None
self.gVerInfoOffset = 0L # self.gVerInfoOffset = 0L
self.verInfo = None # self.verInfo = None
def testPykd(self): # def testPykd(self):
print self.targetAppPath # print self.targetAppPath
self.assertTrue(pykd.startProcess(self.targetAppPath)) # self.assertTrue(pykd.startProcess(self.targetAppPath))
self.targetModule = pykd.loadModule(self.targetModuleName) # self.targetModule = pykd.loadModule(self.targetModuleName)
self.assertNotEqual(self.targetModule, None) # self.assertNotEqual(self.targetModule, None)
pykd.go() # pykd.go()
self.gVerInfoOffset = pykd.getOffset(self.targetModuleName, "gVerInfo") # self.gVerInfoOffset = pykd.getOffset(self.targetModuleName, "gVerInfo")
self.assertNotEqual(self.gVerInfoOffset, 0L) # self.assertNotEqual(self.gVerInfoOffset, 0L)
self.verInfo = pykd.typedVar(self.targetModuleName, "_OSVERSIONINFOA", self.gVerInfoOffset) # self.verInfo = pykd.typedVar(self.targetModuleName, "_OSVERSIONINFOA", self.gVerInfoOffset)
self.assertNotEqual(self.verInfo, None) # self.assertNotEqual(self.verInfo, None)
pykd.go() # pykd.go()
if __name__ == '__main__':
#if __name__ == '__main__':
#unittest.main(argv=[]) #unittest.main(argv=[])
suite = unittest.TestLoader().loadTestsFromTestCase(TestPykd) # suite = unittest.TestLoader().loadTestsFromTestCase(TestPykd)
unittest.TextTestRunner().run(suite) # unittest.TextTestRunner().run(suite)

7
test/scripts/target.py Normal file
View File

@ -0,0 +1,7 @@
#
#
#
module = None
moduleName = None

37
test/scripts/typeinfo.py Normal file
View File

@ -0,0 +1,37 @@
#
#
#
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 )
tv = pykd.typedVar( ti, target.module.var1 )
self.assertEqual( tv.field1, -121 )
self.assertEqual( tv.field2, 220 )
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 )

View File

@ -1,14 +1,10 @@
<?xml version="1.0" encoding="windows-1251"?> <?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="9.00" Version="9,00"
Name="targetapp" Name="targetapp"
ProjectGUID="{C6254E16-AB8E-41EE-887D-31458E93FC68}" ProjectGUID="{C6254E16-AB8E-41EE-887D-31458E93FC68}"
RootNamespace="targetapp" RootNamespace="targetapp"
SccProjectName="SAK"
SccAuxPath="SAK"
SccLocalPath="SAK"
SccProvider="SAK"
Keyword="Win32Proj" Keyword="Win32Proj"
TargetFrameworkVersion="131072" TargetFrameworkVersion="131072"
> >
@ -364,6 +360,10 @@
RelativePath=".\targetapp.cpp" RelativePath=".\targetapp.cpp"
> >
</File> </File>
<File
RelativePath=".\types.cpp"
>
</File>
<File <File
RelativePath=".\utils.cpp" RelativePath=".\utils.cpp"
> >
@ -393,6 +393,26 @@
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
> >
</Filter> </Filter>
<Filter
Name="scripts"
>
<File
RelativePath="..\scripts\basetest.py"
>
</File>
<File
RelativePath="..\scripts\pykdtest.py"
>
</File>
<File
RelativePath="..\scripts\target.py"
>
</File>
<File
RelativePath="..\scripts\typeinfo.py"
>
</File>
</Filter>
</Files> </Files>
<Globals> <Globals>
</Globals> </Globals>

39
test/targetapp/types.cpp Normal file
View File

@ -0,0 +1,39 @@
#include "stdafx.h"
///////////////////////////////////////////////////////////////////////////////
// áàçîâûé òèïû
char charVar = -100;
unsigned char ucharVar = 200;
///////////////////////////////////////////////////////////////////////////////
enum Enum1 {
Enum1Val1 = 100,
Enum1Val2 = 200,
Enum1Val3 = 300
};
struct Type1 {
char field1;
unsigned char field2;
};
Type1 var1 = { -121, 220 };
struct Type2 {
Enum1 field1;
};
Type2 var2 = { Enum1Val1 };
///////////////////////////////////////////////////////////////////////////////