Scheduler
bernoulliTest.cpp
Go to the documentation of this file.
1 
10 #include <gtest/gtest.h>
12 #include <utils/randomGenerator.h>
13 #include <stdexcept>
14 
15 #define NB_ITER 10000
16 
17 int drawSeveralTimes(int times, double p)
18 {
19 
21  gen = new Utils::RandomGenerator;
22  Utils::Bernoulli bern(gen, p);
23  int successCount = 0;
24  for (int i = 0; i < times; i++)
25  {
26  double result = bern.draw();
27  if (result > 0.5)
28  successCount++;
29  }
30  return successCount;
31 }
32 
33 TEST(BernoulliTest, draw)
34 {
35  double p = 0.7;
36  int successCount = drawSeveralTimes(NB_ITER, p);
37  double effectiveProba = (double) successCount / (double) NB_ITER;
38  EXPECT_GT(effectiveProba, p*0.9);
39  EXPECT_LT(effectiveProba, p*1.1);
40 }
41 
42 
43 TEST(BernoulliTest, zeroSuccessRate)
44 {
45  int successCount = drawSeveralTimes(NB_ITER, 0.0);
46  EXPECT_EQ(0, successCount);
47 }
48 
49 TEST(BernoulliTest, oneSuccessRate)
50 {
51  int successCount = drawSeveralTimes(NB_ITER, 1.0);
52  EXPECT_EQ(0, successCount - NB_ITER);
53 }
54 
55 TEST(BernoulliTest, throwIfBadProba)
56 {
57  ASSERT_THROW(drawSeveralTimes(NB_ITER, -0.5), std::domain_error);
58  ASSERT_THROW(drawSeveralTimes(NB_ITER, 1.5), std::domain_error);
59 }
60 
61 
62 
63 
64 
65 
TEST(BernoulliTest, draw)
int drawSeveralTimes(int times, double p)
#define NB_ITER
double draw() override
returns a number from 0 to 1 following the underlying probability distribution
Definition: bernoulli.cpp:28