mirror of https://gitlab.com/cppit/jucipp
2 changed files with 462 additions and 0 deletions
@ -0,0 +1,457 @@
|
||||
#include "source.h" |
||||
#include <glib.h> |
||||
|
||||
//Requires display server to work
|
||||
//However, it is possible to use the Broadway backend if the test is run in a pure terminal environment:
|
||||
//broadwayd&
|
||||
//make test
|
||||
|
||||
int main() { |
||||
auto app = Gtk::Application::create(); |
||||
Gsv::init(); |
||||
|
||||
auto tests_path = boost::filesystem::canonical(JUCI_TESTS_PATH); |
||||
auto source_file = tests_path / "tmp" / "source_file.cpp"; |
||||
|
||||
auto language_manager = Gsv::LanguageManager::get_default(); |
||||
GdkEventKey event; |
||||
event.state=0; |
||||
|
||||
{ |
||||
Source::View view(source_file, language_manager->get_language("cpp")); |
||||
view.set_tab_char_and_size(' ', 2); |
||||
event.keyval = GDK_KEY_Return; |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" int main() {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main() {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" int main() { "); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main() {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" int main() {\n" |
||||
" }"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(4); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main() {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" int main()\n" |
||||
" {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main()\n" |
||||
" {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 2); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" int main()\n" |
||||
" {\n" |
||||
" }"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(4); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main()\n" |
||||
" {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 2); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" if(true &&\n" |
||||
" false"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true &&\n" |
||||
" false\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true &&\n" |
||||
" false)"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true &&\n" |
||||
" false)\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true &&\n" |
||||
" false)\n" |
||||
" ;"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true &&\n" |
||||
" false)\n" |
||||
" ;\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true &&\n" |
||||
" false)\n" |
||||
" cout << endl <<\n" |
||||
" << endl <<"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true &&\n" |
||||
" false)\n" |
||||
" cout << endl <<\n" |
||||
" << endl <<\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true &&\n" |
||||
" false)\n" |
||||
" cout << endl <<\n" |
||||
" << endl;"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true &&\n" |
||||
" false)\n" |
||||
" cout << endl <<\n" |
||||
" << endl;\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" func(["); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {},"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {},\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]() -> std::vector<std::vector<int>> {},"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]() -> std::vector<std::vector<int>> {},\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]() -> std::vector<std::vector<int>> {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]() -> std::vector<std::vector<int>> {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {)"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_char(); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {\n" |
||||
" \n" |
||||
" })"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]->std::vector<std::vector<int>>{)"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_char(); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]->std::vector<std::vector<int>>{\n" |
||||
" \n" |
||||
" })"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {\n" |
||||
" })"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(5); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {\n" |
||||
" \n" |
||||
" })"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]()->std::vector<std::vector<int>> {\n" |
||||
" })"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(5); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]()->std::vector<std::vector<int>> {\n" |
||||
" \n" |
||||
" })"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]->bool{return true;\n" |
||||
" });"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(18); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]->bool{\n" |
||||
" return true;\n" |
||||
" });"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {}, [] {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {}, [] {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]()->bool {}, []()->bool {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]()->bool {}, []()->bool {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {}, [] {},"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {}, [] {},\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]()->bool {}, []()->bool {},"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]()->bool {}, []()->bool {},\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {}, [] {}"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {}, [] {}\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]->bool {}, []->bool {}"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]->bool {}, []->bool {}\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {}, [] {}) {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {}, [] {}) {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]->bool {}, []->bool {}) {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]->bool {}, []->bool {}) {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([] {\n" |
||||
" \n" |
||||
" }, [] {\n" |
||||
" \n" |
||||
" }, {);"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(2); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([] {\n" |
||||
" \n" |
||||
" }, [] {\n" |
||||
" \n" |
||||
" }, {\n" |
||||
" \n" |
||||
" });"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 5); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" func([]() -> std::vector<std::vector<int>> {\n" |
||||
" return std::vector<std::vector<int>>();\n" |
||||
" }, []() -> std::vector<std::vector<int>> {\n" |
||||
" return std::vector<std::vector<int>>();\n" |
||||
" }, {);"); |
||||
auto iter = view.get_buffer()->get_insert()->get_iter(); |
||||
iter.backward_chars(2); |
||||
view.get_buffer()->place_cursor(iter); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " func([]() -> std::vector<std::vector<int>> {\n" |
||||
" return std::vector<std::vector<int>>();\n" |
||||
" }, []() -> std::vector<std::vector<int>> {\n" |
||||
" return std::vector<std::vector<int>>();\n" |
||||
" }, {\n" |
||||
" \n" |
||||
" });"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 5); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" auto func=[] {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " auto func=[] {\n" |
||||
" \n" |
||||
" };"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 1); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" void Class::Class()\n" |
||||
" : var(1) {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " void Class::Class()\n" |
||||
" : var(1) {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 2); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" void Class::Class() :\n" |
||||
" var(1) {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " void Class::Class() :\n" |
||||
" var(1) {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 2); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" void Class::Class(int a,\n" |
||||
" int b) {"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " void Class::Class(int a,\n" |
||||
" int b) {\n" |
||||
" \n" |
||||
" }"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line() == 2); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter().get_line_offset() == 4); |
||||
} |
||||
|
||||
{ |
||||
view.get_buffer()->set_text(" class Class : BaseClass {\n" |
||||
" public:"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " class Class : BaseClass {\n" |
||||
" public:\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" class Class : BaseClass {\n" |
||||
" public:"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " class Class : BaseClass {\n" |
||||
" public:\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" class Class : BaseClass {\n" |
||||
" int a;\n" |
||||
" public:"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " class Class : BaseClass {\n" |
||||
" int a;\n" |
||||
" public:\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" class Class : BaseClass {\n" |
||||
" int a;\n" |
||||
" public:"); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " class Class : BaseClass {\n" |
||||
" int a;\n" |
||||
" public:\n" |
||||
" "); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
|
||||
event.keyval = GDK_KEY_braceleft; |
||||
{ |
||||
view.get_buffer()->set_text(" int main()\n" |
||||
" "); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " int main()\n" |
||||
" {"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true)\n" |
||||
" "); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true)\n" |
||||
" {"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
{ |
||||
view.get_buffer()->set_text(" if(true)\n" |
||||
" "); |
||||
view.on_key_press_event(&event); |
||||
g_assert(view.get_buffer()->get_text() == " if(true)\n" |
||||
" {"); |
||||
g_assert(view.get_buffer()->get_insert()->get_iter() == view.get_buffer()->end()); |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue