|
10 | 10 | // |
11 | 11 | //===----------------------------------------------------------------------===// |
12 | 12 |
|
| 13 | +#include "TestContext.h" |
13 | 14 | #include "swift/AST/AvailabilityDomain.h" |
14 | 15 | #include "gtest/gtest.h" |
15 | 16 |
|
16 | 17 | using namespace swift; |
| 18 | +using namespace swift::unittest; |
17 | 19 |
|
18 | 20 | class AvailabilityDomainLattice : public ::testing::Test { |
19 | 21 | public: |
@@ -127,3 +129,47 @@ TEST_F(AvailabilityDomainLattice, Contains) { |
127 | 129 | EXPECT_FALSE(visionOSAppExt.contains(macOS)); |
128 | 130 | EXPECT_FALSE(visionOSAppExt.contains(macOSAppExt)); |
129 | 131 | } |
| 132 | + |
| 133 | +TEST_F(AvailabilityDomainLattice, ABICompatibilityDomain) { |
| 134 | + EXPECT_EQ(Universal.getABICompatibilityDomain(), Universal); |
| 135 | + EXPECT_EQ(Swift.getABICompatibilityDomain(), Swift); |
| 136 | + EXPECT_EQ(Package.getABICompatibilityDomain(), Package); |
| 137 | + EXPECT_EQ(Embedded.getABICompatibilityDomain(), Embedded); |
| 138 | + EXPECT_EQ(macOS.getABICompatibilityDomain(), macOS); |
| 139 | + EXPECT_EQ(macOSAppExt.getABICompatibilityDomain(), macOS); |
| 140 | + EXPECT_EQ(iOS.getABICompatibilityDomain(), iOS); |
| 141 | + EXPECT_EQ(iOSAppExt.getABICompatibilityDomain(), iOS); |
| 142 | + EXPECT_EQ(macCatalyst.getABICompatibilityDomain(), iOS); |
| 143 | + EXPECT_EQ(macCatalystAppExt.getABICompatibilityDomain(), iOS); |
| 144 | + EXPECT_EQ(visionOS.getABICompatibilityDomain(), iOS); |
| 145 | + EXPECT_EQ(visionOSAppExt.getABICompatibilityDomain(), iOS); |
| 146 | +} |
| 147 | + |
| 148 | +TEST(AvailabilityDomain, TargetPlatform) { |
| 149 | + using namespace llvm; |
| 150 | + |
| 151 | + struct TargetToPlatformKind { |
| 152 | + Triple target; |
| 153 | + PlatformKind platformKind; |
| 154 | + }; |
| 155 | + TargetToPlatformKind tests[] = { |
| 156 | + {Triple("x86_64", "apple", "macosx10.15"), PlatformKind::macOS}, |
| 157 | + {Triple("arm64", "apple", "ios13"), PlatformKind::iOS}, |
| 158 | + {Triple("arm64_32", "apple", "watchos8"), PlatformKind::watchOS}, |
| 159 | + {Triple("x86_64", "apple", "ios14", "macabi"), PlatformKind::macCatalyst}, |
| 160 | + {Triple("x86_64", "unknown", "windows", "msvc"), PlatformKind::none}, |
| 161 | + {Triple("x86_64", "unknown", "linux", "gnu"), PlatformKind::none}, |
| 162 | + }; |
| 163 | + |
| 164 | + for (TargetToPlatformKind test : tests) { |
| 165 | + TestContext context{test.target}; |
| 166 | + auto domain = AvailabilityDomain::forTargetPlatform(context.Ctx); |
| 167 | + if (test.platformKind != PlatformKind::none) { |
| 168 | + EXPECT_TRUE(domain); |
| 169 | + if (domain) |
| 170 | + EXPECT_TRUE(domain->getPlatformKind() == test.platformKind); |
| 171 | + } else { |
| 172 | + EXPECT_FALSE(domain); |
| 173 | + } |
| 174 | + } |
| 175 | +} |
0 commit comments