| //===- unittests/Basic/DarwinSDKInfoTest.cpp -- SDKSettings.json test -----===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "clang/Basic/DarwinSDKInfo.h" |
| #include "llvm/Support/JSON.h" |
| #include "gtest/gtest.h" |
| |
| using namespace llvm; |
| using namespace clang; |
| |
| TEST(DarwinSDKInfoTest, ParseAndTestMapping) { |
| llvm::json::Object Obj; |
| Obj["Version"] = "11.0"; |
| Obj["MaximumDeploymentTarget"] = "11.99"; |
| llvm::json::Object VersionMap; |
| VersionMap["10.15"] = "13.1"; |
| VersionMap["11.0"] = "14.0"; |
| VersionMap["11.2"] = "14.2"; |
| llvm::json::Object MacOS2iOSMac; |
| MacOS2iOSMac["macOS_iOSMac"] = std::move(VersionMap); |
| Obj["VersionMap"] = std::move(MacOS2iOSMac); |
| |
| auto SDKInfo = DarwinSDKInfo::parseDarwinSDKSettingsJSON(&Obj); |
| ASSERT_TRUE(SDKInfo); |
| EXPECT_EQ(SDKInfo->getVersion(), VersionTuple(11, 0)); |
| |
| auto Mapping = SDKInfo->getVersionMapping( |
| DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair()); |
| ASSERT_TRUE(Mapping); |
| // Verify that the macOS versions that are present in the map are translated |
| // directly to their corresponding Mac Catalyst versions. |
| EXPECT_EQ(*Mapping->map(VersionTuple(10, 15), VersionTuple(), None), |
| VersionTuple(13, 1)); |
| EXPECT_EQ(*Mapping->map(VersionTuple(11, 0), VersionTuple(), None), |
| VersionTuple(14, 0)); |
| EXPECT_EQ(*Mapping->map(VersionTuple(11, 2), VersionTuple(), None), |
| VersionTuple(14, 2)); |
| |
| // Verify that a macOS version that's not present in the map is translated |
| // like the nearest major OS version. |
| EXPECT_EQ(*Mapping->map(VersionTuple(11, 1), VersionTuple(), None), |
| VersionTuple(14, 0)); |
| |
| // Verify that the macOS versions that are outside of the mapped version |
| // range map to the min/max values passed to the `map` call. |
| EXPECT_EQ(*Mapping->map(VersionTuple(10, 14), VersionTuple(99, 99), None), |
| VersionTuple(99, 99)); |
| EXPECT_EQ( |
| *Mapping->map(VersionTuple(11, 5), VersionTuple(), VersionTuple(99, 99)), |
| VersionTuple(99, 99)); |
| EXPECT_EQ(*Mapping->map(VersionTuple(11, 5), VersionTuple(99, 98), |
| VersionTuple(99, 99)), |
| VersionTuple(99, 99)); |
| } |
| |
| TEST(DarwinSDKInfoTest, MissingKeys) { |
| llvm::json::Object Obj; |
| ASSERT_FALSE(DarwinSDKInfo::parseDarwinSDKSettingsJSON(&Obj)); |
| Obj["Version"] = "11.0"; |
| ASSERT_FALSE(DarwinSDKInfo::parseDarwinSDKSettingsJSON(&Obj)); |
| } |