|  | 
|  | 1 | +//===-- LanguageTest.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-exception | 
|  | 6 | +// | 
|  | 7 | +//===----------------------------------------------------------------------===// | 
|  | 8 | + | 
|  | 9 | +#include "lldb/Target/Language.h" | 
|  | 10 | +#include "lldb/lldb-enumerations.h" | 
|  | 11 | +#include "gtest/gtest.h" | 
|  | 12 | + | 
|  | 13 | +using namespace lldb_private; | 
|  | 14 | +using namespace lldb; | 
|  | 15 | + | 
|  | 16 | +namespace { | 
|  | 17 | +class LanguageTest : public ::testing::Test {}; | 
|  | 18 | +} // namespace | 
|  | 19 | + | 
|  | 20 | +TEST_F(LanguageTest, SourceLanguage_GetDescription) { | 
|  | 21 | +  for (uint32_t i = 1; i < lldb::eNumLanguageTypes; ++i) { | 
|  | 22 | +    // 0x29 is unassigned | 
|  | 23 | +    if (i == 0x29) | 
|  | 24 | +      continue; | 
|  | 25 | + | 
|  | 26 | +    auto lang_type = static_cast<lldb::LanguageType>(i); | 
|  | 27 | +    if (lang_type == lldb::eLanguageTypeLastStandardLanguage) | 
|  | 28 | +      continue; | 
|  | 29 | + | 
|  | 30 | +    SourceLanguage lang(lang_type); | 
|  | 31 | + | 
|  | 32 | +    // eLanguageTypeHIP is not implemented as a DW_LNAME because of a conflict. | 
|  | 33 | +    if (lang_type == lldb::eLanguageTypeHIP) | 
|  | 34 | +      EXPECT_FALSE(lang); | 
|  | 35 | +    else | 
|  | 36 | +      EXPECT_TRUE(lang); | 
|  | 37 | +  } | 
|  | 38 | + | 
|  | 39 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus).GetDescription(), | 
|  | 40 | +            "ISO C++"); | 
|  | 41 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus_17).GetDescription(), | 
|  | 42 | +            "ISO C++"); | 
|  | 43 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus_20).GetDescription(), | 
|  | 44 | +            "ISO C++"); | 
|  | 45 | + | 
|  | 46 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeObjC).GetDescription(), "Objective C"); | 
|  | 47 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeMipsAssembler).GetDescription(), | 
|  | 48 | +            "Assembly"); | 
|  | 49 | + | 
|  | 50 | +  auto next_vendor_language = | 
|  | 51 | +      static_cast<lldb::LanguageType>(eLanguageTypeMipsAssembler + 1); | 
|  | 52 | +  if (next_vendor_language < eNumLanguageTypes) | 
|  | 53 | +    EXPECT_NE(SourceLanguage(next_vendor_language).GetDescription(), "Unknown"); | 
|  | 54 | + | 
|  | 55 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeUnknown).GetDescription(), "Unknown"); | 
|  | 56 | +} | 
|  | 57 | + | 
|  | 58 | +TEST_F(LanguageTest, SourceLanguage_AsLanguageType) { | 
|  | 59 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus).AsLanguageType(), | 
|  | 60 | +            eLanguageTypeC_plus_plus); | 
|  | 61 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus_03).AsLanguageType(), | 
|  | 62 | +            eLanguageTypeC_plus_plus_03); | 
|  | 63 | + | 
|  | 64 | +  // Vendor-specific language code. | 
|  | 65 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeMipsAssembler).AsLanguageType(), | 
|  | 66 | +            eLanguageTypeAssembly); | 
|  | 67 | +  EXPECT_EQ(SourceLanguage(eLanguageTypeUnknown).AsLanguageType(), | 
|  | 68 | +            eLanguageTypeUnknown); | 
|  | 69 | +} | 
0 commit comments