1 #include "clangmm.hpp"
2 #include <cassert>
3 #include <regex>
4 #include <string>
5 
main()6 int main() {
7   {
8     clangmm::CompletionChunk str("(", clangmm::CompletionChunk_LeftBrace);
9 
10     assert(str.text == "(");
11     assert(str.kind == clangmm::CompletionChunk_LeftBrace);
12   }
13 
14   {
15     std::string tests_path = LIBCLANGMM_TESTS_PATH;
16     std::string path(tests_path + "/case/main.cpp");
17 
18     std::vector<std::string> arguments;
19     auto clang_version_string = clangmm::to_string(clang_getClangVersion());
20     const static std::regex clang_version_regex("^[A-Za-z ]+([0-9.]+).*$");
21     std::smatch sm;
22     if(std::regex_match(clang_version_string, sm, clang_version_regex)) {
23       auto clang_version = sm[1].str();
24       arguments.emplace_back("-I/usr/lib/clang/" + clang_version + "/include");
25       arguments.emplace_back("-I/usr/lib64/clang/" + clang_version + "/include"); // For Fedora
26     }
27 
28     auto index = std::make_shared<clangmm::Index>(0, 0);
29     clangmm::TranslationUnit tu(index, path, arguments);
30 
31     std::string buffer = "#include <string>\n"
32                          "int main(int argc, char *argv[]) {\n"
33                          "std::string str;\n"
34                          "str.\n"
35                          "return 0\n"
36                          "}";
37 
38     tu.reparse(buffer);
39     auto results = tu.get_code_completions(buffer, 4, 5);
40 
41     auto str = results.get(0);
42 
43     assert(str.get_num_chunks() > 0);
44     assert(str.get_chunks().size() > 0);
45   }
46 }
47