#include #include #include "../../../src/utils/RandomGenerator.h" class RandomGeneratorTest: public testing::Test { protected: void generateRandoms(); void checkStats(); private: void checkMinMeanMax(double min, double mean, double max); void minMeanMax(double& min, double& mean, double& max); double stddev(double mean); protected: static const int Num = 10000; protected: RandomGenerator random; double x[Num]; }; TEST_F(RandomGeneratorTest, Stats) { generateRandoms(); checkStats(); } TEST_F(RandomGeneratorTest, getArray) { QByteArray ba = random.getArray(); } void RandomGeneratorTest::generateRandoms() { for(int i = 0; i < Num; i++) x[i] = random.getInRange_11(); } void RandomGeneratorTest::checkStats() { double min; double mean; double max; minMeanMax(min, mean, max); checkMinMeanMax(min, mean, max); ASSERT_GT(stddev(mean), 0.55); } void RandomGeneratorTest::checkMinMeanMax(double min, double mean, double max) { ASSERT_NEAR(-1, min, 0.01); ASSERT_NEAR(0, mean, 0.2); ASSERT_NEAR(1, max, 0.01); } void RandomGeneratorTest::minMeanMax(double& min, double& mean, double& max) { double sum = 0; min = 1000; max = -1000; for(int i = 0; i < Num; i++) { min = fmin(x[i], min); max = fmax(x[i], max); sum += x[i]; } mean = sum / Num; } double RandomGeneratorTest::stddev(double mean) { double varSum = 0; for(int i = 0; i < Num; i++) varSum += pow((mean - x[i]), 2); return sqrt(varSum / Num); }