mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 03:23:23 +08:00
[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:
parent
ab06800664
commit
393cf3131a
14
test/scripts/basetest.py
Normal file
14
test/scripts/basetest.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import target
|
||||||
|
|
||||||
|
class BaseTest( unittest.TestCase ):
|
||||||
|
|
||||||
|
def test1( self ):
|
||||||
|
self.assertNotEqual( target.module, None )
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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
7
test/scripts/target.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
module = None
|
||||||
|
moduleName = None
|
37
test/scripts/typeinfo.py
Normal file
37
test/scripts/typeinfo.py
Normal 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 )
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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
39
test/targetapp/types.cpp
Normal 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 };
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
Loading…
Reference in New Issue
Block a user