Browse Source

Added tests for Source->Implement Method

merge-requests/365/head
eidheim 8 years ago
parent
commit
6ea5e6876b
  1. 2
      src/source_clang.cc
  2. 70
      tests/source_clang_test.cc

2
src/source_clang.cc

@ -1449,7 +1449,7 @@ Source::ClangViewRefactor::ClangViewRefactor(const boost::filesystem::path &file
auto argument_type=argument_cursor.get_type().get_spelling();
for(auto it=semantic_parents.rbegin();it!=semantic_parents.rend();++it) {
size_t pos=argument_type.find(*it);
if(pos==0)
if(pos==0 || (pos!=std::string::npos && argument_type[pos-1]==' '))
argument_type.erase(pos, it->size());
}
auto argument=argument_cursor.get_spelling();

70
tests/source_clang_test.cc

@ -131,6 +131,76 @@ int main() {
g_assert_cmpstr(old_source.c_str(),==,source.c_str());
}
// Test Implement method
{
clang_view->get_buffer()->set_text(R"(#include <string>
#include <vector>
#include <map>
namespace N {
class T {
void f1();
void f1(T &t);
void f1(const T &t);
void f1(std::vector<T> ts);
void f1(const std::vector<T> &ts);
std::string f2();
const std::string &f3();
std::vector<T> f4();
std::vector<T*> f5();
std::vector<T&> f6();
std::map<T, std::string> f7();
static
std::map<T,
std::string
> f8();
};
}
)");
while(!clang_view->parsed)
flush_events();
g_assert_cmpuint(clang_view->clang_diagnostics.size(), ==, 0);
auto buffer=clang_view->get_buffer();
buffer->place_cursor(buffer->get_iter_at_line_offset(6, 9));
auto method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "void N::T::f1() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(7, 9));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "void N::T::f1(T &t) {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(8, 9));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "void N::T::f1(const T &t) {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(9, 9));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "void N::T::f1(std::vector<T> ts) {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(10, 9));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "void N::T::f1(const std::vector<T> &ts) {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(11, 16));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::string N::T::f2() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(12, 23));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "const std::string &N::T::f3() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(13, 19));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::vector<N::T> N::T::f4() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(14, 20));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::vector<N::T *> N::T::f5() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(15, 20));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::vector<N::T &> N::T::f6() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(16, 29));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::map<N::T, std::string> N::T::f7() {}");
buffer->place_cursor(buffer->get_iter_at_line_offset(20, 6));
method=clang_view->get_method();
g_assert_cmpstr(method.c_str(), ==, "std::map<N::T, std::string> N::T::f8() {}");
}
clang_view->async_delete();
clang_view->delete_thread.join();
flush_events();

Loading…
Cancel
Save