// 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 // 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