Commit 03bcfe41 authored by Alexander Alekhin's avatar Alexander Alekhin

test: fix RNG problem in accuracy tests

parent 2fded5d8
...@@ -539,11 +539,13 @@ protected: ...@@ -539,11 +539,13 @@ protected:
} }
}; };
extern uint64 param_seed;
struct CV_EXPORTS DefaultRngAuto struct CV_EXPORTS DefaultRngAuto
{ {
const uint64 old_state; const uint64 old_state;
DefaultRngAuto() : old_state(cv::theRNG().state) { cv::theRNG().state = (uint64)-1; } DefaultRngAuto() : old_state(cv::theRNG().state) { cv::theRNG().state = cvtest::param_seed; }
~DefaultRngAuto() { cv::theRNG().state = old_state; } ~DefaultRngAuto() { cv::theRNG().state = old_state; }
DefaultRngAuto& operator=(const DefaultRngAuto&); DefaultRngAuto& operator=(const DefaultRngAuto&);
......
...@@ -12,7 +12,9 @@ namespace cvtest { ...@@ -12,7 +12,9 @@ namespace cvtest {
void checkIppStatus(); void checkIppStatus();
} }
#define CV_TEST_INIT cv::ipp::setIppStatus(0); #define CV_TEST_INIT \
cv::ipp::setIppStatus(0); \
cv::theRNG().state = cvtest::param_seed;
#define CV_TEST_CLEANUP ::cvtest::checkIppStatus(); #define CV_TEST_CLEANUP ::cvtest::checkIppStatus();
#define CV_TEST_BODY_IMPL \ #define CV_TEST_BODY_IMPL \
{ \ { \
......
...@@ -80,6 +80,8 @@ ...@@ -80,6 +80,8 @@
namespace cvtest namespace cvtest
{ {
uint64 param_seed = 0x12345678; // real value is passed via parseCustomOptions function
static std::string path_join(const std::string& prefix, const std::string& subpath) static std::string path_join(const std::string& prefix, const std::string& subpath)
{ {
CV_Assert(subpath.empty() || subpath[0] != '/'); CV_Assert(subpath.empty() || subpath[0] != '/');
...@@ -695,6 +697,7 @@ void parseCustomOptions(int argc, char **argv) ...@@ -695,6 +697,7 @@ void parseCustomOptions(int argc, char **argv)
{ {
const char * const command_line_keys = const char * const command_line_keys =
"{ ipp test_ipp_check |false |check whether IPP works without failures }" "{ ipp test_ipp_check |false |check whether IPP works without failures }"
"{ test_seed |809564 |seed for random numbers generator }"
"{ h help |false |print help info }"; "{ h help |false |print help info }";
cv::CommandLineParser parser(argc, argv, command_line_keys); cv::CommandLineParser parser(argc, argv, command_line_keys);
...@@ -711,6 +714,8 @@ void parseCustomOptions(int argc, char **argv) ...@@ -711,6 +714,8 @@ void parseCustomOptions(int argc, char **argv)
#else #else
test_ipp_check = false; test_ipp_check = false;
#endif #endif
param_seed = parser.get<unsigned int>("test_seed");
} }
......
...@@ -38,7 +38,6 @@ static double param_max_outliers; ...@@ -38,7 +38,6 @@ static double param_max_outliers;
static double param_max_deviation; static double param_max_deviation;
static unsigned int param_min_samples; static unsigned int param_min_samples;
static unsigned int param_force_samples; static unsigned int param_force_samples;
static uint64 param_seed;
static double param_time_limit; static double param_time_limit;
static int param_threads; static int param_threads;
static bool param_write_sanity; static bool param_write_sanity;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment