brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · f30edfb Raw
99 lines · cpp
1//===-- PlatformAppleSimulatorTest.cpp ------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "gtest/gtest.h"10 11#include "Plugins/Platform/MacOSX/PlatformAppleSimulator.h"12#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h"13#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h"14#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h"15#include "TestingSupport/SubsystemRAII.h"16#include "lldb/Host/FileSystem.h"17#include "lldb/Host/HostInfo.h"18#include "lldb/Target/Platform.h"19 20using namespace lldb;21using namespace lldb_private;22 23class PlatformAppleSimulatorTest : public ::testing::Test {24  SubsystemRAII<FileSystem, HostInfo, PlatformAppleSimulator, PlatformRemoteiOS,25                PlatformRemoteAppleTV, PlatformRemoteAppleWatch>26      subsystems;27};28 29#ifdef __APPLE__30 31static void testSimPlatformArchHasSimEnvironment(llvm::StringRef name) {32  auto platform_sp = Platform::Create(name);33  ASSERT_TRUE(platform_sp);34  int num_arches = 0;35 36  for (auto arch : platform_sp->GetSupportedArchitectures({})) {37    EXPECT_EQ(arch.GetTriple().getEnvironment(), llvm::Triple::Simulator);38    num_arches++;39  }40 41  EXPECT_GT(num_arches, 0);42}43 44TEST_F(PlatformAppleSimulatorTest, TestSimHasSimEnvionament) {45  testSimPlatformArchHasSimEnvironment("ios-simulator");46  testSimPlatformArchHasSimEnvironment("tvos-simulator");47  testSimPlatformArchHasSimEnvironment("watchos-simulator");48}49 50TEST_F(PlatformAppleSimulatorTest, TestHostPlatformToSim) {51  static const ArchSpec platform_arch(52      HostInfo::GetArchitecture(HostInfo::eArchKindDefault));53 54  const llvm::Triple::OSType sim_platforms[] = {55      llvm::Triple::IOS,56      llvm::Triple::TvOS,57      llvm::Triple::WatchOS,58  };59 60  for (auto sim : sim_platforms) {61    PlatformList list;62    ArchSpec arch = platform_arch;63    arch.GetTriple().setOS(sim);64    arch.GetTriple().setEnvironment(llvm::Triple::Simulator);65 66    auto platform_sp = list.GetOrCreate(arch, {}, nullptr);67    EXPECT_TRUE(platform_sp);68  }69}70 71TEST_F(PlatformAppleSimulatorTest, TestPlatformSelectionOrder) {72  static const ArchSpec platform_arch(73      HostInfo::GetArchitecture(HostInfo::eArchKindDefault));74 75  const llvm::Triple::OSType sim_platforms[] = {76      llvm::Triple::IOS,77      llvm::Triple::TvOS,78      llvm::Triple::WatchOS,79  };80 81  PlatformList list;82  list.GetOrCreate("remote-ios");83  list.GetOrCreate("remote-tvos");84  list.GetOrCreate("remote-watchos");85 86  for (auto sim : sim_platforms) {87    ArchSpec arch = platform_arch;88    arch.GetTriple().setOS(sim);89    arch.GetTriple().setEnvironment(llvm::Triple::Simulator);90 91    Status error;92    auto platform_sp = list.GetOrCreate(arch, {}, nullptr, error);93    EXPECT_TRUE(platform_sp);94    EXPECT_TRUE(platform_sp->GetName().contains("simulator"));95  }96}97 98#endif99