From d2cff38db62c2dcaef2424e2cebf7bce3d9e6d84 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Fri, 6 Apr 2018 13:13:53 +0300 Subject: [PATCH] Added interface to check library version during runtime --- modules/core/include/opencv2/core/utility.hpp | 17 +++++++++++++++++ modules/core/misc/java/src/java/core+Core.jcode.in | 16 ++++++++-------- modules/core/misc/java/test/CoreTest.java | 7 +++++++ modules/core/src/system.cpp | 8 ++++++++ modules/core/test/test_misc.cpp | 10 ++++++++++ 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index d7211d0..8ee82b8 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -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 diff --git a/modules/core/misc/java/src/java/core+Core.jcode.in b/modules/core/misc/java/src/java/core+Core.jcode.in index 1a0fe21..f002d0f 100644 --- a/modules/core/misc/java/src/java/core+Core.jcode.in +++ b/modules/core/misc/java/src/java/core+Core.jcode.in @@ -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(); diff --git a/modules/core/misc/java/test/CoreTest.java b/modules/core/misc/java/test/CoreTest.java index 549bcd8..c608fb2 100644 --- a/modules/core/misc/java/test/CoreTest.java +++ b/modules/core/misc/java/test/CoreTest.java @@ -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()); + } + } diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index e0113c5..b53f7c9 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -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 buf; diff --git a/modules/core/test/test_misc.cpp b/modules/core/test/test_misc.cpp index 3f62ed1..0f083bd 100644 --- a/modules/core/test/test_misc.cpp +++ b/modules/core/test/test_misc.cpp @@ -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 -- 2.7.4