Move convert_indent into CodeEdit

This commit is contained in:
Paulb23
2023-05-01 21:41:50 +01:00
parent 64eeb04d2c
commit 0b3fba45c6
12 changed files with 282 additions and 153 deletions

View File

@ -2314,6 +2314,143 @@ TEST_CASE("[SceneTree][CodeEdit] indent") {
}
}
SUBCASE("[CodeEdit] convert indent to tabs") {
code_edit->set_indent_size(4);
code_edit->set_indent_using_spaces(false);
// Only line.
code_edit->insert_text_at_caret(" test");
code_edit->set_caret_line(0);
code_edit->set_caret_column(8);
code_edit->select(0, 8, 0, 9);
code_edit->convert_indent();
CHECK(code_edit->get_line(0) == "\t\ttest");
CHECK(code_edit->get_caret_column() == 2);
CHECK(code_edit->get_selection_from_column() == 2);
CHECK(code_edit->get_selection_to_column() == 3);
// First line.
code_edit->set_text("");
code_edit->insert_text_at_caret(" test\n");
code_edit->set_caret_line(0);
code_edit->set_caret_column(8);
code_edit->select(0, 8, 0, 9);
code_edit->convert_indent();
CHECK(code_edit->get_line(0) == "\t\ttest");
CHECK(code_edit->get_caret_column() == 2);
CHECK(code_edit->get_selection_from_column() == 2);
CHECK(code_edit->get_selection_to_column() == 3);
// Middle line.
code_edit->set_text("");
code_edit->insert_text_at_caret("\n test\n");
code_edit->set_caret_line(1);
code_edit->set_caret_column(8);
code_edit->select(1, 8, 1, 9);
code_edit->convert_indent();
CHECK(code_edit->get_line(1) == "\t\ttest");
CHECK(code_edit->get_caret_column() == 2);
CHECK(code_edit->get_selection_from_column() == 2);
CHECK(code_edit->get_selection_to_column() == 3);
// End line.
code_edit->set_text("");
code_edit->insert_text_at_caret("\n test");
code_edit->set_caret_line(1);
code_edit->set_caret_column(8);
code_edit->select(1, 8, 1, 9);
code_edit->convert_indent();
CHECK(code_edit->get_line(1) == "\t\ttest");
CHECK(code_edit->get_caret_column() == 2);
CHECK(code_edit->get_selection_from_column() == 2);
CHECK(code_edit->get_selection_to_column() == 3);
// Within provided range.
code_edit->set_text("");
code_edit->insert_text_at_caret(" test\n test\n");
code_edit->set_caret_line(1);
code_edit->set_caret_column(8);
code_edit->select(1, 8, 1, 9);
code_edit->convert_indent(1, 1);
CHECK(code_edit->get_line(0) == " test");
CHECK(code_edit->get_line(1) == "\t\ttest");
CHECK(code_edit->get_caret_column() == 2);
CHECK(code_edit->get_selection_from_column() == 2);
CHECK(code_edit->get_selection_to_column() == 3);
}
SUBCASE("[CodeEdit] convert indent to spaces") {
code_edit->set_indent_size(4);
code_edit->set_indent_using_spaces(true);
// Only line.
code_edit->insert_text_at_caret("\t\ttest");
code_edit->set_caret_line(0);
code_edit->set_caret_column(2);
code_edit->select(0, 2, 0, 3);
code_edit->convert_indent();
CHECK(code_edit->get_line(0) == " test");
CHECK(code_edit->get_caret_column() == 8);
CHECK(code_edit->get_selection_from_column() == 8);
CHECK(code_edit->get_selection_to_column() == 9);
// First line.
code_edit->set_text("");
code_edit->insert_text_at_caret("\t\ttest\n");
code_edit->set_caret_line(0);
code_edit->set_caret_column(2);
code_edit->select(0, 2, 0, 3);
code_edit->convert_indent();
CHECK(code_edit->get_line(0) == " test");
CHECK(code_edit->get_caret_column() == 8);
CHECK(code_edit->get_selection_from_column() == 8);
CHECK(code_edit->get_selection_to_column() == 9);
// Middle line.
code_edit->set_text("");
code_edit->insert_text_at_caret("\n\t\ttest\n");
code_edit->set_caret_line(1);
code_edit->set_caret_column(2);
code_edit->select(1, 2, 1, 3);
code_edit->convert_indent();
CHECK(code_edit->get_line(1) == " test");
CHECK(code_edit->get_caret_column() == 8);
CHECK(code_edit->get_selection_from_column() == 8);
CHECK(code_edit->get_selection_to_column() == 9);
// End line.
code_edit->set_text("");
code_edit->insert_text_at_caret("\n\t\ttest");
code_edit->set_caret_line(1);
code_edit->set_caret_column(2);
code_edit->select(1, 2, 1, 3);
code_edit->convert_indent();
CHECK(code_edit->get_line(1) == " test");
CHECK(code_edit->get_caret_column() == 8);
CHECK(code_edit->get_selection_from_column() == 8);
CHECK(code_edit->get_selection_to_column() == 9);
// Within provided range.
code_edit->set_text("");
code_edit->insert_text_at_caret("\ttest\n\t\ttest\n");
code_edit->set_caret_line(1);
code_edit->set_caret_column(2);
code_edit->select(1, 2, 1, 3);
code_edit->convert_indent(1, 1);
CHECK(code_edit->get_line(0) == "\ttest");
CHECK(code_edit->get_line(1) == " test");
CHECK(code_edit->get_caret_column() == 8);
CHECK(code_edit->get_selection_from_column() == 8);
CHECK(code_edit->get_selection_to_column() == 9);
// Outside of range.
ERR_PRINT_OFF;
code_edit->convert_indent(0, 4);
code_edit->convert_indent(4, 5);
code_edit->convert_indent(4, 1);
ERR_PRINT_ON;
}
memdelete(code_edit);
}