[pygccxml-commit] SF.net SVN: pygccxml: [482] pyplusplus_dev/unittests
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2006-08-28 13:51:11
|
Revision: 482 Author: roman_yakovenko Date: 2006-08-28 06:51:01 -0700 (Mon, 28 Aug 2006) ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=482&view=rev Log Message: ----------- adding unit tests that better describes the problem Modified Paths: -------------- pyplusplus_dev/unittests/data/no_init_to_be_exported.hpp pyplusplus_dev/unittests/no_init_tester.py Modified: pyplusplus_dev/unittests/data/no_init_to_be_exported.hpp =================================================================== --- pyplusplus_dev/unittests/data/no_init_to_be_exported.hpp 2006-08-28 13:46:26 UTC (rev 481) +++ pyplusplus_dev/unittests/data/no_init_to_be_exported.hpp 2006-08-28 13:51:01 UTC (rev 482) @@ -10,17 +10,33 @@ namespace no_init_ns{ -class controller_i{ +struct value_i{ public: - virtual ~controller_i() { } - virtual bool get_value(void) const = 0; - virtual void set_value(bool value) = 0; + virtual ~value_i() { } + virtual int get_value(void) const = 0; }; +struct value_plus_x_t : value_i{ + value_plus_x_t( int value ) + : m_value( value ) + {} + + virtual int get_value(void) const{ + return m_value + get_plus_value(); + } + + virtual int get_plus_value() const{ + return 0; + } + +private: + int m_value; +}; + inline int -get_value( const boost::shared_ptr< controller_i >& controller ){ - if( controller ){ - return controller->get_value() ? 1 : 0; +get_value( const boost::shared_ptr< value_i >& v ){ + if( v ){ + return v->get_value(); } else{ return -1; Modified: pyplusplus_dev/unittests/no_init_tester.py =================================================================== --- pyplusplus_dev/unittests/no_init_tester.py 2006-08-28 13:46:26 UTC (rev 481) +++ pyplusplus_dev/unittests/no_init_tester.py 2006-08-28 13:51:01 UTC (rev 482) @@ -17,26 +17,42 @@ , tester_t.EXTENSION_NAME , *args ) - def create_py_controller( self, module ): - class py_controller_t( module.controller_i ): - def __init__( self ): - module.controller_i.__init__( self ) - self.value = True + def customize( self, mb ): + cls = mb.class_( 'value_plus_x_t' ) + cls.add_registration_code( 'bp::register_ptr_to_python< boost::shared_ptr< no_init_ns::value_plus_x_t > >();', False ) + def create_identity_value( self, module, v ): + class identity_value_t( module.value_i ): + def __init__( self, v ): + module.value_i.__init__( self ) + self.value = v + def get_value(self): return self.value - def set_value( self, v ): - self.value = v - return py_controller_t() + return identity_value_t(v) + def create_plus_5_value( self, module, v ): + class plus_5_value_t( module.value_plus_x_t ): + def __init__( self, v ): + module.value_plus_x_t.__init__( self, v ) + + def get_plus_value(self): + print "I am here" + return 5 + return plus_5_value_t( v ) + def run_tests(self, module): - controller = self.create_py_controller( module ) - self.failUnless( 1 == module.get_value( controller ) ) - controller.set_value( False ) - self.failUnless( 0 == module.get_value( controller ) ) + identity_value = self.create_identity_value( module, 23 ) + self.failUnless( 23 == module.get_value( identity_value ) ) self.failUnless( -1 == module.get_value( None ) ) + plus_5_value = self.create_plus_5_value( module, 23 ) + print plus_5_value.get_value() + print module.get_value( plus_5_value ) + self.failUnless( 28 == module.get_value( plus_5_value ) ) + + def create_suite(): suite = unittest.TestSuite() suite.addTest( unittest.makeSuite(tester_t)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |