| //===-- 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<FileSystem, HostInfo> 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")); | |
| } |