summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorGeorg Vienna <georg.vienna@himbarsoft.com>2021-12-03 16:02:48 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-12-03 16:02:48 +0000
commitc517e945de399488b5c7577a25617a62bc2cb92a (patch)
treed6ef3d3db2e028476a36bd154c582efdf7221684 /testsuite
parente3a1a2e0c6b36f29173f44e4ed914b2cc9a13a98 (diff)
downloadgtk+-c517e945de399488b5c7577a25617a62bc2cb92a.tar.gz
textchildanchor: allow to specify replacement character
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/gtk/textbuffer.c71
1 files changed, 71 insertions, 0 deletions
diff --git a/testsuite/gtk/textbuffer.c b/testsuite/gtk/textbuffer.c
index 3ac7643a6a..2dcb0b5fd7 100644
--- a/testsuite/gtk/textbuffer.c
+++ b/testsuite/gtk/textbuffer.c
@@ -1581,6 +1581,75 @@ test_get_iter (void)
g_object_unref (buffer);
}
+static void
+test_iter_with_anchor (void)
+{
+ GtkTextView *text_view;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+ GtkTextChildAnchor *anchor;
+ GtkWidget *child;
+
+ text_view = GTK_TEXT_VIEW (gtk_text_view_new ());
+ buffer = gtk_text_view_get_buffer (text_view);
+
+ gtk_text_buffer_set_text (buffer, "ab\ncd\r\nef", -1);
+ g_assert_true (gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, 0, 1));
+ anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
+ child = gtk_label_new ("text");
+ gtk_text_view_add_child_at_anchor (text_view, child, anchor);
+ g_object_unref (child);
+
+ gtk_text_buffer_get_iter_at_child_anchor (buffer, &iter, anchor);
+ g_assert_cmpint (gtk_text_iter_get_char (&iter), ==, GTK_TEXT_UNKNOWN_CHAR);
+
+ g_assert_true (gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, 1, 1));
+ /* ß takes 2 bytes in UTF-8 */
+ anchor = gtk_text_child_anchor_new_with_replacement ("ß");
+ gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor);
+ child = gtk_label_new ("text");
+ gtk_text_view_add_child_at_anchor (text_view, child, anchor);
+
+ gtk_text_buffer_get_iter_at_child_anchor (buffer, &iter, anchor);
+ g_assert_cmpint (gtk_text_iter_get_char (&iter), ==, 223);
+
+ g_object_unref (child);
+ g_object_ref_sink (text_view);
+}
+
+static void
+test_get_text_with_anchor (void)
+{
+ GtkTextView *text_view;
+ GtkTextBuffer *buffer;
+ GtkTextIter iter, start, end;
+ GtkTextChildAnchor *anchor;
+ GtkWidget *child;
+
+ text_view = GTK_TEXT_VIEW (gtk_text_view_new ());
+ buffer = gtk_text_view_get_buffer (text_view);
+
+ gtk_text_buffer_set_text (buffer, "ab\ncd\r\nef", -1);
+ g_assert_true (gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, 0, 1));
+ anchor = gtk_text_buffer_create_child_anchor (buffer, &iter);
+ child = gtk_label_new ("text");
+ gtk_text_view_add_child_at_anchor (text_view, child, anchor);
+ g_object_unref (child);
+
+ g_assert_true (gtk_text_buffer_get_iter_at_line_offset (buffer, &iter, 1, 1));
+ /* ß takes 2 bytes in UTF-8 */
+ anchor = gtk_text_child_anchor_new_with_replacement ("ß");
+ gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor);
+ child = gtk_label_new ("text");
+ gtk_text_view_add_child_at_anchor (text_view, child, anchor);
+
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ g_assert_cmpstr (gtk_text_buffer_get_text (buffer, &start, &end, FALSE), ==, "ab\ncßd\r\nef");
+
+ g_object_unref (child);
+ g_object_ref_sink (text_view);
+}
+
/* Check that basic undo works */
static void
test_undo0 (void)
@@ -1768,6 +1837,8 @@ main (int argc, char** argv)
g_test_add_func ("/TextBuffer/Tag", test_tag);
g_test_add_func ("/TextBuffer/Clipboard", test_clipboard);
g_test_add_func ("/TextBuffer/Get iter", test_get_iter);
+ g_test_add_func ("/TextBuffer/Iter with anchor", test_iter_with_anchor);
+ g_test_add_func ("/TextBuffer/Get text with anchor", test_get_text_with_anchor);
g_test_add_func ("/TextBuffer/Undo 0", test_undo0);
g_test_add_func ("/TextBuffer/Undo 1", test_undo1);
g_test_add_func ("/TextBuffer/Undo 2", test_undo2);