[pygccxml-commit] SF.net SVN: pygccxml:[1826] pyplusplus_dev/unittests
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2010-03-16 19:59:01
|
Revision: 1826
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1826&view=rev
Author: roman_yakovenko
Date: 2010-03-16 19:58:55 +0000 (Tue, 16 Mar 2010)
Log Message:
-----------
add protected member variables tester
Modified Paths:
--------------
pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.cpp
pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.hpp
Added Paths:
-----------
pyplusplus_dev/unittests/member_variables_protected_tester.py
Modified: pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.cpp
===================================================================
--- pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.cpp 2010-02-15 20:18:13 UTC (rev 1825)
+++ pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.cpp 2010-03-16 19:58:55 UTC (rev 1826)
@@ -7,6 +7,9 @@
namespace member_variables{
+const array_t::variable_t array_t::vars[] = { array_t::variable_t(), array_t::variable_t(), array_t::variable_t() };
+array_t::variable_t array_t::vars_nonconst[] = { array_t::variable_t(), array_t::variable_t(), array_t::variable_t() };
+
int point::instance_count = 0;
const point::color point::default_color = point::red;
Modified: pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.hpp 2010-02-15 20:18:13 UTC (rev 1825)
+++ pyplusplus_dev/unittests/data/member_variables_protected_to_be_exported.hpp 2010-03-16 19:58:55 UTC (rev 1826)
@@ -54,7 +54,8 @@
unsigned int get_b(const bit_fields_t& inst);
struct array_t{
- array_t(){
+ array_t()
+ {
for( int i = 0; i < 10; ++i ){
ivars[i] = -i;
}
@@ -68,8 +69,9 @@
int get_ivars_item( int index ){
return ivars[index];
}
-protected:
- const variable_t vars[3];
+
+ static const variable_t vars[3];
+ static variable_t vars_nonconst[3];
int ivars[10];
int ivars2[10];
};
Added: pyplusplus_dev/unittests/member_variables_protected_tester.py
===================================================================
--- pyplusplus_dev/unittests/member_variables_protected_tester.py (rev 0)
+++ pyplusplus_dev/unittests/member_variables_protected_tester.py 2010-03-16 19:58:55 UTC (rev 1826)
@@ -0,0 +1,139 @@
+# Copyright 2004-2008 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import sys
+import ctypes
+import unittest
+import fundamental_tester_base
+from pygccxml import declarations
+
+class tester_t(fundamental_tester_base.fundamental_tester_base_t):
+ EXTENSION_NAME = 'member_variables_protected'
+
+ def __init__( self, *args ):
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
+ self
+ , tester_t.EXTENSION_NAME
+ , *args )
+
+ def is_protected_var( self, var ):
+ if not isinstance( var.parent, declarations.class_t ):
+ return False
+ if var.access_type == declarations.ACCESS_TYPES.PROTECTED:
+ return True
+ else:
+ return False
+
+ def customize(self, mb ):
+ mb.variables( self.is_protected_var ).use_make_functions = True
+ mb.variable( 'prefered_color' ).alias = 'PreferedColor'
+ mb.classes().always_expose_using_scope = True
+ image = mb.class_( 'image_t' )
+ image.var( 'data' ).expose_address = True
+ image.var( 'none_image' ).expose_address = True
+ mb.class_( 'Andy' ).var('userData').expose_address = True
+
+ def change_default_color( self, module ):
+ module.point.default_color = module.point.color.blue
+
+ def change_prefered_color( self, module ):
+ xypoint = module.point()
+ xypoint.PreferedColor = module.point.color.blue
+
+ def set_b( self, bf, value ):
+ bf.b = value
+
+ def run_tests(self, module):
+ self.failIfRaisesAny( module.point )
+ xypoint = module.point()
+ self.failUnless( module.point.instance_count == 1)
+ self.failUnless( xypoint.instance_count == 1)
+ self.failUnless( module.point.default_color == module.point.color.red)
+ self.failUnless( xypoint.default_color == module.point.color.red)
+ self.failUnless( xypoint.x == -1)
+ self.failUnless( xypoint.y == 2 )
+ self.failUnless( xypoint.PreferedColor == xypoint.color.blue )
+ self.failUnlessRaises( Exception, self.change_default_color )
+ self.failUnlessRaises( Exception, self.change_prefered_color )
+
+ bf = module.bit_fields_t()
+ module.set_a( bf, 1 )
+ self.failUnless( 1 == bf.a )
+ self.failUnless( bf.b == module.get_b( bf ) )
+ self.failIfNotRaisesAny( lambda: self.set_b( bf, 23 ) )
+
+ tree = module.create_tree()
+ self.failUnless( tree.parent is None )
+ self.failUnless( tree.data.value == 0 )
+ self.failUnless( tree.right is None )
+ self.failUnless( tree.left )
+ self.failUnless( tree.left.data.value == 1 )
+
+ tree.right = module.create_tree()
+ self.failUnless( tree.right.parent is None )
+ self.failUnless( tree.right.data.value == 0 )
+ self.failUnless( tree.right.right is None )
+ self.failUnless( tree.right.left )
+ self.failUnless( tree.right.left.data.value == 1 )
+
+ mem_var_str = module.mem_var_str_t()
+ mem_var_str.identity( module.mem_var_str_t.class_name )
+
+ image = module.image_t()
+
+ data_type = ctypes.POINTER( ctypes.c_int )
+ data = data_type.from_address( image.data )
+ for j in range(5):
+ self.failUnless( j == data[j] )
+
+ int_array = ctypes.c_int * 5
+ array = int_array()
+ for i in range( 5 ):
+ array[i] = 2*i
+ image.data = ctypes.addressof(array)
+ data = data_type.from_address( image.data )
+ for j in range(5):
+ self.failUnless( j*2 == data[j] )
+
+ data_type = ctypes.POINTER( ctypes.c_int )
+ data = data_type.from_address( module.image_t.none_image )
+ self.failUnless( 1997 == data.contents.value )
+
+ array = module.array_t()
+ self.failUnless( len( array.ivars ) == 10 )
+
+ ivars = array.ivars
+ del array #testing call policies
+ for i in range(20):
+ for index in range(10):
+ self.failUnless( ivars[index] == -index )
+
+ array = module.array_t()
+ for index in range( len(array.ivars) ):
+ array.ivars[index] = index * index
+ self.failUnless( array.get_ivars_item( index ) == index * index )
+
+ #~ import pdb
+ #~ pdb.set_trace()
+
+ self.failUnless( len( module.array_t.vars ) == 3 )
+ for i in range( len( module.array_t.vars ) ):
+ self.failUnless( module.array_t.vars[i].value == -9 )
+
+ self.failUnless( len( module.array_t.vars_nonconst ) == 3 )
+ for i in range( len( module.array_t.vars_nonconst ) ):
+ self.failUnless( module.array_t.vars_nonconst[i].value == -9 )
+
+def create_suite():
+ suite = unittest.TestSuite()
+ suite.addTest( unittest.makeSuite(tester_t))
+ return suite
+
+def run_suite():
+ unittest.TextTestRunner(verbosity=2).run( create_suite() )
+
+if __name__ == "__main__":
+ run_suite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|