refactor CV_CUDA_TEST_MAIN, use CV_TEST_MAIN for it
authorVladislav Vinogradov <vlad.vinogradov@itseez.com>
Tue, 23 Dec 2014 14:43:14 +0000 (17:43 +0300)
committerVladislav Vinogradov <vlad.vinogradov@itseez.com>
Tue, 23 Dec 2014 14:43:14 +0000 (17:43 +0300)
use CV_CUDA_TEST_MAIN for opencv_test_core to initialize CUDA
device information

modules/core/test/test_main.cpp
modules/ts/include/opencv2/ts.hpp
modules/ts/include/opencv2/ts/cuda_test.hpp
modules/ts/src/cuda_test.cpp

index d5400e2..5ddfb72 100644 (file)
@@ -7,4 +7,14 @@
 
 #include "test_precomp.hpp"
 
+#ifndef HAVE_CUDA
+
 CV_TEST_MAIN("cv")
+
+#else
+
+#include "opencv2/ts/cuda_test.hpp"
+
+CV_CUDA_TEST_MAIN("cv")
+
+#endif
index 209cb29..c1b68a0 100644 (file)
@@ -569,10 +569,10 @@ void parseCustomOptions(int argc, char **argv);
 #define CV_TEST_MAIN(resourcesubdir, ...) \
 int main(int argc, char **argv) \
 { \
+    __CV_TEST_EXEC_ARGS(__VA_ARGS__) \
     cvtest::TS::ptr()->init(resourcesubdir); \
     ::testing::InitGoogleTest(&argc, argv); \
     cvtest::printVersionInfo(); \
-    __CV_TEST_EXEC_ARGS(__VA_ARGS__) \
     TEST_DUMP_OCL_INFO \
     parseCustomOptions(argc, argv); \
     return RUN_ALL_TESTS(); \
index 049021b..b225ab1 100644 (file)
@@ -340,6 +340,7 @@ namespace cvtest
     CV_EXPORTS void dumpImage(const std::string& fileName, const cv::Mat& image);
     CV_EXPORTS void showDiff(cv::InputArray gold, cv::InputArray actual, double eps);
 
+    CV_EXPORTS void parseCudaDeviceOptions(int argc, char **argv);
     CV_EXPORTS void printCudaInfo();
 }
 
@@ -351,53 +352,7 @@ namespace cv { namespace cuda
 #ifdef HAVE_CUDA
 
 #define CV_CUDA_TEST_MAIN(resourcesubdir) \
-    int main(int argc, char* argv[]) \
-    { \
-        try \
-        { \
-            cv::CommandLineParser cmd(argc, argv, \
-                "{ h help ?            |      | Print help}" \
-                "{ i info              |      | Print information about system and exit }" \
-                "{ device              | -1   | Device on which tests will be executed (-1 means all devices) }" \
-            ); \
-            if (cmd.has("help")) \
-            { \
-                cmd.printMessage(); \
-                return 0; \
-            } \
-            cvtest::printCudaInfo(); \
-            if (cmd.has("info")) \
-            { \
-                return 0; \
-            } \
-            int device = cmd.get<int>("device"); \
-            if (device < 0) \
-            { \
-                cvtest::DeviceManager::instance().loadAll(); \
-                std::cout << "Run tests on all supported devices \n" << std::endl; \
-            } \
-            else \
-            { \
-                cvtest::DeviceManager::instance().load(device); \
-                cv::cuda::DeviceInfo info(device); \
-                std::cout << "Run tests on device " << device << " [" << info.name() << "] \n" << std::endl; \
-            } \
-            cvtest::TS::ptr()->init( resourcesubdir ); \
-            testing::InitGoogleTest(&argc, argv); \
-            return RUN_ALL_TESTS(); \
-        } \
-        catch (const std::exception& e) \
-        { \
-            std::cerr << e.what() << std::endl; \
-            return -1; \
-        } \
-        catch (...) \
-        { \
-            std::cerr << "Unknown error" << std::endl; \
-            return -1; \
-        } \
-        return 0; \
-    }
+    CV_TEST_MAIN(resourcesubdir, cvtest::parseCudaDeviceOptions(argc, argv), cvtest::printCudaInfo())
 
 #else // HAVE_CUDA
 
index 7552be8..a48e0a0 100644 (file)
@@ -190,6 +190,33 @@ namespace cvtest
         }
     }
 
+    void parseCudaDeviceOptions(int argc, char **argv)
+    {
+        cv::CommandLineParser cmd(argc, argv,
+            "{ cuda_device | -1    | CUDA device on which tests will be executed (-1 means all devices) }"
+            "{ h help      | false | Print help info                                                    }"
+        );
+
+        if (cmd.has("help"))
+        {
+            std::cout << "\nAvailable options besides google test option: \n";
+            cmd.printMessage();
+        }
+
+        int device = cmd.get<int>("cuda_device");
+        if (device < 0)
+        {
+            cvtest::DeviceManager::instance().loadAll();
+            std::cout << "Run tests on all supported CUDA devices \n" << std::endl;
+        }
+        else
+        {
+            cvtest::DeviceManager::instance().load(device);
+            cv::cuda::DeviceInfo info(device);
+            std::cout << "Run tests on CUDA device " << device << " [" << info.name() << "] \n" << std::endl;
+        }
+    }
+
     //////////////////////////////////////////////////////////////////////
     // Additional assertion