# Copyright 2003 Jens Maurer
# Copyright 2009-2010 Steven Watanabe
# Distributed under the Boost Software License, Version 1.0. (See accompany-
# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

# Boost Random Library test Jamfile

# bring in rules for testing
import testing ;

project /boost/random/test ;

run random_test.cpp ;
run ../example/random_demo.cpp ;
run validate.cpp ;
run test_random_device.cpp /boost//random : : : <link>static : test_random_device ;
run test_random_device.cpp /boost//random : : : <link>shared : test_random_device_dll ;

local all-urngs = 
    rand48
    minstd_rand0
    minstd_rand
    ecuyer1988
    kreutzer1986
    hellekalek1995
    mt11213b
    mt19937
    lagged_fibonacci
    lagged_fibonacci607
    ranlux3
    ranlux4
    ranlux3_01
    ranlux4_01
    ranlux64_3_01
    ranlux64_4_01
    taus88
;

for urng in $(all-urngs)
{
    run instantiate.cpp : : : <define>BOOST_RANDOM_URNG_TEST=$(urng) : test_$(urng) ;
}

# run nondet_random_speed.cpp ;
# run random_device.cpp ;
# run random_speed.cpp ;
# run statistic_tests.cpp ;

exe statistic_tests.exe : statistic_tests.cpp ;
explicit statistics_tests ;

install statistic_tests : statistic_tests.exe : <install-type>EXE <location>. ;
explicit statistic_tests ;
