xref: /llvm-project/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp (revision b9c1b51e45b845debb76d8658edabca70ca56079)
1 //===-- CPlusPlusLanguageTest.cpp -------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "gtest/gtest.h"
11 
12 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
13 
14 using namespace lldb_private;
15 
16 TEST(CPlusPlusLanguage, MethodName) {
17   struct TestCase {
18     std::string input;
19     std::string context, basename, arguments, qualifiers, scope_qualified_name;
20   };
21 
22   TestCase test_cases[] = {
23       {"foo::bar(baz)", "foo", "bar", "(baz)", "", "foo::bar"},
24       {"std::basic_ostream<char, std::char_traits<char> >& "
25        "std::operator<<<std::char_traits<char> >"
26        "(std::basic_ostream<char, std::char_traits<char> >&, char const*)",
27        "std", "operator<<<std::char_traits<char> >",
28        "(std::basic_ostream<char, std::char_traits<char> >&, char const*)", "",
29        "std::operator<<<std::char_traits<char> >"}};
30 
31   for (const auto &test : test_cases) {
32     CPlusPlusLanguage::MethodName method(ConstString(test.input));
33     EXPECT_TRUE(method.IsValid());
34     EXPECT_EQ(test.context, method.GetContext());
35     EXPECT_EQ(test.basename, method.GetBasename());
36     EXPECT_EQ(test.arguments, method.GetArguments());
37     EXPECT_EQ(test.qualifiers, method.GetQualifiers());
38     EXPECT_EQ(test.scope_qualified_name, method.GetScopeQualifiedName());
39   }
40 }
41