1 #include "clangmm.hpp" 2 #include <cassert> 3 #include <regex> 4 #include <string> 5 main()6int 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