1538b7ba2SMartin Storsjö //===- unittests/Driver/GCCVersionTest.cpp --- GCCVersion parser tests ----===// 2538b7ba2SMartin Storsjö // 3538b7ba2SMartin Storsjö // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4538b7ba2SMartin Storsjö // See https://llvm.org/LICENSE.txt for license information. 5538b7ba2SMartin Storsjö // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6538b7ba2SMartin Storsjö // 7538b7ba2SMartin Storsjö //===----------------------------------------------------------------------===// 8538b7ba2SMartin Storsjö // 9538b7ba2SMartin Storsjö // Unit tests for Generic_GCC::GCCVersion 10538b7ba2SMartin Storsjö // 11538b7ba2SMartin Storsjö //===----------------------------------------------------------------------===// 12538b7ba2SMartin Storsjö 13538b7ba2SMartin Storsjö #include "../../lib/Driver/ToolChains/Gnu.h" 14*b8d6885fSDaniil Fukalov #include "llvm/Config/llvm-config.h" // for LLVM_BUILD_LLVM_DYLIB, LLVM_BUILD_SHARED_LIBS 15538b7ba2SMartin Storsjö #include "gtest/gtest.h" 16538b7ba2SMartin Storsjö 17538b7ba2SMartin Storsjö // The Generic_GCC class is hidden in dylib/shared library builds, so 18538b7ba2SMartin Storsjö // this test can only be built if neither of those configurations are 19538b7ba2SMartin Storsjö // enabled. 20538b7ba2SMartin Storsjö #if !defined(LLVM_BUILD_LLVM_DYLIB) && !defined(LLVM_BUILD_SHARED_LIBS) 21538b7ba2SMartin Storsjö 22538b7ba2SMartin Storsjö using namespace clang; 23538b7ba2SMartin Storsjö using namespace clang::driver; 24538b7ba2SMartin Storsjö 25538b7ba2SMartin Storsjö namespace { 26538b7ba2SMartin Storsjö 27538b7ba2SMartin Storsjö struct VersionParseTest { 28538b7ba2SMartin Storsjö std::string Text; 29538b7ba2SMartin Storsjö 30538b7ba2SMartin Storsjö int Major, Minor, Patch; 31538b7ba2SMartin Storsjö std::string MajorStr, MinorStr, PatchSuffix; 32538b7ba2SMartin Storsjö }; 33538b7ba2SMartin Storsjö 34538b7ba2SMartin Storsjö const VersionParseTest TestCases[] = { 35538b7ba2SMartin Storsjö {"5", 5, -1, -1, "5", "", ""}, 36538b7ba2SMartin Storsjö {"4.4", 4, 4, -1, "4", "4", ""}, 37538b7ba2SMartin Storsjö {"4.4-patched", 4, 4, -1, "4", "4", "-patched"}, 38538b7ba2SMartin Storsjö {"4.4.0", 4, 4, 0, "4", "4", ""}, 39538b7ba2SMartin Storsjö {"4.4.x", 4, 4, -1, "4", "4", ""}, 40538b7ba2SMartin Storsjö {"4.4.2-rc4", 4, 4, 2, "4", "4", "-rc4"}, 41538b7ba2SMartin Storsjö {"4.4.x-patched", 4, 4, -1, "4", "4", ""}, 42538b7ba2SMartin Storsjö {"not-a-version", -1, -1, -1, "", "", ""}, 4305dcfa44SMartin Storsjö {"10-win32", 10, -1, -1, "10", "", "-win32"}, 44538b7ba2SMartin Storsjö }; 45538b7ba2SMartin Storsjö 46538b7ba2SMartin Storsjö TEST(GCCVersionTest, Parse) { 47538b7ba2SMartin Storsjö for (const auto &TC : TestCases) { 48538b7ba2SMartin Storsjö auto V = toolchains::Generic_GCC::GCCVersion::Parse(TC.Text); 49538b7ba2SMartin Storsjö EXPECT_EQ(V.Text, TC.Text); 50538b7ba2SMartin Storsjö EXPECT_EQ(V.Major, TC.Major); 51538b7ba2SMartin Storsjö EXPECT_EQ(V.Minor, TC.Minor); 52538b7ba2SMartin Storsjö EXPECT_EQ(V.Patch, TC.Patch); 53538b7ba2SMartin Storsjö EXPECT_EQ(V.MajorStr, TC.MajorStr); 54538b7ba2SMartin Storsjö EXPECT_EQ(V.MinorStr, TC.MinorStr); 55538b7ba2SMartin Storsjö EXPECT_EQ(V.PatchSuffix, TC.PatchSuffix); 56538b7ba2SMartin Storsjö } 57538b7ba2SMartin Storsjö } 58538b7ba2SMartin Storsjö 59538b7ba2SMartin Storsjö } // end anonymous namespace 60538b7ba2SMartin Storsjö 61538b7ba2SMartin Storsjö #endif 62