A Discrete-Event Network Simulator
API
one-uniform-random-variable-many-get-value-calls-test-suite.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012 University of Washington
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Mitch Watrous (watrous@u.washington.edu)
18  */
19 
20 #include "ns3/config.h"
21 #include "ns3/double.h"
22 #include "ns3/random-variable-stream.h"
23 #include "ns3/test.h"
24 
25 #include <vector>
26 
35 namespace ns3
36 {
37 
38 namespace tests
39 {
40 
46 {
47  public:
52 
53  private:
54  void DoRun() override;
55 };
56 
59  : TestCase("One Uniform Random Variable with Many GetValue() Calls")
60 {
61 }
62 
65 {
66 }
67 
68 void
70 {
71  const double min = 0.0;
72  const double max = 10.0;
73 
74  Config::SetDefault("ns3::UniformRandomVariable::Min", DoubleValue(min));
75  Config::SetDefault("ns3::UniformRandomVariable::Max", DoubleValue(max));
76 
77  Ptr<UniformRandomVariable> uniform = CreateObject<UniformRandomVariable>();
78 
79  // Get many values from 1 random number generator.
80  double value;
81  const int count = 100000000;
82  for (int i = 0; i < count; i++)
83  {
84  value = uniform->GetValue();
85 
86  NS_TEST_ASSERT_MSG_GT(value, min, "Value less than minimum.");
87  NS_TEST_ASSERT_MSG_LT(value, max, "Value greater than maximum.");
88  }
89 }
90 
96 {
97  public:
100 };
101 
104  : TestSuite("one-uniform-random-variable-many-get-value-calls", PERFORMANCE)
105 {
107 }
108 
115 
116 } // namespace tests
117 
118 } // namespace ns3
#define min(a, b)
Definition: 80211b.c:41
#define max(a, b)
Definition: 80211b.c:42
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:42
encapsulates test code
Definition: test.h:1060
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:301
A suite of tests to run.
Definition: test.h:1256
double GetValue(double min, double max)
Get the next random value drawn from the distribution.
Test case for one uniform distribution random variable stream generator.
Test suite for one uniform distribution random variable stream generator.
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:890
#define NS_TEST_ASSERT_MSG_LT(actual, limit, msg)
Test that an actual value is less than a limit and report and abort if not.
Definition: test.h:709
#define NS_TEST_ASSERT_MSG_GT(actual, limit, msg)
Test that an actual value is greater than a limit and report and abort if not.
Definition: test.h:874
static OneUniformRandomVariableManyGetValueCallsTestSuite g_oneUniformRandomVariableManyGetValueCallsTestSuite
OneUniformRandomVariableManyGetValueCallsTestSuite instance variable.
Every class exported by the ns3 library is enclosed in the ns3 namespace.