summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-01-10 19:05:13 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-01-10 19:05:13 +0000
commit0e1ae6ad1100470e5577bbd9b9b30c20c7d31196 (patch)
treee452b9fbc1877a4bf1f26b2ae70147274fa267d7
parent5baf4b4b2e86a2c08d5f27aa9e4ca5fb07453024 (diff)
parent63560061e8cd4036f1b38d3d15d10543ad6957eb (diff)
downloadgtk+-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.c84
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();