diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-01-10 19:05:13 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-01-10 19:05:13 +0000 |
commit | 0e1ae6ad1100470e5577bbd9b9b30c20c7d31196 (patch) | |
tree | e452b9fbc1877a4bf1f26b2ae70147274fa267d7 | |
parent | 5baf4b4b2e86a2c08d5f27aa9e4ca5fb07453024 (diff) | |
parent | 63560061e8cd4036f1b38d3d15d10543ad6957eb (diff) | |
download | gtk+-0e1ae6ad1100470e5577bbd9b9b30c20c7d31196.tar.gz |
Merge branch 'matthiasc/for-main' into 'main'
Add some more text undo tests
See merge request GNOME/gtk!5410
-rw-r--r-- | testsuite/gtk/textbuffer.c | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/testsuite/gtk/textbuffer.c b/testsuite/gtk/textbuffer.c index 13409314d7..1a81267359 100644 --- a/testsuite/gtk/textbuffer.c +++ b/testsuite/gtk/textbuffer.c @@ -1770,7 +1770,7 @@ test_undo2 (void) g_object_unref (buffer); } -/* Simulate typing, check that words get batched togethe */ +/* Simulate typing, check that words get batched together */ static void test_undo3 (void) { @@ -1820,6 +1820,86 @@ test_undo3 (void) } static void +test_undo4 (void) +{ + GtkTextBuffer *buffer; + int count; + + buffer = gtk_text_buffer_new (NULL); + + gtk_text_buffer_insert_interactive_at_cursor (buffer, "0\n", -1, TRUE); + gtk_text_buffer_insert_interactive_at_cursor (buffer, "1\n", -1, TRUE); + gtk_text_buffer_insert_interactive_at_cursor (buffer, "2\n", -1, TRUE); + gtk_text_buffer_insert_interactive_at_cursor (buffer, "3\n", -1, TRUE); + gtk_text_buffer_insert_interactive_at_cursor (buffer, "4\n", -1, TRUE); + + check_buffer_contents (buffer, "0\n1\n2\n3\n4\n"); + + count = 0; + while (gtk_text_buffer_get_can_undo (buffer)) + { + count++; + gtk_text_buffer_undo (buffer); + } + + g_assert_cmpint (count, ==, 5); + + check_buffer_contents (buffer, ""); + + count = 0; + while (gtk_text_buffer_get_can_redo (buffer)) + { + count++; + gtk_text_buffer_redo (buffer); + } + + g_assert_cmpint (count, ==, 5); + + check_buffer_contents (buffer, "0\n1\n2\n3\n4\n"); + + g_object_unref (buffer); +} + +static void +test_undo5 (void) +{ + GtkTextBuffer *buffer; + int count; + GtkTextIter start, end; + + buffer = gtk_text_buffer_new (NULL); + + gtk_text_buffer_set_text (buffer, "0\n1\n2\n3\n4\n", -1); + + check_buffer_contents (buffer, "0\n1\n2\n3\n4\n"); + + count = 0; + while (TRUE) + { + gtk_text_buffer_get_end_iter (buffer, &end); + start = end; + if (!gtk_text_iter_backward_line (&start)) + break; + count++; + gtk_text_buffer_begin_user_action (buffer); + gtk_text_buffer_delete_interactive (buffer, &start, &end, TRUE); + gtk_text_buffer_end_user_action (buffer); + } + + g_assert_cmpint (count, ==, 5); + + check_buffer_contents (buffer, ""); + + g_assert_true (gtk_text_buffer_get_can_undo (buffer)); + + gtk_text_buffer_undo (buffer); + + check_buffer_contents (buffer, "0\n1\n2\n3\n4\n"); + + g_object_unref (buffer); +} + +static void test_serialize_wrap_mode (void) { GtkTextBuffer *buffer = gtk_text_buffer_new (NULL); @@ -1901,6 +1981,8 @@ main (int argc, char** argv) g_test_add_func ("/TextBuffer/Undo 1", test_undo1); g_test_add_func ("/TextBuffer/Undo 2", test_undo2); g_test_add_func ("/TextBuffer/Undo 3", test_undo3); + g_test_add_func ("/TextBuffer/Undo 4", test_undo4); + g_test_add_func ("/TextBuffer/Undo 5", test_undo5); g_test_add_func ("/TextBuffer/Serialize wrap-mode", test_serialize_wrap_mode); return g_test_run(); |