mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-19 19:13:22 +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 os
|
||||
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
|
||||
sys.path.append(os.path.dirname(sys.argv[1]))
|
||||
import pykd
|
||||
#sys.path.append(os.path.dirname(sys.argv[1]))
|
||||
#import pykd
|
||||
|
||||
class TestPykd(unittest.TestCase):
|
||||
#class TestPykd(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.targetAppPath = sys.argv[1]
|
||||
self.targetModuleName = os.path.splitext(os.path.basename(self.targetAppPath))[0]
|
||||
self.targetModule = None
|
||||
self.gVerInfoOffset = 0L
|
||||
self.verInfo = None
|
||||
# def setUp(self):
|
||||
# self.targetAppPath = sys.argv[1]
|
||||
# self.targetModuleName = os.path.splitext(os.path.basename(self.targetAppPath))[0]
|
||||
# self.targetModule = None
|
||||
# self.gVerInfoOffset = 0L
|
||||
# self.verInfo = None
|
||||
|
||||
def testPykd(self):
|
||||
print self.targetAppPath
|
||||
# def testPykd(self):
|
||||
# print self.targetAppPath
|
||||
|
||||
self.assertTrue(pykd.startProcess(self.targetAppPath))
|
||||
# self.assertTrue(pykd.startProcess(self.targetAppPath))
|
||||
|
||||
self.targetModule = pykd.loadModule(self.targetModuleName)
|
||||
self.assertNotEqual(self.targetModule, None)
|
||||
pykd.go()
|
||||
# self.targetModule = pykd.loadModule(self.targetModuleName)
|
||||
# self.assertNotEqual(self.targetModule, None)
|
||||
# pykd.go()
|
||||
|
||||
self.gVerInfoOffset = pykd.getOffset(self.targetModuleName, "gVerInfo")
|
||||
self.assertNotEqual(self.gVerInfoOffset, 0L)
|
||||
# self.gVerInfoOffset = pykd.getOffset(self.targetModuleName, "gVerInfo")
|
||||
# self.assertNotEqual(self.gVerInfoOffset, 0L)
|
||||
|
||||
self.verInfo = pykd.typedVar(self.targetModuleName, "_OSVERSIONINFOA", self.gVerInfoOffset)
|
||||
self.assertNotEqual(self.verInfo, None)
|
||||
pykd.go()
|
||||
# self.verInfo = pykd.typedVar(self.targetModuleName, "_OSVERSIONINFOA", self.gVerInfoOffset)
|
||||
# self.assertNotEqual(self.verInfo, None)
|
||||
# pykd.go()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
#if __name__ == '__main__':
|
||||
#unittest.main(argv=[])
|
||||
suite = unittest.TestLoader().loadTestsFromTestCase(TestPykd)
|
||||
unittest.TextTestRunner().run(suite)
|
||||
# suite = unittest.TestLoader().loadTestsFromTestCase(TestPykd)
|
||||
# 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"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Version="9,00"
|
||||
Name="targetapp"
|
||||
ProjectGUID="{C6254E16-AB8E-41EE-887D-31458E93FC68}"
|
||||
RootNamespace="targetapp"
|
||||
SccProjectName="SAK"
|
||||
SccAuxPath="SAK"
|
||||
SccLocalPath="SAK"
|
||||
SccProvider="SAK"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="131072"
|
||||
>
|
||||
@ -364,6 +360,10 @@
|
||||
RelativePath=".\targetapp.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\types.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\utils.cpp"
|
||||
>
|
||||
@ -393,6 +393,26 @@
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</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>
|
||||
<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