From 393cf3131ac5923f760d7d79dd9d44ceb5d5ea7a Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Wed, 27 Jul 2011 11:07:14 +0000 Subject: [PATCH] [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 --- test/scripts/basetest.py | 14 ++++++ test/scripts/pykdtest.py | 78 +++++++++++++++++++++++---------- test/scripts/target.py | 7 +++ test/scripts/typeinfo.py | 37 ++++++++++++++++ test/targetapp/targetapp.vcproj | 30 ++++++++++--- test/targetapp/types.cpp | 39 +++++++++++++++++ 6 files changed, 177 insertions(+), 28 deletions(-) create mode 100644 test/scripts/basetest.py create mode 100644 test/scripts/target.py create mode 100644 test/scripts/typeinfo.py create mode 100644 test/targetapp/types.cpp diff --git a/test/scripts/basetest.py b/test/scripts/basetest.py new file mode 100644 index 0000000..bc7b552 --- /dev/null +++ b/test/scripts/basetest.py @@ -0,0 +1,14 @@ +# +# +# + +import unittest +import target + +class BaseTest( unittest.TestCase ): + + def test1( self ): + self.assertNotEqual( target.module, None ) + + + \ No newline at end of file diff --git a/test/scripts/pykdtest.py b/test/scripts/pykdtest.py index 0688453..68497d9 100644 --- a/test/scripts/pykdtest.py +++ b/test/scripts/pykdtest.py @@ -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) diff --git a/test/scripts/target.py b/test/scripts/target.py new file mode 100644 index 0000000..9b4193c --- /dev/null +++ b/test/scripts/target.py @@ -0,0 +1,7 @@ +# +# +# + + +module = None +moduleName = None \ No newline at end of file diff --git a/test/scripts/typeinfo.py b/test/scripts/typeinfo.py new file mode 100644 index 0000000..e00f3fd --- /dev/null +++ b/test/scripts/typeinfo.py @@ -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 ) + + + diff --git a/test/targetapp/targetapp.vcproj b/test/targetapp/targetapp.vcproj index 91059c9..6defe5e 100644 --- a/test/targetapp/targetapp.vcproj +++ b/test/targetapp/targetapp.vcproj @@ -1,14 +1,10 @@ @@ -364,6 +360,10 @@ RelativePath=".\targetapp.cpp" > + + @@ -393,6 +393,26 @@ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" > + + + + + + + + + + diff --git a/test/targetapp/types.cpp b/test/targetapp/types.cpp new file mode 100644 index 0000000..96c056e --- /dev/null +++ b/test/targetapp/types.cpp @@ -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 }; + +/////////////////////////////////////////////////////////////////////////////// \ No newline at end of file