//===-- TestTypeSystem.cpp -------------------------------------------===// // // 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 "TestingSupport/SubsystemRAII.h" #include "lldb/Core/Module.h" #include "lldb/Host/FileSystem.h" #include "lldb/Host/HostInfo.h" #include "lldb/Symbol/TypeSystem.h" #include "gtest/gtest.h" using namespace lldb; using namespace lldb_private; class TestTypeSystemMap : public testing::Test { public: SubsystemRAII subsystems; }; TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithInvalidModule) { // GetTypeSystemForLanguage called with an invalid Module. TypeSystemMap map; Module module{ModuleSpec()}; EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, &module, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, &module, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, &module, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, &module, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); } TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithNoModule) { // GetTypeSystemForLanguage called with no Module. TypeSystemMap map; Module *module = nullptr; EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, module, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, module, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, module, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, module, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); } TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithNoTarget) { // GetTypeSystemForLanguage called with no Target. TypeSystemMap map; Target *target = nullptr; EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, target, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeUnknown, target, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, target, /*can_create=*/true), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); EXPECT_THAT_EXPECTED( map.GetTypeSystemForLanguage(eLanguageTypeC, target, /*can_create=*/false), llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); }