aboutsummaryrefslogtreecommitdiff
path: root/src/version_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/version_test.cc')
-rw-r--r--src/version_test.cc66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/version_test.cc b/src/version_test.cc
new file mode 100644
index 0000000..aaa5e1c
--- /dev/null
+++ b/src/version_test.cc
@@ -0,0 +1,66 @@
+// Copyright 2021 The libgav1 Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/gav1/version.h"
+
+#include <regex> // NOLINT (unapproved c++11 header)
+
+#include "gtest/gtest.h"
+
+namespace libgav1 {
+namespace {
+
+TEST(VersionTest, GetVersion) {
+ const int library_version = GetVersion();
+ EXPECT_EQ((library_version >> 24) & 0xff, 0);
+ // Note if we link against a shared object there's potential for a mismatch
+ // if a different library is loaded at runtime.
+ EXPECT_EQ((library_version >> 16) & 0xff, LIBGAV1_MAJOR_VERSION);
+ EXPECT_EQ((library_version >> 8) & 0xff, LIBGAV1_MINOR_VERSION);
+ EXPECT_EQ(library_version & 0xff, LIBGAV1_PATCH_VERSION);
+
+ const int header_version = LIBGAV1_VERSION;
+ EXPECT_EQ((header_version >> 24) & 0xff, 0);
+ EXPECT_EQ((header_version >> 16) & 0xff, LIBGAV1_MAJOR_VERSION);
+ EXPECT_EQ((header_version >> 8) & 0xff, LIBGAV1_MINOR_VERSION);
+ EXPECT_EQ(header_version & 0xff, LIBGAV1_PATCH_VERSION);
+}
+
+TEST(VersionTest, GetVersionString) {
+ const char* version = GetVersionString();
+ ASSERT_NE(version, nullptr);
+ // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
+ const std::regex semver_regex(
+ R"(^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))"
+ R"((?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))"
+ R"((?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?)"
+ R"((?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$)");
+
+ EXPECT_TRUE(std::regex_match(version, semver_regex)) << version;
+ // Regex validation:
+ // It shouldn't accept a version starting with a non-digit.
+ version = "v1.2.3";
+ EXPECT_FALSE(std::regex_match(version, semver_regex)) << version;
+ // It shouldn't accept a version with spaces."
+ version = "1.2.3 alpha";
+ EXPECT_FALSE(std::regex_match(version, semver_regex)) << version;
+}
+
+TEST(VersionTest, GetBuildConfiguration) {
+ const char* config = GetBuildConfiguration();
+ ASSERT_NE(config, nullptr);
+}
+
+} // namespace
+} // namespace libgav1