From ee9f1f0944648b2325ebc026a605827a72405869 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Wed, 27 Jul 2011 14:50:48 +0000 Subject: [PATCH] [test] added : testNamespace ( getting types and vars declared within namespaces ) git-svn-id: https://pykd.svn.codeplex.com/svn@68337 9b283d60-5439-405e-af05-b73fd8c4d996 --- test/scripts/typeinfo.py | 13 ++++++++ test/targetapp/types.cpp | 70 +++++++++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 12 deletions(-) diff --git a/test/scripts/typeinfo.py b/test/scripts/typeinfo.py index e00f3fd..65e52b1 100644 --- a/test/scripts/typeinfo.py +++ b/test/scripts/typeinfo.py @@ -21,10 +21,12 @@ class TypeInfoTest( unittest.TestCase ): ti = pykd.typeInfo( target.moduleName, "Type1" ) self.assertEqual( hasattr( ti, "field1" ), True ) self.assertEqual( hasattr( ti, "field2" ), True ) + self.assertEqual( hasattr( ti, "field3" ), True ) tv = pykd.typedVar( ti, target.module.var1 ) self.assertEqual( tv.field1, -121 ) self.assertEqual( tv.field2, 220 ) +# self.assertLess( tv.field3 - 1.0095, 0.0001 ) def testEnumField(self): ti = pykd.typeInfo( target.moduleName, "Type2" ) @@ -32,6 +34,17 @@ class TypeInfoTest( unittest.TestCase ): tv = pykd.typedVar( ti, target.module.var2 ) self.assertEqual( tv.field1, 100 ) + + 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 ) + + diff --git a/test/targetapp/types.cpp b/test/targetapp/types.cpp index 96c056e..faf59c8 100644 --- a/test/targetapp/types.cpp +++ b/test/targetapp/types.cpp @@ -1,5 +1,7 @@ #include "stdafx.h" +#include + /////////////////////////////////////////////////////////////////////////////// // базовый типы @@ -9,6 +11,20 @@ unsigned char ucharVar = 200; /////////////////////////////////////////////////////////////////////////////// +struct Type1 { + + char field1; + + unsigned char field2; + + double field3; +}; + +Type1 var1 = { -121, 220, 1.0095f }; + +/////////////////////////////////////////////////////////////////////////////// + + enum Enum1 { Enum1Val1 = 100, @@ -16,24 +32,54 @@ enum Enum1 { Enum1Val3 = 300 }; - -struct Type1 { - - char field1; - - unsigned char field2; - -}; - -Type1 var1 = { -121, 220 }; - - struct Type2 { Enum1 field1; }; + Type2 var2 = { Enum1Val1 }; +/////////////////////////////////////////////////////////////////////////////// + +namespace Namespace1 { + + + class Class1 { + + public: + + Class1( unsigned long v1 ) : + m_field1( v1 ) + {} + + private: + + unsigned long m_field1; + + }; + + Class1 var3( 50 ); + + namespace Namespace2 { + + class Class2 { + + public: + + Class2( const std::string &str ) : + m_field1 ( str ) + {} + + private: + + std::string m_field1; + }; + + Class2 var4( "hello" ); + + }; +}; + /////////////////////////////////////////////////////////////////////////////// \ No newline at end of file