Added interface to check library version during runtime
authorMaksim Shabunin <maksim.shabunin@gmail.com>
Fri, 6 Apr 2018 10:13:53 +0000 (13:13 +0300)
committerMaksim Shabunin <maksim.shabunin@gmail.com>
Mon, 9 Apr 2018 09:30:39 +0000 (12:30 +0300)
modules/core/include/opencv2/core/utility.hpp
modules/core/misc/java/src/java/core+Core.jcode.in
modules/core/misc/java/test/CoreTest.java
modules/core/src/system.cpp
modules/core/test/test_misc.cpp

index d7211d0..8ee82b8 100644 (file)
@@ -247,6 +247,23 @@ architecture.
  */
 CV_EXPORTS_W const String& getBuildInformation();
 
+/** @brief Returns library version string
+
+For example "3.4.1-dev".
+
+@sa getMajorVersion, getMinorVersion, getRevisionVersion
+*/
+CV_EXPORTS_W String getVersionString();
+
+/** @brief Returns major library version */
+CV_EXPORTS_W int getVersionMajor();
+
+/** @brief Returns minor library version */
+CV_EXPORTS_W int getVersionMinor();
+
+/** @brief Returns revision field of the library version */
+CV_EXPORTS_W int getVersionRevision();
+
 /** @brief Returns the number of ticks.
 
 The function returns the number of ticks after the certain event (for example, when the machine was
index 1a0fe21..f002d0f 100644 (file)
@@ -1,14 +1,14 @@
     // these constants are wrapped inside functions to prevent inlining
     private static String getVersion() { return "@OPENCV_VERSION@"; }
     private static String getNativeLibraryName() { return "opencv_java@OPENCV_VERSION_MAJOR@@OPENCV_VERSION_MINOR@@OPENCV_VERSION_PATCH@"; }
-    private static int getVersionMajor() { return @OPENCV_VERSION_MAJOR@; }
-    private static int getVersionMinor() { return @OPENCV_VERSION_MINOR@; }
-    private static int getVersionRevision() { return @OPENCV_VERSION_PATCH@; }
-    private static String getVersionStatus() { return "@OPENCV_VERSION_STATUS@"; }
+    private static int getVersionMajorJ() { return @OPENCV_VERSION_MAJOR@; }
+    private static int getVersionMinorJ() { return @OPENCV_VERSION_MINOR@; }
+    private static int getVersionRevisionJ() { return @OPENCV_VERSION_PATCH@; }
+    private static String getVersionStatusJ() { return "@OPENCV_VERSION_STATUS@"; }
 
     public static final String VERSION = getVersion();
     public static final String NATIVE_LIBRARY_NAME = getNativeLibraryName();
-    public static final int VERSION_MAJOR = getVersionMajor();
-    public static final int VERSION_MINOR = getVersionMinor();
-    public static final int VERSION_REVISION = getVersionRevision();
-    public static final String VERSION_STATUS = getVersionStatus();
+    public static final int VERSION_MAJOR = getVersionMajorJ();
+    public static final int VERSION_MINOR = getVersionMinorJ();
+    public static final int VERSION_REVISION = getVersionRevisionJ();
+    public static final String VERSION_STATUS = getVersionStatusJ();
index 549bcd8..c608fb2 100644 (file)
@@ -2048,4 +2048,11 @@ public class CoreTest extends OpenCVTestCase {
         assertEquals(5f, val2);
     }
 
+    public void testVersion() {
+        assertEquals(Core.VERSION_MAJOR, Core.getVersionMajor());
+        assertEquals(Core.VERSION_MINOR, Core.getVersionMinor());
+        assertEquals(Core.VERSION_REVISION, Core.getVersionRevision());
+        assertEquals(Core.VERSION, Core.getVersionString());
+    }
+
 }
index e0113c5..b53f7c9 100644 (file)
@@ -745,6 +745,14 @@ const String& getBuildInformation()
     return build_info;
 }
 
+String getVersionString() { return String(CV_VERSION); }
+
+int getVersionMajor() { return CV_VERSION_MAJOR; }
+
+int getVersionMinor() { return CV_VERSION_MINOR; }
+
+int getVersionRevision() { return CV_VERSION_REVISION; }
+
 String format( const char* fmt, ... )
 {
     AutoBuffer<char, 1024> buf;
index 3f62ed1..0f083bd 100644 (file)
@@ -189,4 +189,14 @@ TEST(Core_Parallel, propagate_exceptions)
     }, cv::Exception);
 }
 
+TEST(Core_Version, consistency)
+{
+    // this test verifies that OpenCV version loaded in runtime
+    //   is the same this test has been built with
+    EXPECT_EQ(CV_VERSION_MAJOR, cv::getVersionMajor());
+    EXPECT_EQ(CV_VERSION_MINOR, cv::getVersionMinor());
+    EXPECT_EQ(CV_VERSION_REVISION, cv::getVersionRevision());
+    EXPECT_EQ(String(CV_VERSION), cv::getVersionString());
+}
+
 }} // namespace