\r
string abspath(const string& relpath)\r
{\r
- return TestSystem::instance()->workingDir() + relpath;\r
+ return TestSystem::instance().workingDir() + relpath;\r
}\r
\r
\r
const char* err_msg, const char* /*file_name*/,\r
int /*line*/, void* /*userdata*/)\r
{\r
- TestSystem::instance()->printError(err_msg);\r
+ TestSystem::instance().printError(err_msg);\r
return 0;\r
}\r
\r
}\r
else\r
{\r
- TestSystem::instance()->setWorkingDir(argv[1]);\r
+ TestSystem::instance().setWorkingDir(argv[1]);\r
}\r
\r
redirectError(cvErrorCallback);\r
- TestSystem::instance()->run();\r
+ TestSystem::instance().run();\r
\r
return 0;\r
}
\ No newline at end of file
class TestSystem\r
{\r
public:\r
- static TestSystem* instance()\r
+ static TestSystem& instance()\r
{\r
static TestSystem me;\r
- return &me;\r
+ return me;\r
}\r
\r
void addInit(Runnable* init) { inits_.push_back(init); }\r
\r
\r
#define INIT(name) \\r
- struct name##_init: Runnable \\r
- { \\r
+ struct name##_init: Runnable { \\r
name##_init(): Runnable(#name) { \\r
- TestSystem::instance()->addInit(this); \\r
+ TestSystem::instance().addInit(this); \\r
} \\r
void run(); \\r
} name##_init_instance; \\r
\r
\r
#define TEST(name) \\r
- struct name##_test: Runnable \\r
- { \\r
+ struct name##_test: Runnable { \\r
name##_test(): Runnable(#name) { \\r
- TestSystem::instance()->addTest(this); \\r
+ TestSystem::instance().addTest(this); \\r
} \\r
void run(); \\r
} name##_test_instance; \\r
void name##_test::run()\r
\r
-#define SUBTEST TestSystem::instance()->subtest()\r
-#define DESCRIPTION TestSystem::instance()->subtest()\r
-#define CPU_ON TestSystem::instance()->cpuOn()\r
-#define GPU_ON TestSystem::instance()->gpuOn()\r
-#define CPU_OFF TestSystem::instance()->cpuOff()\r
-#define GPU_OFF TestSystem::instance()->gpuOff()\r
+#define SUBTEST TestSystem::instance().subtest()\r
+#define DESCRIPTION TestSystem::instance().subtest()\r
+#define CPU_ON TestSystem::instance().cpuOn()\r
+#define GPU_ON TestSystem::instance().gpuOn()\r
+#define CPU_OFF TestSystem::instance().cpuOff()\r
+#define GPU_OFF TestSystem::instance().gpuOff()\r
\r
void gen(cv::Mat& mat, int rows, int cols, int type, cv::Scalar low, \r
cv::Scalar high);\r
GPU_ON;\r
d_matcher.radiusMatch(d_query, d_train, d_matches, max_distance);\r
GPU_OFF;\r
+}\r
+\r
+\r
+TEST(magnitude)\r
+{\r
+ Mat x, y, mag;\r
+ gpu::GpuMat d_x, d_y, d_mag;\r
+\r
+ for (int size = 2000; size <= 4000; size += 1000)\r
+ {\r
+ SUBTEST << "size " << size;\r
+\r
+ gen(x, size, size, CV_32F, 0, 1);\r
+ gen(y, size, size, CV_32F, 0, 1);\r
+ mag.create(size, size, CV_32F);\r
+\r
+ CPU_ON;\r
+ magnitude(x, y, mag);\r
+ CPU_OFF;\r
+\r
+ d_x = x;\r
+ d_y = y;\r
+ d_mag.create(size, size, CV_32F);\r
+\r
+ GPU_ON;\r
+ gpu::magnitude(d_x, d_y, d_mag);\r
+ GPU_OFF;\r
+ }\r
+}\r
+\r
+\r
+TEST(add)\r
+{\r
+ Mat src1, src2, dst;\r
+ gpu::GpuMat d_src1, d_src2, d_dst;\r
+\r
+ for (int size = 2000; size <= 4000; size += 1000)\r
+ {\r
+ SUBTEST << "size " << size << ", 32F";\r
+\r
+ gen(src1, size, size, CV_32F, 0, 1);\r
+ gen(src2, size, size, CV_32F, 0, 1);\r
+ dst.create(size, size, CV_32F);\r
+\r
+ CPU_ON;\r
+ add(src1, src2, dst);\r
+ CPU_OFF;\r
+\r
+ d_src1 = src1;\r
+ d_src2 = src2;\r
+ d_dst.create(size, size, CV_32F);\r
+\r
+ GPU_ON;\r
+ gpu::add(d_src1, d_src2, d_dst);\r
+ GPU_OFF;\r
+ }\r
+}\r
+\r
+\r
+TEST(log)\r
+{\r
+ Mat src, dst;\r
+ gpu::GpuMat d_src, d_dst;\r
+\r
+ for (int size = 2000; size <= 4000; size += 1000)\r
+ {\r
+ SUBTEST << "size " << size << ", 32F";\r
+\r
+ gen(src, size, size, CV_32F, 1, 10);\r
+ dst.create(size, size, CV_32F);\r
+\r
+ CPU_ON;\r
+ log(src, dst);\r
+ CPU_OFF;\r
+\r
+ d_src = src;\r
+ d_dst.create(size, size, CV_32F);\r
+\r
+ GPU_ON;\r
+ gpu::log(d_src, d_dst);\r
+ GPU_OFF;\r
+ }\r
+}\r
+\r
+\r
+TEST(exp)\r
+{\r
+ Mat src, dst;\r
+ gpu::GpuMat d_src, d_dst;\r
+\r
+ for (int size = 2000; size <= 4000; size += 1000)\r
+ {\r
+ SUBTEST << "size " << size << ", 32F";\r
+\r
+ gen(src, size, size, CV_32F, 0, 1);\r
+ dst.create(size, size, CV_32F);\r
+\r
+ CPU_ON;\r
+ exp(src, dst);\r
+ CPU_OFF;\r
+\r
+ d_src = src;\r
+ d_dst.create(size, size, CV_32F);\r
+\r
+ GPU_ON;\r
+ gpu::exp(d_src, d_dst);\r
+ GPU_OFF;\r
+ }\r
}
\ No newline at end of file