source: src/RandomNumbers/unittests/RandomNumberGeneratorFactoryUnitTest.cpp@ 94605f

Last change on this file since 94605f was 94605f, checked in by Frederik Heber <heber@…>, 10 years ago

Replaced .. by getConstInstance() wherever possible.

  • Property mode set to 100644
File size: 4.6 KB
RevLine 
[3f9eba]1/*
2 * Project: MoleCuilder
3 * Description: creates and alters molecular systems
[0aa122]4 * Copyright (C) 2010-2012 University of Bonn. All rights reserved.
[94d5ac6]5 *
6 *
7 * This file is part of MoleCuilder.
8 *
9 * MoleCuilder is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * MoleCuilder is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with MoleCuilder. If not, see <http://www.gnu.org/licenses/>.
[3f9eba]21 */
22
23/*
24 * RandomNumberGeneratorFactoryUnitTest.cpp
25 *
[c9bc2b7]26 * Created on: Jan 03, 2011
[3f9eba]27 * Author: heber
28 */
29
30// include config.h
31#ifdef HAVE_CONFIG_H
32#include <config.h>
33#endif
34
35#include <cppunit/CompilerOutputter.h>
36#include <cppunit/extensions/TestFactoryRegistry.h>
37#include <cppunit/ui/text/TestRunner.h>
38
39#include "CodePatterns/Assert.hpp"
40
41#include "RandomNumberGeneratorFactoryUnitTest.hpp"
42
[c9bc2b7]43#include "RandomNumbers/RandomNumberGenerator.hpp"
44#include "RandomNumbers/RandomNumberEngineFactory.hpp"
45#include "RandomNumbers/RandomNumberDistributionFactory.hpp"
[3f9eba]46#include "RandomNumbers/RandomNumberGeneratorFactory.hpp"
47
48#include <boost/nondet_random.hpp>
49#include <boost/random.hpp>
50#include <boost/random/additive_combine.hpp>
51#include <boost/random/discard_block.hpp>
52#include <boost/random/inversive_congruential.hpp>
53#include <boost/random/lagged_fibonacci.hpp>
54#include <boost/random/linear_congruential.hpp>
55#include <boost/random/linear_feedback_shift.hpp>
56#include <boost/random/mersenne_twister.hpp>
57#include <boost/random/random_number_generator.hpp>
58#include <boost/random/ranlux.hpp>
59#include <boost/random/shuffle_output.hpp>
60#include <boost/random/subtract_with_carry.hpp>
61#include <boost/random/xor_combine.hpp>
62#include <boost/random/bernoulli_distribution.hpp>
63#include <boost/random/binomial_distribution.hpp>
64#include <boost/random/cauchy_distribution.hpp>
65#include <boost/random/exponential_distribution.hpp>
66#include <boost/random/gamma_distribution.hpp>
67#include <boost/random/geometric_distribution.hpp>
68#include <boost/random/linear_congruential.hpp>
69#include <boost/random/lognormal_distribution.hpp>
70#include <boost/random/normal_distribution.hpp>
71#include <boost/random/poisson_distribution.hpp>
72#include <boost/random/triangle_distribution.hpp>
73#include <boost/random/uniform_01.hpp>
74#include <boost/random/uniform_int.hpp>
75#include <boost/random/uniform_on_sphere.hpp>
76#include <boost/random/uniform_real.hpp>
77#include <boost/random/uniform_smallint.hpp>
78
79#include <typeinfo>
80
81#ifdef HAVE_TESTRUNNER
82#include "UnitTestMain.hpp"
83#endif /*HAVE_TESTRUNNER*/
84
85/********************************************** Test classes **************************************/
86
87// Registers the fixture into the 'registry'
88CPPUNIT_TEST_SUITE_REGISTRATION( RandomNumberGeneratorFactoryTest );
89
90void RandomNumberGeneratorFactoryTest::setUp()
91{
92 RandomNumberGeneratorFactory::getInstance();
93}
94
95void RandomNumberGeneratorFactoryTest::tearDown()
96{
[076a77]97
[c9bc2b7]98 RandomNumberDistributionFactory::purgeInstance();
99 RandomNumberEngineFactory::purgeInstance();
[3f9eba]100 RandomNumberGeneratorFactory::purgeInstance();
101}
102
103void RandomNumberGeneratorFactoryTest::GeneratorTest()
104{
105 // check one of the engines and distributions
[94605f]106 const RandomNumberGenerator& rng =
107 *RandomNumberGeneratorFactory::GeneratorPrototypeTable[RandomNumberEngineFactory::minstd_rand0]
108 [RandomNumberDistributionFactory::uniform_smallint];
[3f9eba]109 CPPUNIT_ASSERT_EQUAL(
110 std::string(typeid(boost::minstd_rand0).name()),
[63839f]111 rng.EngineName()
[3f9eba]112 );
113 CPPUNIT_ASSERT_EQUAL(
114 std::string(typeid(boost::uniform_smallint<> ).name()),
[63839f]115 rng.DistributionName()
[3f9eba]116 );
[9964ff]117
118 // set types in lower factories
119 RandomNumberEngineFactory::getInstance().setCurrentType(RandomNumberEngineFactory::minstd_rand0);
120 RandomNumberDistributionFactory::getInstance().setCurrentType(RandomNumberDistributionFactory::uniform_int);
121 // ... and check whether generator delivers those set types
[63839f]122 RandomNumberGenerator &rng_A = RandomNumberGeneratorFactory::getInstance().
[9964ff]123 makeRandomNumberGenerator();
124 CPPUNIT_ASSERT_EQUAL(
125 std::string(typeid(boost::minstd_rand0).name()),
[63839f]126 rng_A.EngineName()
[9964ff]127 );
128 CPPUNIT_ASSERT_EQUAL(
129 std::string(typeid(boost::uniform_int<> ).name()),
[63839f]130 rng_A.DistributionName()
[9964ff]131 );
[3f9eba]132}
Note: See TracBrowser for help on using the repository browser.