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 {
18     struct TestCase {
19         std::string input;
20         std::string context, basename, arguments, qualifiers, scope_qualified_name;
21     };
22 
23     TestCase test_cases[] = {{"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     {
33         CPlusPlusLanguage::MethodName method(ConstString(test.input));
34         EXPECT_TRUE(method.IsValid());
35         EXPECT_EQ(test.context, method.GetContext());
36         EXPECT_EQ(test.basename, method.GetBasename());
37         EXPECT_EQ(test.arguments, method.GetArguments());
38         EXPECT_EQ(test.qualifiers, method.GetQualifiers());
39         EXPECT_EQ(test.scope_qualified_name, method.GetScopeQualifiedName());
40     }
41 }
42