[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
This commit is contained in:
SND\kernelnet_cp 2011-07-27 14:50:48 +00:00
parent 621138b107
commit ee9f1f0944
2 changed files with 71 additions and 12 deletions

View File

@ -21,10 +21,12 @@ class TypeInfoTest( unittest.TestCase ):
ti = pykd.typeInfo( target.moduleName, "Type1" ) ti = pykd.typeInfo( target.moduleName, "Type1" )
self.assertEqual( hasattr( ti, "field1" ), True ) self.assertEqual( hasattr( ti, "field1" ), True )
self.assertEqual( hasattr( ti, "field2" ), True ) self.assertEqual( hasattr( ti, "field2" ), True )
self.assertEqual( hasattr( ti, "field3" ), True )
tv = pykd.typedVar( ti, target.module.var1 ) tv = pykd.typedVar( ti, target.module.var1 )
self.assertEqual( tv.field1, -121 ) self.assertEqual( tv.field1, -121 )
self.assertEqual( tv.field2, 220 ) self.assertEqual( tv.field2, 220 )
# self.assertLess( tv.field3 - 1.0095, 0.0001 )
def testEnumField(self): def testEnumField(self):
ti = pykd.typeInfo( target.moduleName, "Type2" ) ti = pykd.typeInfo( target.moduleName, "Type2" )
@ -32,6 +34,17 @@ class TypeInfoTest( unittest.TestCase ):
tv = pykd.typedVar( ti, target.module.var2 ) tv = pykd.typedVar( ti, target.module.var2 )
self.assertEqual( tv.field1, 100 ) 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 )

View File

@ -1,5 +1,7 @@
#include "stdafx.h" #include "stdafx.h"
#include <string>
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// áàçîâûé òèïû // áàçîâûé òèïû
@ -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 { enum Enum1 {
Enum1Val1 = 100, Enum1Val1 = 100,
@ -16,24 +32,54 @@ enum Enum1 {
Enum1Val3 = 300 Enum1Val3 = 300
}; };
struct Type1 {
char field1;
unsigned char field2;
};
Type1 var1 = { -121, 220 };
struct Type2 { struct Type2 {
Enum1 field1; Enum1 field1;
}; };
Type2 var2 = { Enum1Val1 }; 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" );
};
};
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////