Revision: 122
Author: roman_yakovenko
Date: 2006-05-17 05:25:07 -0700 (Wed, 17 May 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=122&view=rev
Log Message:
-----------
boost_random is almost ready
Unit tests is the only missing thing
Modified Paths:
--------------
pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/random_settings.py
pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/sconscript
pyplusplus_dev/examples/pyboost_dev/sconstruct
pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/__init__.py
pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/unittests/test_all.py
Modified: pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/random_settings.py
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/random_settings.py 2006-05-17 06:51:13 UTC (rev 121)
+++ pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/random_settings.py 2006-05-17 12:25:07 UTC (rev 122)
@@ -16,12 +16,7 @@
module_name = '_random_'
working_dir = _script_dir
generated_files_dir = os.path.join( _script_dir, 'generated' )
-unittests_dir = os.path.join( _script_dir, '..', '..', 'unittests', 'random' )
+unittests_dir = os.path.join( _script_dir, '..', '..', 'unittests', 'boost_random' )
defined_symbols = [ 'BOOST_NO_INCLASS_MEMBER_INITIALIZATION', 'BOOST_NO_INT64_T' ]
undefined_symbols = [ '__MINGW32__' ]
-#defined_symbols = ['BOOST_DATE_TIME_NO_MEMBER_INIT']
-#if sys.platform == 'win32':
- #defined_symbols.extend( [ 'BOOST_DATE_TIME_DYN_LINK' ] )
-
-
\ No newline at end of file
Modified: pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/sconscript
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/sconscript 2006-05-17 06:51:13 UTC (rev 121)
+++ pyplusplus_dev/examples/pyboost_dev/pyboost/boost_random/sconscript 2006-05-17 12:25:07 UTC (rev 122)
@@ -32,4 +32,4 @@
_random_ = local_env.SharedLibrary( target=random_settings.module_name
, source=get_source_files() )
-local_env.Install( '#unittests/random', _random_ )
+local_env.Install( '#unittests/boost_random', _random_ )
Modified: pyplusplus_dev/examples/pyboost_dev/sconstruct
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/sconstruct 2006-05-17 06:51:13 UTC (rev 121)
+++ pyplusplus_dev/examples/pyboost_dev/sconstruct 2006-05-17 12:25:07 UTC (rev 122)
@@ -19,5 +19,5 @@
Export( 'env' )
env.SConscript( ['pyboost/date_time/sconscript'] )
env.SConscript( ['pyboost/crc/sconscript'] )
-env.SConscript( ['pyboost/random/sconscript'] )
+env.SConscript( ['pyboost/boost_random/sconscript'] )
env.SConscript( ['pyboost/rational/sconscript'] )
\ No newline at end of file
Modified: pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/__init__.py
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/__init__.py 2006-05-17 06:51:13 UTC (rev 121)
+++ pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/__init__.py 2006-05-17 12:25:07 UTC (rev 122)
@@ -6,6 +6,10 @@
import _random_
+#TODO:
+# normal_distribution, cauchy_distribution
+# are missed default argument
+
#generators:
from _random_ import ecuyer1988
from _random_ import hellekalek1995
@@ -488,5 +492,17 @@
if not valid_distrs.has_key( dcls ):
raise RuntimeError( 'Unable to create variate_generator(%s, %s) - takoe sochetanie does not exist!'
% ( gcls.__name__, dcls.__name__ ) )
- return valid_distrs[dcls]
+ return valid_distrs[dcls]( generator, distribution )
+def variate_generator_exists( generator, distribution ):
+ global __vg
+ global distributions
+ gcls = generator.__class__
+ if not __vg.has_key( gcls ):
+ return False
+ dcls = distribution.__class__
+ if dcls not in distributions:
+ return False
+
+ valid_distrs = __vg[ gcls ]
+ return valid_distrs.has_key( dcls )
Modified: pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/unittests/test_all.py
===================================================================
--- pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/unittests/test_all.py 2006-05-17 06:51:13 UTC (rev 121)
+++ pyplusplus_dev/examples/pyboost_dev/unittests/boost_random/unittests/test_all.py 2006-05-17 12:25:07 UTC (rev 122)
@@ -7,15 +7,64 @@
import sys
sys.path.append( '../..' )
-import random
-print random.__path__
+import boost_random
import unittest
class tester_t( unittest.TestCase ):
def __init__( self, *args ):
unittest.TestCase.__init__( self, *args )
+ def randomness_tester( self, generator, count=1000 ):
+ generated = set()
+ for i in range( count ):
+ value = generator()
+ generated.add( value )
+ self.failUnless( len( generated ) >= count * 0.9 )
+ def generator_tester( self, gclass, *args ):
+ gen = gclass()
+ self.randomness_tester( gen )
+ print '\nname : ', gen.__class__.__name__
+ print ' max: ', gen.max()
+ print ' min: ', gen.min()
+ gen = gclass( *args )
+ self.randomness_tester( gen )
+ gen.seed()
+ self.randomness_tester( gen )
+
+ def test_generators(self):
+ for gclass in boost_random.generators:
+ self.generator_tester(gclass)
+
+ def instantiate_dist( self, urng, dist ):
+ if not boost_random.variate_generator_exists( urng, dist ):
+ return
+
+ gen1 = boost_random.variate_generator( urng, dist)
+ gen2 = boost_random.variate_generator( urng, dist)
+ self.randomness_tester( gen1 )
+ self.randomness_tester( gen2 )
+ self.failUnless( abs( gen1() - gen2() ) < 1e-6 )
+ gen1.engine()
+ gen1.distribution().reset()
+ gen2.engine()
+ gen2.distribution().reset()
+
+ def instantiate_real_dist( self, urng ):
+ self.instantiate_dist(urng, boost_random.uniform_real(0, 2.1) )
+ self.instantiate_dist(urng, boost_random.triangle_distribution(1, 1.5, 7) )
+ self.instantiate_dist(urng, boost_random.exponential_distribution(5) )
+ self.instantiate_dist(urng, boost_random.normal_distribution(0,1) )
+ #self.instantiate_dist(urng, boost_random.normal_distribution() )
+ self.instantiate_dist(urng, boost_random.lognormal_distribution(1, 1) )
+ self.instantiate_dist(urng, boost_random.cauchy_distribution(1, 1) )
+ self.instantiate_dist(urng, boost_random.gamma_distribution(1) )
+
+ def test_distributions( self ):
+ for gclass in boost_random.generators:
+ self.instantiate_real_dist( gclass() )
+
+
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.
|