#include "source.h" #include //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> {},"); view.on_key_press_event(&event); g_assert(view.get_buffer()->get_text() == " func([]() -> std::vector> {},\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> {"); view.on_key_press_event(&event); g_assert(view.get_buffer()->get_text() == " func([]() -> std::vector> {\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>{)"); 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>{\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> {\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> {\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> {\n" " return std::vector>();\n" " }, []() -> std::vector> {\n" " return std::vector>();\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> {\n" " return std::vector>();\n" " }, []() -> std::vector> {\n" " return std::vector>();\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()); } } }