|
|
|
@ -28,15 +28,15 @@ int main() { |
|
|
|
auto source_file = tests_path / "tmp" / "source_file.cpp"; |
|
|
|
auto source_file = tests_path / "tmp" / "source_file.cpp"; |
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
Source::View source_view(source_file, Glib::RefPtr<Gsv::Language>()); |
|
|
|
Source::View view(source_file, Glib::RefPtr<Gsv::Language>()); |
|
|
|
source_view.get_buffer()->set_text(hello_world); |
|
|
|
view.get_buffer()->set_text(hello_world); |
|
|
|
g_assert(source_view.save()); |
|
|
|
g_assert(view.save()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Source::View source_view(source_file, Glib::RefPtr<Gsv::Language>()); |
|
|
|
Source::View view(source_file, Glib::RefPtr<Gsv::Language>()); |
|
|
|
g_assert(source_view.get_buffer()->get_text() == hello_world); |
|
|
|
g_assert(view.get_buffer()->get_text() == hello_world); |
|
|
|
source_view.cleanup_whitespace_characters(); |
|
|
|
view.cleanup_whitespace_characters(); |
|
|
|
g_assert(source_view.get_buffer()->get_text() == hello_world_cleaned); |
|
|
|
g_assert(view.get_buffer()->get_text() == hello_world_cleaned); |
|
|
|
|
|
|
|
|
|
|
|
g_assert(boost::filesystem::remove(source_file)); |
|
|
|
g_assert(boost::filesystem::remove(source_file)); |
|
|
|
g_assert(!boost::filesystem::exists(source_file)); |
|
|
|
g_assert(!boost::filesystem::exists(source_file)); |
|
|
|
@ -53,22 +53,22 @@ int main() { |
|
|
|
|
|
|
|
|
|
|
|
// replace_text tests
|
|
|
|
// replace_text tests
|
|
|
|
{ |
|
|
|
{ |
|
|
|
auto buffer = source_view.get_buffer(); |
|
|
|
auto buffer = view.get_buffer(); |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto text = "line 1\nline 2\nline3"; |
|
|
|
auto text = "line 1\nline 2\nline3"; |
|
|
|
buffer->set_text(text); |
|
|
|
buffer->set_text(text); |
|
|
|
buffer->place_cursor(buffer->begin()); |
|
|
|
buffer->place_cursor(buffer->begin()); |
|
|
|
source_view.replace_text(text); |
|
|
|
view.replace_text(text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_insert()->get_iter() == buffer->begin()); |
|
|
|
assert(buffer->get_insert()->get_iter() == buffer->begin()); |
|
|
|
|
|
|
|
|
|
|
|
buffer->place_cursor(buffer->end()); |
|
|
|
buffer->place_cursor(buffer->end()); |
|
|
|
source_view.replace_text(text); |
|
|
|
view.replace_text(text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_insert()->get_iter() == buffer->end()); |
|
|
|
assert(buffer->get_insert()->get_iter() == buffer->end()); |
|
|
|
|
|
|
|
|
|
|
|
source_view.place_cursor_at_line_offset(1, 0); |
|
|
|
view.place_cursor_at_line_offset(1, 0); |
|
|
|
source_view.replace_text(text); |
|
|
|
view.replace_text(text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_text() == text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
@ -77,33 +77,33 @@ int main() { |
|
|
|
auto old_text = "line 1\nline3"; |
|
|
|
auto old_text = "line 1\nline3"; |
|
|
|
auto new_text = "line 1\nline 2\nline3"; |
|
|
|
auto new_text = "line 1\nline 2\nline3"; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.place_cursor_at_line_offset(1, 0); |
|
|
|
view.place_cursor_at_line_offset(1, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
source_view.replace_text(old_text); |
|
|
|
view.replace_text(old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
source_view.place_cursor_at_line_offset(0, 0); |
|
|
|
view.place_cursor_at_line_offset(0, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
source_view.replace_text(old_text); |
|
|
|
view.replace_text(old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
|
|
|
|
|
|
|
|
source_view.place_cursor_at_line_offset(2, 0); |
|
|
|
view.place_cursor_at_line_offset(2, 0); |
|
|
|
source_view.replace_text(old_text); |
|
|
|
view.replace_text(old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
@ -112,10 +112,10 @@ int main() { |
|
|
|
auto old_text = "line 1\nline 3"; |
|
|
|
auto old_text = "line 1\nline 3"; |
|
|
|
auto new_text = ""; |
|
|
|
auto new_text = ""; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
|
|
|
|
|
|
|
|
source_view.replace_text(old_text); |
|
|
|
view.replace_text(old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 1); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 6); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 6); |
|
|
|
@ -124,17 +124,17 @@ int main() { |
|
|
|
auto old_text = ""; |
|
|
|
auto old_text = ""; |
|
|
|
auto new_text = ""; |
|
|
|
auto new_text = ""; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto old_text = "line 1\nline 3\n"; |
|
|
|
auto old_text = "line 1\nline 3\n"; |
|
|
|
auto new_text = ""; |
|
|
|
auto new_text = ""; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
|
|
|
|
|
|
|
|
source_view.replace_text(old_text); |
|
|
|
view.replace_text(old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_text() == old_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
@ -143,15 +143,15 @@ int main() { |
|
|
|
auto old_text = "line 1\n\nline 3\nline 4\n\nline 5\n"; |
|
|
|
auto old_text = "line 1\n\nline 3\nline 4\n\nline 5\n"; |
|
|
|
auto new_text = "line 1\n\nline 33\nline 44\n\nline 5\n"; |
|
|
|
auto new_text = "line 1\n\nline 33\nline 44\n\nline 5\n"; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.place_cursor_at_line_offset(2, 0); |
|
|
|
view.place_cursor_at_line_offset(2, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.place_cursor_at_line_offset(3, 0); |
|
|
|
view.place_cursor_at_line_offset(3, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 3); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 3); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
@ -160,15 +160,15 @@ int main() { |
|
|
|
auto old_text = "line 1\n\nline 3\nline 4\n\nline 5\n"; |
|
|
|
auto old_text = "line 1\n\nline 3\nline 4\n\nline 5\n"; |
|
|
|
auto new_text = "line 1\n\nline 33\nline 44\nline 45\nline 46\n\nline 5\n"; |
|
|
|
auto new_text = "line 1\n\nline 33\nline 44\nline 45\nline 46\n\nline 5\n"; |
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.place_cursor_at_line_offset(2, 0); |
|
|
|
view.place_cursor_at_line_offset(2, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 2); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
|
|
|
|
|
|
|
|
buffer->set_text(old_text); |
|
|
|
buffer->set_text(old_text); |
|
|
|
source_view.place_cursor_at_line_offset(3, 0); |
|
|
|
view.place_cursor_at_line_offset(3, 0); |
|
|
|
source_view.replace_text(new_text); |
|
|
|
view.replace_text(new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_text() == new_text); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 4); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line() == 4); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
assert(buffer->get_insert()->get_iter().get_line_offset() == 0); |
|
|
|
@ -177,187 +177,387 @@ int main() { |
|
|
|
|
|
|
|
|
|
|
|
// extend_selection() tests
|
|
|
|
// extend_selection() tests
|
|
|
|
{ |
|
|
|
{ |
|
|
|
auto buffer = source_view.get_buffer(); |
|
|
|
auto buffer = view.get_buffer(); |
|
|
|
source_view.is_bracket_language = true; |
|
|
|
view.is_bracket_language = true; |
|
|
|
std::string source = "test(1, test(10), \"100\");"; |
|
|
|
std::string source = "test(1, test(10), \"100\");"; |
|
|
|
buffer->set_text(source); |
|
|
|
buffer->set_text(source); |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 0); |
|
|
|
view.place_cursor_at_line_offset(0, 0); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test"); |
|
|
|
assert(view.get_selected_text() == "test"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test(1, test(10), \"100\")"); |
|
|
|
assert(view.get_selected_text() == "test(1, test(10), \"100\")"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 5); |
|
|
|
view.place_cursor_at_line_offset(0, 5); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "1"); |
|
|
|
assert(view.get_selected_text() == "1"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
assert(view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test(1, test(10), \"100\")"); |
|
|
|
assert(view.get_selected_text() == "test(1, test(10), \"100\")"); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 7); |
|
|
|
view.place_cursor_at_line_offset(0, 7); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == " test(10)"); |
|
|
|
assert(view.get_selected_text() == " test(10)"); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 8); |
|
|
|
view.place_cursor_at_line_offset(0, 8); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test"); |
|
|
|
assert(view.get_selected_text() == "test"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test(10)"); |
|
|
|
assert(view.get_selected_text() == "test(10)"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == " test(10)"); |
|
|
|
assert(view.get_selected_text() == " test(10)"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
assert(view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 18); |
|
|
|
view.place_cursor_at_line_offset(0, 18); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == " \"100\""); |
|
|
|
assert(view.get_selected_text() == " \"100\""); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
assert(view.get_selected_text() == "1, test(10), \"100\""); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 26); |
|
|
|
view.place_cursor_at_line_offset(0, 26); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 27); |
|
|
|
view.place_cursor_at_line_offset(0, 27); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
source = "int main() {\n return 1;\n}\n"; |
|
|
|
source = "int main() {\n return 1;\n}\n"; |
|
|
|
buffer->set_text(source); |
|
|
|
buffer->set_text(source); |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 0); |
|
|
|
view.place_cursor_at_line_offset(0, 0); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "int"); |
|
|
|
assert(view.get_selected_text() == "int"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 4); |
|
|
|
view.place_cursor_at_line_offset(0, 4); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "main"); |
|
|
|
assert(view.get_selected_text() == "main"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(4, source.size() - 1 - 4)); |
|
|
|
assert(view.get_selected_text() == source.substr(4, source.size() - 1 - 4)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(1, 2); |
|
|
|
view.place_cursor_at_line_offset(1, 2); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "return"); |
|
|
|
assert(view.get_selected_text() == "return"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "return 1;"); |
|
|
|
assert(view.get_selected_text() == "return 1;"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(12, 13)); |
|
|
|
assert(view.get_selected_text() == source.substr(12, 13)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(4, source.size() - 1 - 4)); |
|
|
|
assert(view.get_selected_text() == source.substr(4, source.size() - 1 - 4)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
source = "test<int, int>(11, 22);"; |
|
|
|
source = "test<int, int>(11, 22);"; |
|
|
|
buffer->set_text(source); |
|
|
|
buffer->set_text(source); |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 0); |
|
|
|
view.place_cursor_at_line_offset(0, 0); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test"); |
|
|
|
assert(view.get_selected_text() == "test"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 5); |
|
|
|
view.place_cursor_at_line_offset(0, 5); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "int"); |
|
|
|
assert(view.get_selected_text() == "int"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(5, 8)); |
|
|
|
assert(view.get_selected_text() == source.substr(5, 8)); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(0, 15); |
|
|
|
view.place_cursor_at_line_offset(0, 15); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "11"); |
|
|
|
assert(view.get_selected_text() == "11"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "11, 22"); |
|
|
|
assert(view.get_selected_text() == "11, 22"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
assert(view.get_selected_text() == source.substr(0, source.size() - 1)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
source = "{\n {\n test;\n }\n}\n"; |
|
|
|
source = "{\n {\n test;\n }\n}\n"; |
|
|
|
buffer->set_text(source); |
|
|
|
buffer->set_text(source); |
|
|
|
{ |
|
|
|
{ |
|
|
|
source_view.place_cursor_at_line_offset(2, 4); |
|
|
|
view.place_cursor_at_line_offset(2, 4); |
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test"); |
|
|
|
assert(view.get_selected_text() == "test"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "test;"); |
|
|
|
assert(view.get_selected_text() == "test;"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "\n test;\n "); |
|
|
|
assert(view.get_selected_text() == "\n test;\n "); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "{\n test;\n }"); |
|
|
|
assert(view.get_selected_text() == "{\n test;\n }"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "\n {\n test;\n }\n"); |
|
|
|
assert(view.get_selected_text() == "\n {\n test;\n }\n"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == "{\n {\n test;\n }\n}"); |
|
|
|
assert(view.get_selected_text() == "{\n {\n test;\n }\n}"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.extend_selection(); |
|
|
|
view.extend_selection(); |
|
|
|
assert(source_view.get_selected_text() == source); |
|
|
|
assert(view.get_selected_text() == source); |
|
|
|
|
|
|
|
|
|
|
|
source_view.shrink_selection(); |
|
|
|
view.shrink_selection(); |
|
|
|
assert(source_view.get_selected_text() == "{\n {\n test;\n }\n}"); |
|
|
|
assert(view.get_selected_text() == "{\n {\n test;\n }\n}"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.shrink_selection(); |
|
|
|
view.shrink_selection(); |
|
|
|
assert(source_view.get_selected_text() == "\n {\n test;\n }\n"); |
|
|
|
assert(view.get_selected_text() == "\n {\n test;\n }\n"); |
|
|
|
|
|
|
|
|
|
|
|
source_view.shrink_selection(); |
|
|
|
view.shrink_selection(); |
|
|
|
assert(source_view.get_selected_text() == "{\n test;\n }"); |
|
|
|
assert(view.get_selected_text() == "{\n test;\n }"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Snippet tests
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
auto buffer = view.get_buffer(); |
|
|
|
|
|
|
|
GdkEventKey event; |
|
|
|
|
|
|
|
event.state = 0; |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${1:content} << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 20); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${1:} << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 13); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << $1 << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 13); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${1:content} << ${1:content} << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content << content << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 20); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << t << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << te << std::endl;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_Escape; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << te << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_s; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << tes << te << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${1:content1} << ${2:content2} << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content1 << content2 << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 21); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << content2 << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << content2 << std::endl;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_Tab; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << content2 << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << t << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${1:content} << $0 << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content << << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 13); |
|
|
|
|
|
|
|
assert(end.get_offset() == 20); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << << std::endl;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_Tab; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << te << t << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text(""); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "std::cout << ${2:content2} << ${1:content1} << std::endl;"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content2 << content1 << std::endl;"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 25); |
|
|
|
|
|
|
|
assert(end.get_offset() == 33); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content2 << t << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content2 << te << std::endl;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_Tab; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << content2 << te << std::endl;"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "std::cout << t << te << std::endl;"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text("test"); |
|
|
|
|
|
|
|
buffer->select_range(buffer->begin(), buffer->end()); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "<$1>${TM_SELECTED_TEXT}</$1>"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<>test</>"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 1); |
|
|
|
|
|
|
|
assert(end.get_offset() == 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<t>test</t>"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<te>test</te>"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text("test test"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
start = buffer->begin(); |
|
|
|
|
|
|
|
end = start; |
|
|
|
|
|
|
|
end.forward_chars(4); |
|
|
|
|
|
|
|
buffer->select_range(start, end); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "<$1>${TM_SELECTED_TEXT:TM_CURRENT_LINE}</$1>"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<>test</> test"); |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 1); |
|
|
|
|
|
|
|
assert(end.get_offset() == 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<t>test</t> test"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<te>test</te> test"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
buffer->set_text("test test"); |
|
|
|
|
|
|
|
view.insert_snippet(buffer->get_insert()->get_iter(), "<$1>${TM_SELECTED_TEXT:TM_CURRENT_LINE}</$1>"); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<>test test</>"); |
|
|
|
|
|
|
|
Gtk::TextIter start, end; |
|
|
|
|
|
|
|
buffer->get_selection_bounds(start, end); |
|
|
|
|
|
|
|
assert(start.get_offset() == 1); |
|
|
|
|
|
|
|
assert(end.get_offset() == 1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event.keyval = GDK_KEY_t; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<t>test test</t>"); |
|
|
|
|
|
|
|
event.keyval = GDK_KEY_e; |
|
|
|
|
|
|
|
view.on_key_press_event(&event); |
|
|
|
|
|
|
|
assert(buffer->get_text() == "<te>test test</te>"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|